def get_context_data(self, **kwargs): context = super(FavoriteItemsMixin, self).get_context_data(**kwargs) # вариант1 # Получить все голоса # Сгруппировать по Item # Из всех объектов голосов выгрузить значение # Определить total # Выбрать лучшие # вариант2 # Получить все голоса # Получить по ним сет из Item (без дублей) # пройтись по всем и сформировать лист if likes_enable(): from secretballot.models import Vote date = datetime.datetime.now() - datetime.timedelta(days=12) items = Item.objects.filter(id__in=set( Vote.objects.filter(content_type=ContentType.objects.get( app_label='digest', model='item'), ).values_list('object_id', flat=True)), related_to_date__gt=date) items_score = [(item, item.vote_total) for item in items if item.vote_total > 0] items_score = sorted(items_score, key=lambda item: item[1], reverse=True) context['favorite_items'] = [x[0] for x in items_score[:10]] return context
def get_context_data(self, **kwargs): context = super(FavoriteItemsMixin, self).get_context_data(**kwargs) # вариант1 # Получить все голоса # Сгруппировать по Item # Из всех объектов голосов выгрузить значение # Определить total # Выбрать лучшие # вариант2 # Получить все голоса # Получить по ним сет из Item (без дублей) # пройтись по всем и сформировать лист if likes_enable(): from secretballot.models import Vote date = datetime.datetime.now() - datetime.timedelta(days=12) items = Item.objects.filter( id__in=set(Vote.objects.filter( content_type=ContentType.objects.get(app_label='digest', model='item'), ).values_list('object_id', flat=True)), related_to_date__gt=date) items_score = [(item, item.vote_total) for item in items if item.vote_total > 0] items_score = sorted(items_score, key=lambda item: item[1], reverse=True) context['favorite_items'] = [x[0] for x in items_score[:10]] return context
def update_cls_score(instance, **kwargs): if not instance._disable_signals: try: item = ItemClsCheck.objects.get(item=instance) async (item.check_cls, False) item.check_cls() except (ObjectDoesNotExist, ItemClsCheck.DoesNotExist): item = ItemClsCheck(item=instance) item.save() async (item.check_cls, True) @receiver(post_save, sender=Item) def run_remdow(instance, **kwargs): if not instance._disable_signals: description = instance.description if description is None: description = '' instance.description = \ remdow_lazy_img( remdow_img_responsive( remdow_img_center( remdow_img_local(description)))) instance.save_without_signals() if likes_enable(): import secretballot secretballot.enable_voting_on(Item)
'last_check', ) list_display = ( 'item', 'last_check', 'score', ) list_filter = ( 'score', 'last_check', ) actions = [ 'update_check', ] def update_check(self, request, queryset): for obj in queryset.all(): obj.check_cls(force=True) update_check.short_description = 'Перепроверить классификатором' admin.site.register(ItemClsCheck, ItemClsCheckAdmin) if likes_enable(): from secretballot.models import Vote admin.site.register(Vote)
def likes_enable_tag(): return likes_enable()