def publishable_unpublished(publishable, **kwargs): pipe = client.pipeline() for k in (MOST_COMMENTED_LH, LAST_COMMENTED_LH, RECENTLY_COMMENTED_LH): ListingHandler = Listing.objects.get_listing_handler(k, fallback=False) if ListingHandler is None: continue ListingHandler.remove_publishable(publishable.category, publishable, pipe=pipe, commit=False) pipe.execute()
def publishable_published(publishable, **kwargs): cnt = client.get(COMCOUNT_KEY % (publishable.content_type_id, publishable.pk)) lastcom = client.hgetall(LASTCOM_KEY % (publishable.content_type_id, publishable.pk)) pipe = client.pipeline() if cnt is None: cnt = 0 if Listing.objects.get_listing_handler(MOST_COMMENTED_LH, fallback=False): Listing.objects.get_listing_handler(MOST_COMMENTED_LH).add_publishable(publishable.category, publishable, cnt, pipe=pipe, commit=False) if lastcom and Listing.objects.get_listing_handler(LAST_COMMENTED_LH, fallback=False): Listing.objects.get_listing_handler(LAST_COMMENTED_LH).add_publishable(publishable.category, publishable, lastcom['submit_date'], pipe=pipe, commit=False) pipe.execute()
def comment_posted(comment, **kwargs): count_key = COMCOUNT_KEY % (comment.content_type_id, comment.object_pk) last_keu = LASTCOM_KEY % (comment.content_type_id, comment.object_pk) pipe = client.pipeline() pipe.incr(count_key) pipe.hmset(last_keu, { 'submit_date': repr(time.mktime(comment.submit_date.timetuple())), 'user_id': comment.user_id or '', 'username': comment.user.username if comment.user_id else comment.user_name, }) obj = comment.content_object if not isinstance(obj, Publishable) or not obj.is_published(): pipe.execute() elif Listing.objects.get_listing_handler(RECENTLY_COMMENTED_LH, fallback=False): Listing.objects.get_listing_handler(RECENTLY_COMMENTED_LH).incr_score(obj.category, obj, pipe=pipe, commit=False) pipe.execute() publishable_published(obj)