Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
        '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)
Ejemplo n.º 5
0
def likes_enable_tag():
    return likes_enable()