Beispiel #1
0
 def save(self, commit=True):
     if hasattr(self.instance, 'learning_unit_year'):
         # When we save a creation_proposal, we do not need to save the initial_data
         if self.instance.type != ProposalType.CREATION.name and not self.instance.initial_data:
             self.instance.initial_data = copy_learning_unit_data(
                 get_by_id(self.instance.learning_unit_year.id))
     return super().save(commit)
Beispiel #2
0
def tutoring_learning_unit_save(request):
    tutoring_learning_unit_year_id = request.POST.get(
        'tutoring_learning_unit_year_id')
    mandate_id = request.POST.get('mandate_id')
    learning_unit_year_id = request.POST.get('learning_unit_year_id')
    if tutoring_learning_unit_year_id:
        current_tutoring_learning_unit = mdl.tutoring_learning_unit_year.find_by_id(
            tutoring_learning_unit_year_id)
    else:
        current_tutoring_learning_unit = None
    form = TutoringLearningUnitForm(data=request.POST,
                                    instance=current_tutoring_learning_unit)
    if form.is_valid():
        this_mandate = assistant_mandate.find_mandate_by_id(mandate_id)
        current_tutoring_learning_unit = form.save(commit=False)
        if not learning_unit_year_id:
            msg = _("must_enter_learning_unit_year")
            form.add_error(None, msg)
        else:
            this_learning_unit_year = learning_unit_year.get_by_id(
                learning_unit_year_id)
            current_tutoring_learning_unit.learning_unit_year = this_learning_unit_year
            current_tutoring_learning_unit.mandate = this_mandate
            current_tutoring_learning_unit.save()
            return HttpResponseRedirect(reverse('mandate_learning_units'))
    return render(request, "tutoring_learning_unit_year.html", {
        'form': form,
        'mandate_id': mandate_id
    })
def get_scores_encoding_list(user, **kwargs):
    current_academic_year = academic_year.current_academic_year()
    current_number_session = session_exam_calendar.find_session_exam_number()
    is_program_manager = program_manager.is_program_manager(user)
    learning_unit_year_id = kwargs.get('learning_unit_year_id')
    offer_year_id = kwargs.get('offer_year_id')
    tutor_id = kwargs.get('tutor_id')
    enrollments_ids = kwargs.get('enrollments_ids')
    justification = kwargs.get('justification')
    only_enrolled = _need_to_filter_students_enrolled_to_exam(
        justification, kwargs)

    if is_program_manager:
        professor = tutor.find_by_id(tutor_id) if tutor_id else None
        offers_year = [offer_year.find_by_id(offer_year_id)] if offer_year_id else \
                       list(offer_year.find_by_user(user, academic_yr=current_academic_year))

        enrollments = exam_enrollment.find_for_score_encodings(
            academic_year=current_academic_year,
            session_exam_number=current_number_session,
            learning_unit_year_id=learning_unit_year_id,
            tutor=professor,
            offers_year=offers_year,
            registration_id=kwargs.get('registration_id'),
            student_last_name=kwargs.get('student_last_name'),
            student_first_name=kwargs.get('student_first_name'),
            justification=justification,
            only_enrolled=only_enrolled,
        )
    else:
        professor = tutor.find_by_user(user)
        enrollments = exam_enrollment.find_for_score_encodings(
            academic_year=current_academic_year,
            session_exam_number=current_number_session,
            learning_unit_year_id=learning_unit_year_id,
            tutor=professor,
            only_enrolled=only_enrolled)

    # Want a subset of exam enrollment list
    if enrollments_ids:
        enrollments = enrollments.filter(id__in=enrollments_ids)

    # Append deadline/deadline_tutor for each exam enrollments
    enrollments = _append_session_exam_deadline(list(enrollments))
    enrollments = sort_encodings(enrollments)

    return ScoresEncodingList(
        **{
            'academic_year':
            current_academic_year,
            'number_session':
            current_number_session,
            'learning_unit_year':
            learning_unit_year.get_by_id(learning_unit_year_id
                                         ) if learning_unit_year_id else None,
            'enrollments':
            enrollments
        })
Beispiel #4
0
def get_scores_encoding_list(user, **kwargs):
    current_academic_year = academic_year.current_academic_year()
    current_number_session = session_exam_calendar.find_session_exam_number()
    is_program_manager = program_manager.is_program_manager(user)
    learning_unit_year_id = kwargs.get('learning_unit_year_id')
    offer_year_id = kwargs.get('offer_year_id')
    tutor_id = kwargs.get('tutor_id')
    enrollments_ids = kwargs.get('enrollments_ids')
    justification = kwargs.get('justification')
    only_enrolled = _need_to_filter_students_enrolled_to_exam(justification, kwargs)

    if is_program_manager:
        professor = tutor.find_by_id(tutor_id) if tutor_id else None
        offers_year = [offer_year.find_by_id(offer_year_id)] if offer_year_id else \
                       list(offer_year.find_by_user(user, academic_yr=current_academic_year))

        enrollments = exam_enrollment.find_for_score_encodings(
            academic_year=current_academic_year,
            session_exam_number=current_number_session,
            learning_unit_year_id=learning_unit_year_id,
            tutor=professor,
            offers_year=offers_year,
            registration_id=kwargs.get('registration_id'),
            student_last_name=kwargs.get('student_last_name'),
            student_first_name=kwargs.get('student_first_name'),
            justification=justification,
            only_enrolled=only_enrolled,
        )
    else:
        professor = tutor.find_by_user(user)
        enrollments = exam_enrollment.find_for_score_encodings(
            academic_year=current_academic_year,
            session_exam_number=current_number_session,
            learning_unit_year_id=learning_unit_year_id,
            tutor=professor,
            only_enrolled=only_enrolled
        )

    # Want a subset of exam enrollment list
    if enrollments_ids:
        enrollments = enrollments.filter(id__in=enrollments_ids)

    # Append deadline/deadline_tutor for each exam enrollments
    enrollments = _append_session_exam_deadline(list(enrollments))
    enrollments = sort_encodings(enrollments)

    return ScoresEncodingList(**{
        'academic_year': current_academic_year,
        'number_session': current_number_session,
        'learning_unit_year': learning_unit_year.get_by_id(learning_unit_year_id) if learning_unit_year_id else None,
        'enrollments': enrollments
    })
Beispiel #5
0
def _get_data_from_initial_data(initial_data):
    learning_unit_yr = get_by_id(initial_data.get('learning_unit_year')['id'])
    requirement_entity = find_by_id(initial_data.get('entities')['REQUIREMENT_ENTITY'])
    allocation_entity = find_by_id(initial_data.get('entities')['ALLOCATION_ENTITY'])
    add1_requirement_entity = find_by_id(initial_data.get('entities')['ADDITIONAL_REQUIREMENT_ENTITY_1'])
    add2_requirement_entity = find_by_id(initial_data.get('entities')['ADDITIONAL_REQUIREMENT_ENTITY_2'])
    campus = find_campus_by_id(initial_data.get('learning_unit_year')['campus'])

    organization = get_organization_from_learning_unit_year(learning_unit_yr)
    language = find_language_by_id(initial_data.get('learning_unit_year')['language'])
    lu_initial = initial_data.get('learning_unit', None)
    luy_initial = initial_data.get('learning_unit_year', None)
    lcy_initial = initial_data.get('learning_container_year', None)

    data = [
        str(_('Initial data')),
        luy_initial['acronym'],
        learning_unit_yr.academic_year.name,
        dict(LearningContainerYearType.choices())[lcy_initial['container_type']] if
        lcy_initial['container_type'] else '-',
        translate_status(luy_initial['status']),
        learning_unit_yr.get_subtype_display(),
        get_translation(luy_initial['internship_subtype']),
        volume_format(luy_initial['credits']),
        language.name if language else EMPTY_VALUE,
        dict(PERIODICITY_TYPES)[luy_initial['periodicity']] if luy_initial['periodicity'] else BLANK_VALUE,
        get_translation(luy_initial['quadrimester']),
        get_translation(luy_initial['session']),
        get_representing_string(lcy_initial['common_title']),
        get_representing_string(luy_initial['specific_title']),
        get_representing_string(lcy_initial['common_title_english']),
        get_representing_string(luy_initial['specific_title_english']),
        requirement_entity.most_recent_acronym if requirement_entity else BLANK_VALUE,
        allocation_entity.most_recent_acronym if allocation_entity else BLANK_VALUE,
        add1_requirement_entity.most_recent_acronym if add1_requirement_entity else BLANK_VALUE,
        add2_requirement_entity.most_recent_acronym if add2_requirement_entity else BLANK_VALUE,
        _('Yes') if luy_initial['professional_integration'] else _('No'),
        organization.name if organization else BLANK_VALUE,
        campus if campus else BLANK_VALUE,
        get_representing_string(lu_initial['faculty_remark']),
        get_representing_string(lu_initial['other_remark']),
        _('Yes') if lcy_initial.get('team') else _('No'),
        _('Yes') if lcy_initial.get('is_vacant') else _('No'),
        dict(vacant_declaration_type.DECLARATION_TYPE)[lcy_initial.get('type_declaration_vacant')] if lcy_initial.get(
            'type_declaration_vacant') else BLANK_VALUE,
        dict(attribution_procedure.ATTRIBUTION_PROCEDURES)[luy_initial.get('attribution_procedure')] if luy_initial.get(
            'attribution_procedure') else BLANK_VALUE,
    ]
    return _get_data_from_components_initial_data(data, initial_data)
    def save(self):
        trans_text = self._get_or_create_translated_text()
        start_luy = learning_unit_year.get_by_id(trans_text.reference)

        reference_ids = [start_luy.id]
        if is_pedagogy_data_must_be_postponed(start_luy):
            reference_ids += [luy.id for luy in start_luy.find_gt_learning_units_year()]

        for reference_id in reference_ids:
            if trans_text.text_label.label in CMS_LABEL_PEDAGOGY_FR_ONLY:
                # In case of FR only CMS field, also save text to corresponding EN field
                languages = [language[0] for language in settings.LANGUAGES]
            else:
                languages = [trans_text.language]

            self._update_or_create_translated_texts(languages, reference_id, trans_text)
def tutoring_learning_unit_save(request):
    tutoring_learning_unit_year_id = request.POST.get('tutoring_learning_unit_year_id')
    mandate_id = request.POST.get('mandate_id')
    learning_unit_year_id = request.POST.get('learning_unit_year_id')
    if tutoring_learning_unit_year_id:
        current_tutoring_learning_unit = mdl.tutoring_learning_unit_year.find_by_id(tutoring_learning_unit_year_id)
    else:
        current_tutoring_learning_unit = None
    form = TutoringLearningUnitForm(data=request.POST, instance=current_tutoring_learning_unit)
    if form.is_valid():
        this_mandate = assistant_mandate.find_mandate_by_id(mandate_id)
        current_tutoring_learning_unit = form.save(commit=False)
        if not learning_unit_year_id:
            msg = _("must_enter_learning_unit_year")
            form.add_error(None, msg)
        else:
            this_learning_unit_year = learning_unit_year.get_by_id(learning_unit_year_id)
            current_tutoring_learning_unit.learning_unit_year = this_learning_unit_year
            current_tutoring_learning_unit.mandate = this_mandate
            current_tutoring_learning_unit.save()
            return HttpResponseRedirect(reverse('mandate_learning_units'))
    return render(request, "tutoring_learning_unit_year.html", {'form': form, 'mandate_id': mandate_id})
Beispiel #8
0
def search_by_learning_unit_year_pk_this_academic_year(learning_unit_year_pk):
    a_learning_unit_year = learning_unit_year.get_by_id(learning_unit_year_pk)
    attributions = Attribution.objects.filter(
        learning_unit_year=a_learning_unit_year,
        learning_unit_year__academic_year=current_academic_year())
    return attributions
Beispiel #9
0
def _get_volumes_from_db(learning_unit_year_id):
    luy = learning_unit_year.get_by_id(learning_unit_year_id)
    return learning_unit_year_with_context.get_with_context(
        learning_container_year_id=luy.learning_container_year)
Beispiel #10
0
def _get_data_from_initial_data(initial_data):
    learning_unit_yr = get_by_id(initial_data.get('learning_unit_year')['id'])
    requirement_entity = find_by_id(
        initial_data.get('entities')['REQUIREMENT_ENTITY'])
    allocation_entity = find_by_id(
        initial_data.get('entities')['ALLOCATION_ENTITY'])
    add1_requirement_entity = find_by_id(
        initial_data.get('entities')['ADDITIONAL_REQUIREMENT_ENTITY_1'])
    add2_requirement_entity = find_by_id(
        initial_data.get('entities')['ADDITIONAL_REQUIREMENT_ENTITY_2'])
    campus = find_campus_by_id(
        initial_data.get('learning_unit_year')['campus'])

    organization = get_organization_from_learning_unit_year(learning_unit_yr)
    language = find_language_by_id(
        initial_data.get('learning_unit_year')['language'])
    lu_initial = initial_data.get('learning_unit', None)
    luy_initial = initial_data.get('learning_unit_year', None)
    lcy_initial = initial_data.get('learning_container_year', None)

    data = [
        str(_('Initial data')),
        luy_initial['acronym'],
        learning_unit_yr.academic_year.name,
        dict(
            LearningContainerYearType.choices())[lcy_initial['container_type']]
        if lcy_initial['container_type'] else '-',
        translate_status(luy_initial['status']),
        learning_unit_yr.get_subtype_display(),
        get_translation(luy_initial['internship_subtype']),
        volume_format(luy_initial['credits']),
        language.name if language else EMPTY_VALUE,
        dict(PERIODICITY_TYPES)[luy_initial['periodicity']]
        if luy_initial['periodicity'] else BLANK_VALUE,
        get_translation(luy_initial['quadrimester']),
        get_translation(luy_initial['session']),
        get_representing_string(lcy_initial['common_title']),
        get_representing_string(luy_initial['specific_title']),
        get_representing_string(lcy_initial['common_title_english']),
        get_representing_string(luy_initial['specific_title_english']),
        requirement_entity.most_recent_acronym
        if requirement_entity else BLANK_VALUE,
        allocation_entity.most_recent_acronym
        if allocation_entity else BLANK_VALUE,
        add1_requirement_entity.most_recent_acronym
        if add1_requirement_entity else BLANK_VALUE,
        add2_requirement_entity.most_recent_acronym
        if add2_requirement_entity else BLANK_VALUE,
        _('Yes') if luy_initial['professional_integration'] else _('No'),
        organization.name if organization else BLANK_VALUE,
        campus if campus else BLANK_VALUE,
        get_representing_string(lu_initial['faculty_remark']),
        get_representing_string(lu_initial['other_remark']),
        _('Yes') if lcy_initial.get('team') else _('No'),
        _('Yes') if lcy_initial.get('is_vacant') else _('No'),
        dict(vacant_declaration_type.DECLARATION_TYPE)[lcy_initial.get(
            'type_declaration_vacant')]
        if lcy_initial.get('type_declaration_vacant') else BLANK_VALUE,
        dict(attribution_procedure.ATTRIBUTION_PROCEDURES)[luy_initial.get(
            'attribution_procedure')]
        if luy_initial.get('attribution_procedure') else BLANK_VALUE,
    ]
    return _get_data_from_components_initial_data(data, initial_data)
Beispiel #11
0
def _get_data_from_initial_data(initial_data, proposal_comparison=False):
    luy_initial = initial_data.get('learning_unit_year', {})
    lcy_initial = initial_data.get('learning_container_year', {})
    lu_initial = initial_data.get('learning_unit', {})

    if luy_initial.get('id'):
        learning_unit_yr = get_by_id(luy_initial.get('id'))
    else:
        learning_unit_yr = None

    requirement_entity = find_by_id(lcy_initial.get('requirement_entity'))
    allocation_entity = find_by_id(lcy_initial.get('allocation_entity'))
    add1_requirement_entity = find_by_id(lcy_initial.get('additional_entity_1'))
    add2_requirement_entity = find_by_id(lcy_initial.get('additional_entity_2'))
    campus = find_campus_by_id(luy_initial.get('campus'))

    organization = None
    if learning_unit_yr:
        organization = get_organization_from_learning_unit_year(learning_unit_yr)
    language = find_language_by_id(luy_initial.get('language'))

    if proposal_comparison:
        academic_year = _format_academic_year(learning_unit_yr.academic_year.name,
                                              find_academic_year_by_id(lu_initial.get('end_year'))
                                              if lu_initial.get('end_year') else None)
    else:
        academic_year = learning_unit_yr.academic_year.name

    data = [
        str(_('Initial data')),
        luy_initial.get('acronym', ''),
        academic_year,
        dict(LearningContainerYearType.choices())[lcy_initial.get('container_type')] if
        lcy_initial.get('container_type') else BLANK_VALUE,
        translate_status(luy_initial.get('status')),
        learning_unit_yr.get_subtype_display()
        if learning_unit_yr and learning_unit_yr.get_subtype_display() else BLANK_VALUE,
        get_translation(luy_initial.get('internship_subtype')),
        volume_format(Decimal(luy_initial['credits'])) if luy_initial.get('credits') else BLANK_VALUE,
        language.name if language else BLANK_VALUE,
        dict(PERIODICITY_TYPES)[luy_initial['periodicity']] if luy_initial.get('periodicity') else BLANK_VALUE,
        get_translation(luy_initial.get('quadrimester')),
        get_translation(luy_initial.get('session')),
        get_representing_string(lcy_initial.get('common_title')),
        get_representing_string(luy_initial.get('specific_title')),
        get_representing_string(lcy_initial.get('common_title_english')),
        get_representing_string(luy_initial.get('specific_title_english')),
        requirement_entity.most_recent_acronym if requirement_entity else BLANK_VALUE,
        allocation_entity.most_recent_acronym if allocation_entity else BLANK_VALUE,
        add1_requirement_entity.most_recent_acronym if add1_requirement_entity else BLANK_VALUE,
        add2_requirement_entity.most_recent_acronym if add2_requirement_entity else BLANK_VALUE,
        _('Yes') if luy_initial.get('professional_integration') else _('No'),
        organization.name if organization else BLANK_VALUE,
        campus if campus else BLANK_VALUE,
        get_representing_string(lu_initial.get('faculty_remark')),
        get_representing_string(lu_initial.get('other_remark')),
        _('Yes') if lcy_initial.get('team') else _('No'),
        _('Yes') if lcy_initial.get('is_vacant') else _('No'),
        dict(vacant_declaration_type.DECLARATION_TYPE)[lcy_initial.get('type_declaration_vacant')] if lcy_initial.get(
            'type_declaration_vacant') else BLANK_VALUE,
        dict(attribution_procedure.ATTRIBUTION_PROCEDURES)[luy_initial.get('attribution_procedure')] if luy_initial.get(
            'attribution_procedure') else BLANK_VALUE,
    ]
    return _get_data_from_components_initial_data(data, initial_data)