Skip to content

Commit

Permalink
Ported fix for #73 to the refactored code.
Browse files Browse the repository at this point in the history
  • Loading branch information
passiomatic committed Mar 1, 2015
1 parent 7151786 commit 271f1aa
Show file tree
Hide file tree
Showing 10 changed files with 64 additions and 64 deletions.
2 changes: 1 addition & 1 deletion coldsweat/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ def command_update(self, options, args):
else:
print 'Database is already up-to-date.'
except OperationalError, ex:
logger.error('caught exception updating database schema: (%s)' % ex)
logger.error(u'caught exception updating database schema: (%s)' % ex)
print 'Error while running database update. See log file for more information.'

def run():
Expand Down
26 changes: 13 additions & 13 deletions coldsweat/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@ def add_subscription(self, feed, group):
try:
subscription = Subscription.create(user=self.user, feed=feed, group=group)
except IntegrityError:
logger.debug('user %s has already feed %s in her subscriptions' % (self.user.username, feed.self_link))
logger.debug(u'user %s has already feed %s in her subscriptions' % (self.user.username, feed.self_link))
return None

logger.debug('added feed %s for user %s' % (feed.self_link, self.user.username))
logger.debug(u'added feed %s for user %s' % (feed.self_link, self.user.username))
return subscription

def remove_subscription(self, feed):
Expand All @@ -80,26 +80,26 @@ def mark_entry(self, entry, status):
try:
Read.create(user=self.user, entry=entry)
except IntegrityError:
logger.debug('entry %s already marked as read, ignored' % entry.id)
logger.debug(u'entry %s already marked as read, ignored' % entry.id)
return
elif status == 'unread':
count = Read.delete().where((Read.user==self.user) & (Read.entry==entry)).execute()
if not count:
logger.debug('entry %s never marked as read, ignored' % entry.id)
logger.debug(u'entry %s never marked as read, ignored' % entry.id)
return
elif status == 'saved':
try:
Saved.create(user=self.user, entry=entry)
except IntegrityError:
logger.debug('entry %s already saved, ignored' % entry.id)
logger.debug(u'entry %s already saved, ignored' % entry.id)
return
elif status == 'unsaved':
count = Saved.delete().where((Saved.user==self.user) & (Saved.entry==entry)).execute()
if not count:
logger.debug('entry %s never saved, ignored' % entry.id)
logger.debug(u'entry %s never saved, ignored' % entry.id)
return

logger.debug('entry %s %s' % (entry.id, status))
logger.debug(u'entry %s %s' % (entry.id, status))

def get_unread_entries(self, *select):
#@@TODO: include saved information too
Expand Down Expand Up @@ -172,7 +172,7 @@ def add_feed(self, feed, fetch_data=False):

try:
previous_feed = Feed.get(Feed.self_link == feed.self_link)
logger.debug('feed %s has been already added to database, skipped' % feed.self_link)
logger.debug(u'feed %s has been already added to database, skipped' % feed.self_link)
return previous_feed
except Feed.DoesNotExist:
pass
Expand Down Expand Up @@ -226,7 +226,7 @@ def add_feeds_from_file(self, filename):
group = Group.get(Group.title==group.title)
except Group.DoesNotExist:
group.save()
logger.debug('added group %s to database' % group.title)
logger.debug(u'added group %s to database' % group.title)

groups.append(group)

Expand Down Expand Up @@ -262,7 +262,7 @@ def fetch_feeds(self, feeds): #@@TODO add processes param?

load_plugins()

logger.debug("starting fetcher")
logger.debug(u"starting fetcher")
trigger_event('fetch_started')

if config.fetcher.processes:
Expand All @@ -276,7 +276,7 @@ def fetch_feeds(self, feeds): #@@TODO add processes param?

trigger_event('fetch_done', feeds)

logger.info("%d feeds checked in %.2fs" % (len(feeds), time.time() - start))
logger.info(u"%d feeds checked in %.2fs" % (len(feeds), time.time() - start))


def fetch_all_feeds(self):
Expand All @@ -289,7 +289,7 @@ def fetch_all_feeds(self):

feeds = list(q)
if not feeds:
logger.debug("no feeds found to refresh, halted")
logger.debug(u"no feeds found to refresh, halted")
return

self.fetch_feeds(feeds)
Expand All @@ -299,7 +299,7 @@ def feed_worker(feed):

#@@REMOVEME: just delete feed if there are no subscribers
# if not feed.subscriptions:
# logger.debug("feed %s has no subscribers, skipped" % feed.self_link)
# logger.debug(u"feed %s has no subscribers, skipped" % feed.self_link)
# return

# Each worker has its own connection
Expand Down
38 changes: 19 additions & 19 deletions coldsweat/fetcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def handle_304(self, response):
'''
Not modified
'''
logger.debug("%s hasn't been modified, skipped" % self.netloc)
logger.debug(u"%s hasn't been modified, skipped" % self.netloc)

raise HTTPNotModified

Expand All @@ -65,7 +65,7 @@ def handle_410(self, response):
self.feed.is_enabled = False
self.feed.error_count += 1

logger.warn("%s is gone, disabled" % self.netloc)
logger.warn(u"%s is gone, disabled" % self.netloc)
self._synthesize_entry('Feed has been removed from the origin server.')

raise HTTPGone
Expand All @@ -80,14 +80,14 @@ def handle_301(self, response):
Feed.get(self_link=self_link)
except Feed.DoesNotExist:
self.feed.self_link = self_link
logger.info("%s has changed its location, updated to %s" % (self.netloc, self_link))
logger.info(u"%s has changed its location, updated to %s" % (self.netloc, self_link))
else:
self.feed.is_enabled = False
self.last_status = DuplicatedFeedError.code
self.feed.error_count += 1

self._synthesize_entry('Feed has a duplicated web address.')
logger.warn("new %s location %s is duplicated, disabled" % (self.netloc, self_link))
logger.warn(u"new %s location %s is duplicated, disabled" % (self.netloc, self_link))

raise DuplicatedFeedError #HTTPMovedPermanently

Expand All @@ -107,7 +107,7 @@ def handle_200(self, response):

def fetch_feed(self):

logger.debug("fetching %s" % self.netloc)
logger.debug(u"fetching %s" % self.netloc)

# Check freshness
for value in [self.feed.last_checked_on, self.feed.last_updated_on]:
Expand All @@ -118,7 +118,7 @@ def fetch_feed(self):
# deal with large seconds values
delta = datetime_as_epoch(self.instant) - datetime_as_epoch(value)
if delta < config.fetcher.min_interval:
logger.debug("%s is below minimun fetch interval, skipped" % self.netloc)
logger.debug(u"%s is below minimun fetch interval, skipped" % self.netloc)
return

try:
Expand All @@ -130,7 +130,7 @@ def fetch_feed(self):
# Record any network error as 'Service Unavailable'
self.last_status = HTTPServiceUnavailable.code
self.feed.error_count += 1
logger.warn("a network error occured while fetching %s, skipped" % self.netloc)
logger.warn(u"a network error occured while fetching %s, skipped" % self.netloc)
return

self.feed.last_checked_on = self.instant
Expand All @@ -147,7 +147,7 @@ def fetch_feed(self):
except (HTTPError, HTTPNotModified, DuplicatedFeedError):
return # Bail out
except AttributeError:
logger.warn("%s replied with status %d, aborted" % (self.netloc, response.status_code))
logger.warn(u"%s replied with status %d, aborted" % (self.netloc, response.status_code))
return
finally:
self.feed.save()
Expand All @@ -166,7 +166,7 @@ def parse_feed(self, data):
soup = feedparser.parse(data)
# Got parsing error?
if hasattr(soup, 'bozo') and soup.bozo:
logger.debug("%s caused a parser error (%s), tried to parse it anyway" % (self.netloc, soup.bozo_exception))
logger.debug(u"%s caused a parser error (%s), tried to parse it anyway" % (self.netloc, soup.bozo_exception))

ft = FeedTranslator(soup.feed)

Expand All @@ -187,21 +187,21 @@ def parse_feed(self, data):
guid = t.get_guid(default=link)

if not guid:
logger.warn('could not find GUID for entry from %s, skipped' % self.netloc)
logger.warn(u'could not find GUID for entry from %s, skipped' % self.netloc)
continue

timestamp = t.get_timestamp(self.instant)
content_type, content = t.get_content(('text/plain', ''))

# Skip ancient entries
if (self.instant - timestamp).days > config.fetcher.max_history:
logger.debug("entry %s from %s is over maximum history, skipped" % (guid, self.netloc))
logger.debug(u"entry %s from %s is over maximum history, skipped" % (guid, self.netloc))
continue

try:
# If entry is already in database with same GUID, then skip it
Entry.get(guid=guid)
logger.debug("duplicated entry %s, skipped" % guid)
logger.debug(u"duplicated entry %s, skipped" % guid)
continue
except Entry.DoesNotExist:
pass
Expand Down Expand Up @@ -233,7 +233,7 @@ def fetch_icon(self):
self.feed.icon = self._google_favicon_fetcher(self.feed.alternate_link or self.feed.self_link)
self.feed.icon_last_updated_on = self.instant

logger.debug("saved favicon %s..." % (self.feed.icon[:70]))
logger.debug(u"saved favicon %s..." % (self.feed.icon[:70]))
self.feed.save()


Expand All @@ -246,7 +246,7 @@ def _google_favicon_fetcher(self, url):
try:
response = fetch_url(endpoint)
except RequestException, exc:
logger.warn("could not fetch favicon for %s (%s)" % (url, exc))
logger.warn(u"could not fetch favicon for %s (%s)" % (url, exc))
return Feed.DEFAULT_ICON

return make_data_uri(response.headers['Content-Type'], response.content)
Expand Down Expand Up @@ -278,7 +278,7 @@ def add_synthesized_entry(self, title, content_type, content):
last_updated_on = self.instant
)
entry.save()
logger.debug("synthesized entry %s" % guid)
logger.debug(u"synthesized entry %s" % guid)
return entry


Expand All @@ -301,7 +301,7 @@ def get_timestamp(self, default):
if value:
# Fix future dates
return min(tuple_as_datetime(value), default)
logger.debug('no feed timestamp found, using default')
logger.debug(u'no feed timestamp found, using default')
return default

# Nullable fields
Expand Down Expand Up @@ -341,7 +341,7 @@ def get_timestamp(self, default):
if value:
# Fix future dates
return min(tuple_as_datetime(value), default)
logger.debug('no entry timestamp found, using default')
logger.debug(u'no entry timestamp found, using default')
return default

def get_title(self, default):
Expand All @@ -364,7 +364,7 @@ def get_content(self, default):
if candidates:
return candidates[0].type, candidates[0].value

logger.debug('no entry content found, using default')
logger.debug(u'no entry content found, using default')
return default

# Nullable fields
Expand Down Expand Up @@ -432,7 +432,7 @@ def fetch_url(url, timeout=10, etag=None, modified_since=None):
try:
response = requests.get(url, timeout=timeout, headers=request_headers)
except RequestException, exc:
logger.debug("tried to fetch %s but got %s" % (url, exc.__class__.__name__))
logger.debug(u"tried to fetch %s but got %s" % (url, exc.__class__.__name__))
raise exc

return response
Expand Down
Loading

0 comments on commit 271f1aa

Please sign in to comment.