Created basic working client UI using ExtJS.
[~jspiros/reader.git] / models.py
1 from django.db import models
2 from django.contrib.auth.models import User
3
4
5 class Feed(models.Model):
6         url = models.URLField()
7         title = models.CharField(max_length=255)
8         link = models.URLField(blank=True, null=True)
9         updated = models.DateTimeField()
10         etag = models.CharField(max_length=255, blank=True, null=True)
11         modified = models.DateTimeField(blank=True, null=True)
12         alive = models.BooleanField(default=True)
13         
14         def __unicode__(self):
15                 return u'%s <%s>' % (self.title, self.url)
16
17
18 class Entry(models.Model):
19         feed = models.ForeignKey(Feed, related_name='entries')
20         uri = models.CharField(max_length=255)
21         title = models.CharField(max_length=255)
22         link = models.URLField(blank=True, null=True)
23         published = models.DateTimeField()
24         updated = models.DateTimeField()
25         summary = models.TextField(blank=True, null=True)
26         content = models.TextField(blank=True, null=True)
27         
28         class Meta:
29                 verbose_name_plural = 'entries'
30                 ordering = ['-published']
31         
32         def __unicode__(self):
33                 return u'%s <%s>' % (self.title, self.feed)
34
35
36 class Subscription(models.Model):
37         user = models.ForeignKey(User, related_name='reader_subscriptions')
38         feed = models.ForeignKey(Feed, related_name='subscriptions')
39         custom_title = models.CharField(max_length=255, blank=True, null=True)
40         
41         @property
42         def title(self):
43                 return self.custom_title if self.custom_title else self.feed.title
44         
45         def __unicode__(self):
46                 return u'%s <%s>' % (self.user, self.feed)
47
48
49 class UserEntry(models.Model):
50         user = models.ForeignKey(User, related_name='reader_userentries')
51         entry = models.ForeignKey(Entry, related_name='userentries')
52         read = models.BooleanField(default=False)
53         
54         class Meta:
55                 verbose_name = 'user entry relationship'
56                 verbose_name_plural = 'user entry relationships'
57         
58         def __unicode__(self):
59                 return u'%s <%s>' % (self.user, self.entry)