Fixing feed address change by feed link when colliding with existing feed.

This commit is contained in:
Samuel Clay 2013-04-04 17:09:07 -07:00
parent 92c4cc7d1a
commit 8a7ea248fd
2 changed files with 18 additions and 19 deletions

View file

@ -381,41 +381,34 @@ class Feed(models.Model):
if feed_address:
if feed_address.endswith('feedburner.com/atom.xml'):
# message = """
# %s - %s - %s
# """ % (feed_address, self.__dict__, pprint(self.__dict__))
# mail_admins('Wierdo alert', message, fail_silently=True)
logging.debug(" ---> Feed points to 'Wierdo', ignoring.")
return False
try:
self.feed_address = feed_address
self.schedule_feed_fetch_immediately()
self.has_feed_exception = False
self.active = True
self.save()
feed = self.save()
feed.schedule_feed_fetch_immediately()
feed.has_feed_exception = False
feed.active = True
feed = feed.save()
except IntegrityError:
original_feed = Feed.objects.get(feed_address=feed_address, feed_link=self.feed_link)
original_feed.has_feed_exception = False
original_feed.active = True
original_feed.save()
merge_feeds(original_feed.pk, self.pk)
return feed_address
return feed_address, feed
if self.feed_address_locked:
return
try:
feed_address = _1()
feed_address, feed = _1()
except TimeoutError:
logging.debug(' ---> [%-30s] Feed address check timed out...' % (unicode(self)[:30]))
self.save_feed_history(505, 'Timeout', '')
feed_address = None
if feed_address:
self.has_feed_exception = True
self.schedule_feed_fetch_immediately()
return not not feed_address
return bool(feed_address), feed
def save_feed_history(self, status_code, message, exception=None):
MFeedFetchHistory(feed_id=self.pk,

View file

@ -160,9 +160,11 @@ class ProcessFeed:
logging.debug(" ---> [%-30s] ~SB~FRHTTP Status code: %s. Checking address..." % (self.feed.title[:30], self.fpf.status))
fixed_feed = None
if not self.feed.known_good:
fixed_feed = self.feed.check_feed_link_for_feed_address()
fixed_feed, feed = self.feed.check_feed_link_for_feed_address()
if not fixed_feed:
self.feed.save_feed_history(self.fpf.status, "HTTP Error")
else:
self.feed = feed
self.feed = self.feed.save()
return FEED_ERRHTTP, ret_values
@ -171,18 +173,22 @@ class ProcessFeed:
logging.debug(" ---> [%-30s] ~SB~FRFeed is Non-XML. %s entries. Checking address..." % (self.feed.title[:30], len(self.fpf.entries)))
fixed_feed = None
if not self.feed.known_good:
fixed_feed = self.feed.check_feed_link_for_feed_address()
fixed_feed, feed = self.feed.check_feed_link_for_feed_address()
if not fixed_feed:
self.feed.save_feed_history(552, 'Non-xml feed', self.fpf.bozo_exception)
else:
self.feed = feed
self.feed = self.feed.save()
return FEED_ERRPARSE, ret_values
elif self.fpf.bozo and isinstance(self.fpf.bozo_exception, xml.sax._exceptions.SAXException):
logging.debug(" ---> [%-30s] ~SB~FRFeed has SAX/XML parsing issues. %s entries. Checking address..." % (self.feed.title[:30], len(self.fpf.entries)))
fixed_feed = None
if not self.feed.known_good:
fixed_feed = self.feed.check_feed_link_for_feed_address()
fixed_feed, feed = self.feed.check_feed_link_for_feed_address()
if not fixed_feed:
self.feed.save_feed_history(553, 'SAX Exception', self.fpf.bozo_exception)
else:
self.feed = feed
self.feed = self.feed.save()
return FEED_ERRPARSE, ret_values