Created
March 25, 2012 17:57
-
-
Save jacobh/2198625 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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