Skip to content

Instantly share code, notes, and snippets.

@jacobh
Created March 25, 2012 17:57
Show Gist options
  • Save jacobh/2198625 to your computer and use it in GitHub Desktop.
Save jacobh/2198625 to your computer and use it in GitHub Desktop.
class FeedManager(models.Manager):
def to_json(self):
l = []
for feed in self.get_query_set():
l.append(feed.dump())
return dumps(l)
class Feed(models.Model):
owners = models.ManyToManyField(User, related_name='owned_feeds')
def get_title(self):
try: return str(self.masterfeed.title)
except: pass# return self.subfeed.master_feed.title
def dump(self):
if self.masterfeed:
return self.masterfeed.dump()
elif self.subfeed:
return self.subfeed.dump()
def to_json(self):
if self.masterfeed:
return dumps(self.dump())
elif self.subfeed:
return dumps(self.dump())
def __unicode__(self):
if self.masterfeed:
return str(self.masterfeed)
elif self.subfeed:
return str(self.subfeed)
objects = FeedManager()
class MasterFeed(Feed):
subscribers = models.ManyToManyField(User, related_name='subscribed_feeds', blank=True)
school = models.ForeignKey(School, blank=True, null=True)
slug = models.CharField(max_length=255)
title = models.CharField(max_length=255)
description = models.TextField()
code = models.CharField(max_length=10, db_index=True, default=generate_feed_code(), unique=True, editable=False)
is_public = models.BooleanField(default=False)
def dump(self):
item_ids = []
for item in self.items.get_query_set():
item_ids.append(item.pk)
dictionary = {
'id':self.code,
'school':self.school,
'description':self.description,
'title':self.title,
'is_public':self.is_public,
'items':item_ids,
}
return dictionary
def __unicode__(self):
return self.code + ' - ' + self.title
feed = Feed.objects.get(pk=id)
return HttpResponse(feed.to_json())
# or
return HttpResponse(Feed.objects.to_json())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment