コード例 #1
0
class CommonFilterForm(BootstrapForm):
    faculty = FacultyModelChoiceField(
        queryset=entity_version.find_latest_version(datetime.now())
                               .filter(entity_type=entity_type.FACULTY).order_by('acronym'),
        widget=forms.Select(),
        empty_label=pgettext("plural", "All"),
        required=False,
        label=_('Faculty')
    )

    formation = FormationModelChoiceField(
        queryset=None,
        widget=forms.Select(),
        empty_label=pgettext("plural", "All"),
        required=False,
        label=_('Formation')
    )

    free_text = forms.CharField(max_length=100, required=False, label=_('In all fields'))

    registration_required = forms.ChoiceField(
        choices=BOOLEAN_CHOICES,
        required=False,
        label=_('Registration required')
    )

    def __init__(self, data=None, *args, **kwargs):
        super(CommonFilterForm, self).__init__(data, *args, **kwargs)
        _build_formation_choices(self.fields['formation'], STATE_TO_DISPLAY)

    def get_admissions(self):
        state_filter = self.cleaned_data.get('state')
        free_text = self.cleaned_data.get('free_text')
        registration_required = self.cleaned_data.get('registration_required')

        qs = get_queryset_by_faculty_formation(
            self.cleaned_data['faculty'],
            self.cleaned_data.get('formation'),
            STATE_TO_DISPLAY,
            False
        )

        if state_filter:
            if isinstance(state_filter, str):
                qs = qs.filter(state=state_filter)
            if isinstance(state_filter, list):
                qs = qs.filter(state__in=state_filter)

        if free_text:
            qs = search_admissions_with_free_text(free_text, qs)

        if registration_required:
            qs = qs.filter(formation__registration_required=registration_required)

        return qs.select_related(
            'person_information__person',
            'formation__education_group'
        )
コード例 #2
0
def find_last_entity_version_grouped_by_linktypes(learning_container_year, link_type=None):
    lcy_start_date = learning_container_year.academic_year.start_date
    entity_container_years = search(learning_container_year=learning_container_year, link_type=link_type) \
        .prefetch_related(
        Prefetch('entity__entityversion_set',
                 queryset=entity_version.find_latest_version(lcy_start_date),
                 to_attr="entity_versions")
    )
    return {ecy.type: ecy.get_latest_entity_version() for ecy in entity_container_years}
コード例 #3
0
def find_last_entity_version_grouped_by_linktypes(learning_container_year, link_type=None):
    lcy_start_date = learning_container_year.academic_year.start_date
    entity_container_years = search(learning_container_year=learning_container_year, link_type=link_type) \
        .prefetch_related(
        Prefetch('entity__entityversion_set',
                 queryset=entity_version.find_latest_version(lcy_start_date),
                 to_attr="entity_versions")
    )
    return {ecy.type: ecy.get_latest_entity_version() for ecy in entity_container_years}
コード例 #4
0
class ManagerFilterForm(BootstrapForm):
    person = ModelChoiceField(queryset=Person.objects.filter(
        user__groups__name='continuing_education_training_managers').order_by(
            'last_name'),
                              widget=forms.Select(),
                              empty_label=pgettext("plural", "All"),
                              required=False,
                              label=_('Manager'))

    faculty = FacultyModelChoiceField(
        queryset=entity_version.find_latest_version(datetime.now()).filter(
            entity_type=entity_type.FACULTY).order_by('acronym'),
        widget=forms.Select(),
        empty_label=pgettext("plural", "All"),
        required=False,
        label=_('Faculty'))

    training = FormationModelChoiceField(
        queryset=ContinuingEducationTraining.objects.filter(
            id__in=PersonTraining.objects.values_list('training', flat=True)),
        widget=forms.Select(),
        empty_label=pgettext("plural", "All"),
        required=False,
        label=_('Formation'))

    def __init__(self, *args, **kwargs):
        super(ManagerFilterForm, self).__init__(*args, **kwargs)

    def get_managers(self):
        training = self.cleaned_data.get('training', None)
        person = self.cleaned_data.get('person', None)
        faculty = self.cleaned_data.get('faculty', None)
        qs = Person.objects.filter(
            user__groups__name='continuing_education_training_managers'
        ).order_by('last_name')
        if training:
            qs = qs.filter(id__in=PersonTraining.objects.filter(
                training=training).values_list('person__id'))
        if person:
            qs = qs.filter(id__in=PersonTraining.objects.filter(
                person=person).values_list('person__id'))
        if faculty:
            entity = EntityVersion.objects.filter(id=faculty.id).first().entity
            trainings_by_faculty = ContinuingEducationTraining.objects.filter(
                education_group__educationgroupyear__management_entity=entity)
            qs = qs.filter(id__in=PersonTraining.objects.filter(
                training__in=trainings_by_faculty).values_list('person__id'))
        return qs