def test_search_not_matching_entity_versions(self): self.assertCountEqual( entity_version.search( entity=self.entities[0].id, acronym="FNVABAB", title="There is no version matching this search", entity_type="FACULTY", start_date=self.start_date, end_date=self.end_date ), [] ) self.assertCountEqual( entity_version.search( entity=self.entities[0].id, acronym="ENTITY_V_0", title="This is the entity version 0", entity_type="FACULTY", start_date=factory.fuzzy.FuzzyDate(datetime.date(2010, 1, 1), datetime.date(2014, 12, 30)).fuzz(), end_date=factory.fuzzy.FuzzyDate(datetime.date(2010, 1, 1), datetime.date(2014, 12, 30)).fuzz(), ), [] )
class VacantAttributionFilterForm(BootstrapForm): faculty = forms.ModelChoiceField( queryset=search(entity_type="FACULTY", date=datetime.date.today()), widget=forms.Select(), empty_label=pgettext("plural", "All"), required=False, ) learning_container_acronym = forms.CharField(required=False, max_length=15, widget=forms.TextInput(attrs={'autofocus': 'autofocus'})) def clean_learning_container_acronym(self): data_cleaned = self.cleaned_data['learning_container_acronym'] if isinstance(data_cleaned, str): return data_cleaned.upper() return data_cleaned def is_valid(self): return super(VacantAttributionFilterForm, self).is_valid() and self._has_mininum_criteria() def _has_mininum_criteria(self): cleaned_data = super(VacantAttributionFilterForm, self).clean() if cleaned_data['faculty'] is None \ and (cleaned_data['learning_container_acronym'] is None or len( cleaned_data['learning_container_acronym']) == 0): self._errors['learning_container_acronym'] = _( 'Please precise at least a faculty or a code (or a part of a code)') return False return True
def get_learning_units(self, service_course_search): clean_data = self.cleaned_data entity_container_prefetch = Prefetch( 'learning_container_year__entitycontaineryear_set', queryset=mdl.entity_container_year.search(link_type=[ entity_container_year_link_type.ALLOCATION_ENTITY, entity_container_year_link_type.REQUIREMENT_ENTITY ]).prefetch_related( Prefetch('entity__entityversion_set', queryset=mdl_entity_version.search(), to_attr='entity_versions')), to_attr='entity_containers_year') clean_data[ 'learning_container_year_id'] = _get_filter_learning_container_ids( clean_data) learning_units = mdl.learning_unit_year.search(**clean_data) \ .select_related('academic_year', 'learning_container_year', 'learning_container_year__academic_year') \ .prefetch_related(entity_container_prefetch) \ .order_by('academic_year__year', 'acronym')[:MAX_RECORDS + 1] list_results = [ _append_latest_entities(learning_unit, service_course_search) for learning_unit in learning_units ] return list_results
def build_entity_container_prefetch(entity_container_year_link_types): parent_version_prefetch = Prefetch('parent__entityversion_set', queryset=mdl_entity_version.search(), to_attr='entity_versions') entity_version_prefetch = Prefetch( 'entity__entityversion_set', queryset=mdl_entity_version.search().prefetch_related( parent_version_prefetch), to_attr='entity_versions') entity_container_prefetch = Prefetch( 'learning_container_year__entitycontaineryear_set', queryset=mdl.entity_container_year.search( link_type=entity_container_year_link_types).prefetch_related( entity_version_prefetch), to_attr='entity_containers_year') return entity_container_prefetch
def build_entity_container_prefetch(): parent_version_prefetch = Prefetch('parent__entityversion_set', queryset=mdl_entity_version.search(), to_attr='entity_versions') entity_version_prefetch = Prefetch( 'entity__entityversion_set', queryset=mdl_entity_version.search().prefetch_related( parent_version_prefetch), to_attr='entity_versions') entity_container_prefetch = Prefetch( 'learning_container_year__entitycontaineryear_set', queryset=mdl.entity_container_year.search(link_type=[ entity_container_year_link_type.ALLOCATION_ENTITY, entity_container_year_link_type.REQUIREMENT_ENTITY ]).prefetch_related(entity_version_prefetch), to_attr='entity_containers_year') return entity_container_prefetch
def test_search_matching_entity_version(self): self.assertCountEqual( entity_version.search(entity=self.entities[0].id, acronym="ENTITY_V_0", title="This is the entity version 0", entity_type="FACULTY", start_date=self.start_date, end_date=self.end_date), [self.entity_versions[0]])
def _get_entities_ids(entity_management): entity_versions = entity_version.search(acronym=entity_management) return list(entity_versions.values_list('entity_id', flat=True).distinct())
def test_search_by_type_order(self): self.assertEqual(list( entity_version.search(type=entity_type.FACULTY)), [ self.entity_a_version, self.entity_c_current_version, self.entity_c_older_version ])
def test_search_by_type_current(self): self.assertCountEqual( list(entity_version.search( type=entity_type.FACULTY, date=now, )), [self.entity_a_version, self.entity_c_current_version])