Fixing two major issues: utf-8 encoding on cjson encoding (doh!) and when feeds are moved through de-duping, let the client know about the new feed id. This will help all new users.

This commit is contained in:
Samuel Clay 2011-08-29 20:51:40 -07:00
parent 5389350368
commit 591d5d9660
3 changed files with 19 additions and 5 deletions

View file

@ -303,7 +303,6 @@ class UserSubscriptionFolders(models.Model):
obj = {folder: []}
user_sub_folders = add_object_to_folder(obj, parent_folder, user_sub_folders)
self.folders = json.encode(user_sub_folders)
print self.folders, parent_folder, folder
self.save()
def delete_feed(self, feed_id, in_folder):

View file

@ -149,7 +149,7 @@ def load_feeds(request):
except UserSubscriptionFolders.MultipleObjectsReturned:
UserSubscriptionFolders.objects.filter(user=user)[1:].delete()
folders = UserSubscriptionFolders.objects.get(user=user)
user_subs = UserSubscription.objects.select_related('feed').filter(user=user)
for sub in user_subs:
@ -250,7 +250,7 @@ def refresh_feeds(request):
UNREAD_CUTOFF = datetime.datetime.utcnow() - datetime.timedelta(days=settings.DAYS_OF_UNREAD)
favicons_fetching = [int(f) for f in request.REQUEST.getlist('favicons_fetching') if f]
feed_icons = dict([(i.feed_id, i) for i in MFeedIcon.objects(feed_id__in=favicons_fetching)])
for sub in user_subs:
pk = str(sub.feed.pk)
if (sub.needs_unread_recalc or
@ -269,12 +269,24 @@ def refresh_feeds(request):
feeds[pk]['exception_code'] = sub.feed.exception_code
if request.REQUEST.get('check_fetch_status', False):
feeds[pk]['not_yet_fetched'] = not sub.feed.fetched_once
if sub.feed.pk in favicons_fetching and sub.feed.pk in feed_icons:
feeds[pk]['favicon'] = feed_icons[sub.feed.pk].data
feeds[pk]['favicon_color'] = feed_icons[sub.feed.pk].color
feeds[pk]['favicon_fetching'] = bool(not (feed_icons[sub.feed.pk].not_found or
feed_icons[sub.feed.pk].data))
if favicons_fetching:
sub_feed_ids = [s.feed.pk for s in user_subs]
moved_feed_ids = [f for f in favicons_fetching if f not in sub_feed_ids]
for moved_feed_id in moved_feed_ids:
try:
duplicate_feed = DuplicateFeed.objects.get(duplicate_feed_id=moved_feed_id)
feeds[moved_feed_id] = feeds[str(duplicate_feed.feed.pk)]
feeds[moved_feed_id]['dupe_feed_id'] = duplicate_feed.feed.pk
except DuplicateFeed.DoesNotExist:
pass
if settings.DEBUG:
diff = datetime.datetime.utcnow()-start
timediff = float("%s.%.2s" % (diff.seconds, (diff.microseconds / 1000)))

View file

@ -14,6 +14,7 @@ import sys
def decode(data):
if not data:
return data
# return json.loads(data)
return cjson.decode(data)
def encode(data, *args, **kwargs):
@ -21,7 +22,8 @@ def encode(data, *args, **kwargs):
# Django models
return serializers.serialize("json", data, *args, **kwargs)
else:
return cjson.encode(data, extension=lambda x: "\"%s\"" % str(x))
return cjson.encode(data, encoding='utf-8', extension=lambda x: "\"%s\"" % str(x))
# return json_encode(data, *args, **kwargs)
def json_encode(data, *args, **kwargs):
"""
@ -83,7 +85,8 @@ def json_encode(data, *args, **kwargs):
return ret
ret = _any(data)
return cjson.encode(ret, extension=lambda x: "\"%s\"" % str(x))
# return json.dumps(ret)
return cjson.encode(ret, encoding='utf-8', extension=lambda x: "\"%s\"" % str(x))
def json_view(func):
def wrap(request, *a, **kw):