My favorites | Sign in
Project Logo
                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
from django.db import models
from django.utils.translation import ugettext_lazy as _
import datetime

class Entry(models.Model):
"""A friendfeed entry"""
ff_id = models.CharField(_('ff_id'), blank=True, max_length=100)
user = models.ForeignKey('User')
title = models.CharField(_('title'), blank=True, max_length=255)
link = models.URLField(_('link'), blank=True, verify_exists=False, max_length=500)
published = models.DateTimeField(_('published'), blank=True, default=datetime.datetime.now)
updated = models.DateTimeField(_('updated'), blank=True, default=datetime.datetime.now)
hidden = models.BooleanField(_('hidden'), default=False)
anonymous = models.BooleanField(_('anonymous'), default=False)
service = models.ForeignKey('Service')
via = models.CharField(_('via'), blank=True, max_length=100)

@property
def num_comments(self):
return self.comment_set.all().count()

@property
def num_likes(self):
return self.like_set.all().count()

@property
def num_media(self):
return self.media_set.all().count()

class Admin:
list_display = ('ff_id', 'title', 'user', 'service', 'published', 'num_comments', 'num_likes', 'num_media')
search_fields = ('title',)
list_filter = ('service', 'published')

class Meta:
verbose_name = _('entry')
verbose_name_plural = _('entries')
ordering = ['-published',]
get_latest_by = 'published'

def __unicode__(self):
return u"%s" % (self.title)

class User(models.Model):
"""A friendfeed user"""
ff_id = models.CharField(_('ff_id'), blank=True, max_length=100)
name = models.CharField(_('name'), blank=True, max_length=255)
nickname = models.CharField(_('nickname'), blank=True, max_length=255)
profileURL = models.URLField(_('profileURL'), blank=True, verify_exists=False)

class Admin:
list_display = ('name','nickname', 'id')
search_fields = ('name', 'nickname')

class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')

def __unicode__(self):
return u"%s" % (self.name,)

class Service(models.Model):
"""A friendfeed service"""
ff_id = models.CharField(_('ff_id'), blank=True, max_length=100)
name = models.CharField(_('name'), blank=True, max_length=100)
iconURL = models.URLField(_('iconURL'), blank=True, verify_exists=False)
profileURL = models.URLField(_('profileURL'), blank=True, verify_exists=False)

class Admin:
list_display = ('name', 'ff_id')
search_fields = ('name', 'ff_id',)

class Meta:
verbose_name = _('service')
verbose_name_plural = _('services')

def __unicode__(self):
return u"%s" % (self.name)

## Comment
class Comment(models.Model):
"""A friendfeed comment"""
ff_id = models.CharField(_('ff_id'), blank=True, max_length=100)
entry = models.ForeignKey(Entry, edit_inline=models.STACKED, num_extra_on_change=0)
date = models.DateTimeField(_('date'), blank=True, default=datetime.datetime.now)
user = models.ForeignKey(User)
body = models.TextField(_('body'), blank=True, core=True)

class Meta:
verbose_name = _('comment')
verbose_name_plural = _('comments')

def __unicode__(self):
return u"%s" % (self.body)

## Media
class Media(models.Model):
"""A friendfeed media"""
entry = models.ForeignKey(Entry, edit_inline=models.TABULAR, num_extra_on_change=0)
title = models.CharField(_('title'), blank=True, max_length=255, null=True, core=True)
player = models.CharField(_('player'), blank=True, null=True, max_length=255)

class Admin:
list_display = ('title', 'player')
search_fields = ('title', 'player')

class Meta:
verbose_name = _('media')
verbose_name_plural = _('media')
ordering = ['-id',]

def __unicode__(self):
return u"%s" % (self.title,)

## Content
class MediaContent(models.Model):
"""A friendfeed media contents"""
media = models.ForeignKey(Media, edit_inline=models.STACKED, num_extra_on_change=0)
url = models.URLField(_('url'), blank=True, verify_exists=False, core=True)
type = models.CharField(_('type'), blank=True, null=True, max_length=100)
width = models.IntegerField(_('width'), blank=True, null=True)
height = models.IntegerField(_('height'), blank=True, null=True)

class Meta:
verbose_name = _('mediacontent')
verbose_name_plural = _('mediacontent')

def __unicode__(self):
return u"%s" % (self.url,)

## Thumbnail
class MediaThumbnail(models.Model):
"""Thumbnails for a bit of Media"""
media = models.ForeignKey(Media, edit_inline=models.STACKED, num_extra_on_change=0)
url = models.URLField(_('url'), blank=True, verify_exists=False, core=True)
width = models.IntegerField(_('width'), blank=True, null=True)
height = models.IntegerField(_('height'), blank=True, null=True)

class Meta:
verbose_name = _('mediathumbnail')
verbose_name_plural = _('medialthumbnails')

def __unicode__(self):
return u"%s" % (self.url,)

## Like
class Like(models.Model):
"""A friendfeed like"""
entry = models.ForeignKey(Entry, edit_inline=models.STACKED, num_extra_on_change=0)
date = models.DateTimeField(_('date'), blank=True, default=datetime.datetime.now)
user = models.ForeignKey(User, core=True)

class Meta:
verbose_name = _('like')
verbose_name_plural = _('likes')

def __unicode__(self):
return u"%s likes %s" % (self.user, self.entry)
Show details Hide details

Change log

r19 by clintecker on Jul 20, 2008   Diff
* Typo in the ordering clause
Go to: 
Project members, sign in to write a code review

Older revisions

r18 by clintecker on Jul 20, 2008   Diff
* Fixing a small error that might crop
up if an object doesn't have any media
items
* Added the FriendFeed ID to the list
display
r14 by clintecker on Jul 15, 2008   Diff
* Updating with new friendly tags
r4 by clintecker on Jul 13, 2008   Diff
* Made models more compatible with
FriendFeed data
* Added a list filter to the admin
page for Entries
* Refactored the 'feed' management
...
All revisions of this file

File info

Size: 5900 bytes, 158 lines
Hosted by Google Code