def userdata_cache(user, field=None, size=100): cache_key = 'user_%s_%s' % (user, size) if cache_key in user_keys: data = user_keys[cache_key] else: data = cache.get(cache_key) if data: if field is not None: return data[field] return data else: avatar = daddy_avatar.get_avatar(user, size=size) username = get_username(user) value = [avatar, username] user_keys[cache_key] = value cache.set(cache_key, value, USERDATA_TIMEOUT) if field is not None: return value[field] return value return []
def dehydrate(self, bundle): id = bundle.data['id'] o_image = bundle.data['image'] try: im = get_thumbnail(o_image, "300x300", quality=99, upscale=False) except: im = "" if im: bundle.data['thumbnail'] = im bundle.data['hw'] = "%sx%s" % (im.height, im.width) if self.cur_user: if Likes.objects.filter(post_id=bundle.data['post_id'], user=self.cur_user).count(): bundle.data['like_with_user'] = True post_owner_id = bundle.data['post_owner_id'] bundle.data['post_owner_avatar'] = userdata_cache(post_owner_id, CACHE_AVATAR) bundle.data['post_owner_user_name'] = userdata_cache(post_owner_id, CACHE_USERNAME) actors = Notif_actors.objects.filter(notif=id).order_by('id')[:10] ar = [] for lk in actors: ar.append( [ lk.actor.id, get_username(lk.actor), daddy_avatar.get_avatar(lk.actor, size=100) ] ) bundle.data['actors'] = ar return bundle