from django.db import models class Category(models.Model): #id name = models.CharField(max_length=50); def __unicode__(self): return self.name def serializable(self): return {'id': self.id, 'name': self.name } class Pic(models.Model): #id set = models.ForeignKey('feeds.PicSet', null=True,blank=True) title = models.CharField(max_length=128, blank=False) thumbnail_url = models.URLField(blank=True) thumbnail_height = models.PositiveIntegerField(null=True,blank=True) thumbnail_width = models.PositiveIntegerField(null=True,blank=True) original_url = models.URLField(blank=False) original_height = models.PositiveIntegerField(null=True,blank=True) original_width = models.PositiveIntegerField(null=True,blank=True) source_url = models.URLField(blank=True) caption = models.TextField(blank=True) is_nsfw = models.NullBooleanField(null=True, blank=True) def __unicode__(self): return self.title def serializable(self): return {'id': self.id, 'set': {'id': self.set.id, 'title': self.set.title }, 'thumbnail_url': self.thumbnail_url, 'thumbnail_height': self.thumbnail_height, 'thumbnail_width': self.thumbnail_width, 'original_url': self.original_url, 'original_height': self.original_height, 'original_width': self.original_width, 'source_url': self.source_url, 'caption': self.caption, 'is_nsfw': self.is_nsfw, } def serializable_short(self): # TODO: more here? return {'id': self.id, 'original_url': self.original_url, 'original_height': self.original_height, 'original_width': self.original_width, } class PicFeed(models.Model): #id created = models.DateTimeField() shortname = models.SlugField(blank=False) source_url = models.URLField(blank=True) rssfeed_url = models.URLField(blank=True) title = models.CharField(max_length=80, blank=True) description = models.TextField(blank=True) image = models.ForeignKey('feeds.Pic', blank=True, null=True) category = models.ForeignKey('feeds.Category', null=True,blank=True) def __unicode__(self): return self.shortname def serializable(self): return {'id': self.id, 'created_unixtime': (int(self.created.strftime("%s")) if self.created else None), 'shortname': self.shortname, 'source_url': self.source_url, 'rssfeed_url': self.rssfeed_url, 'title': self.title, 'description': self.description, 'image': (self.image.serializable_short() if self.image else None), 'category': (self.category.name if self.category else None), } class PicSet(models.Model): #id created = models.DateTimeField(null=True,blank=True) source_url = models.URLField(blank=True) title = models.CharField(max_length=128, blank=False) description = models.TextField(blank=True) keywords = models.CharField(max_length=256, blank=True) image = models.ForeignKey('feeds.Pic', null=True,blank=True) feed = models.ForeignKey('feeds.PicFeed', null=True,blank=False) category = models.ForeignKey('feeds.Category', null=True,blank=True) is_nsfw = models.BooleanField(default=False, blank=False); def __unicode__(self): return self.title def serializable(self): return {'id': self.id, 'created_unixtime': (int(self.created.strftime("%s")) if self.created else None), 'source_url': self.source_url, 'title': self.title, 'description': self.description, 'keywords': self.keywords, 'image': (self.image.serializable_short() if self.image else None), 'pic_count': Pic.objects.filter(set=self.id).count(), 'category': (self.category.name if self.category else None), }