mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
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:
parent
5389350368
commit
591d5d9660
3 changed files with 19 additions and 5 deletions
|
@ -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):
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Reference in a new issue