Skip to content

Instantly share code, notes, and snippets.

@melinath
Created October 12, 2011 19:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save melinath/1282201 to your computer and use it in GitHub Desktop.
Save melinath/1282201 to your computer and use it in GitHub Desktop.
index d2d20e8..30dadec 100644
--- a/localtv/models.py
+++ b/localtv/models.py
@@ -822,6 +822,36 @@ class Feed(Source, StatusedThumbnailable):
def get_absolute_url(self):
return ('localtv_list_feed', [self.pk])
+ @classmethod
+ def from_scraped_feed(cls, feed, user, status=None, auto_approve=False):
+ current_site = Site.objects.get_current()
+ now = datetime.datetime.now()
+ if status is None:
+ status = cls.UNAPPROVED
+ kwargs = {'feed_url': feed.url, 'site': current_site}
+ try:
+ instance = cls._default_manager.get(**kwargs)
+ except cls.DoesNotExist:
+ instance = cls(**kwargs)
+ created = instance.pk is None
+ defaults = {
+ 'name': feed.title,
+ 'webpage': feed.link,
+ 'description': feed.description,
+ 'when_submitted': now,
+ 'last_updated': now,
+ 'user': user,
+ 'status': status,
+ 'auto_approve': auto_approve
+ }
+ changed = created
+ for k, v in defaults.iteritems():
+ if v != getattr(instance, k, None):
+ setattr(instance, k, v)
+ changed = True
+ if changed:
+ instance.save()
+
def update_items(self, verbose=False, parsed_feed=None,
clear_rejected=False):
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment