Exemple #1
0
    def get_context_data(self, **kwargs):
        queryset = kwargs.pop('object_list')
        # Отработать форму фильтрации
        page_number = self.request.GET.get('page', None)

        # Обработать фильтры, если они есть
        self.queryset, form = self.process_filter_form(queryset, self.request.GET)
        # Разбить на страницы
        page_size = self.paginate_by
        paginator, page, queryset, is_paginated = self.paginate_queryset(
            self.queryset, page_size, page_number)
        # для всех заявок получаем возрастные группы, которые подходят для них
        age_groups = AgeGroup.objects.all()
        current_distribution_year = get_current_distribution_year()
        requestions = queryset
        for requestion in requestions:
            requestion.age_groups_calculated = requestion.age_groups(
                age_groups=age_groups,
                current_distribution_year=current_distribution_year)
        # для анонимного и авторизованного пользователя нужно отобразить
        # какие особые действия совершались с заявкой
        if requestions:
        # если получать логи при пустом queryset, то все упадет,
        # паджинатор возвращает queryset[0:0] с пустым query
            requestions = add_special_transitions_to_requestions(requestions)
        context = {
            'paginator': paginator,
            'page_obj': page,
            'is_paginated': is_paginated,
            'requestions': requestions,
            'form': form,
            'target_requestion': self.requestion,
            'offset': (page.number - 1) * page_size,
            'STATUS_DECISION': STATUS_DECISION,
            'NOT_APPEAR_STATUSES': [STATUS_NOT_APPEAR, ],
            'STATUS_DISTIRIBUTED': STATUS_DISTRIBUTED,
            'import_finished': Preference.objects.filter(
                key=PREFERENCE_IMPORT_FINISHED).exists()
        }

        context.update(kwargs)
        return context
Exemple #2
0
    def get_queue_data(self, requestion):
        before = Requestion.objects.queue().active_queue().requestions_before(requestion)
        benefits_before = before.benefits().count()
        confirmed_before = before.confirmed().count()
        requestions_before = before.count()
        benefits_after = Requestion.objects.active_queue().benefits().count() - benefits_before
        confirmed_after = Requestion.objects.active_queue().confirmed().count() - confirmed_before
        requestions_after = Requestion.objects.active_queue().count() - requestions_before
        offset = max(0, requestions_before - 20)
        queue_chunk = Requestion.objects.queue().hide_distributed().add_distributed_sadiks()[offset:requestions_before + 20]
        queue_chunk = add_special_transitions_to_requestions(queue_chunk)

        # Вычесть свою заявку
        requestions_after -= 1
        if requestion.benefit_category.priority > 0:
            benefits_after -= 1
        if requestion.status == STATUS_REQUESTER:
            confirmed_after -= 1

        # для заявок вычисляем возрастные группы
        age_groups = AgeGroup.objects.all()
        current_distribution_year = get_current_distribution_year()
        for req in queue_chunk:
            req.age_groups_calculated = req.age_groups(
                age_groups=age_groups,
                current_distribution_year=current_distribution_year)
        return {
            'benefits_before': benefits_before,
            'benefits_after': benefits_after,
            'confirmed_before': confirmed_before,
            'confirmed_after': confirmed_after,
            'requestions_before': requestions_before,
            'requestions_after': requestions_after,
            'queue': queue_chunk,
            'offset': offset,
        }