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' )
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}
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