Ejemplo n.º 1
0
    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(),
            ),
            []
        )
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
 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())
Ejemplo n.º 8
0
 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
         ])
Ejemplo n.º 9
0
 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])