def _get_academic_end_year(self, end_postponement):
     if end_postponement is None:
         if self.learning_unit_instance and self.learning_unit_instance.end_year:
             end_postponement = academic_year.find_academic_year_by_year(self.learning_unit_instance.end_year)
         elif self.learning_unit_full_instance and self.learning_unit_full_instance.end_year:
             end_postponement = academic_year.find_academic_year_by_year(self.learning_unit_full_instance.end_year)
     return end_postponement
Example #2
0
 def _get_academic_end_year(self, end_postponement):
     if end_postponement is None:
         if self.learning_unit_instance and self.learning_unit_instance.end_year:
             end_postponement = academic_year.find_academic_year_by_year(self.learning_unit_instance.end_year)
         elif self.learning_unit_full_instance and self.learning_unit_full_instance.end_year:
             end_postponement = academic_year.find_academic_year_by_year(self.learning_unit_full_instance.end_year)
     return end_postponement
Example #3
0
def _get_calendar(academic_yr, an_entity_version):
    a_calendar = get_entity_calendar(an_entity_version, academic_yr)
    if a_calendar is None:
        an_academic_calendar = find_academic_year_by_year(academic_yr.year)
        if an_academic_calendar:
            return an_academic_calendar
    return a_calendar
Example #4
0
    def __init__(self,
                 person,
                 start_postponement,
                 end_postponement=None,
                 learning_unit_instance=None,
                 learning_unit_full_instance=None,
                 data=None,
                 check_consistency=True):
        self.check_input_instance(learning_unit_full_instance,
                                  learning_unit_instance)

        self.learning_unit_instance = learning_unit_instance
        self.learning_unit_full_instance = learning_unit_full_instance
        self.subtype = learning_unit_year_subtypes.PARTIM if learning_unit_full_instance else \
            learning_unit_year_subtypes.FULL
        self.start_postponement = start_postponement
        self.person = person
        self.check_consistency = check_consistency

        # end_year can be given by the request (eg: for partims)
        end_year = data and data.get('end_year')
        if end_year:
            end_postponement = academic_year.find_academic_year_by_year(
                end_year)

        self.end_postponement = self._get_academic_end_year(end_postponement)
        self._compute_forms_to_insert_update_delete(data)
Example #5
0
def _get_actual_end_year(learning_unit_to_edit):
    proposal = ProposalLearningUnit.objects.filter(
        learning_unit_year__learning_unit=learning_unit_to_edit).first()
    end_year_lu = proposal.initial_data.get('learning_unit').get('end_year') if proposal \
        else learning_unit_to_edit.end_year
    return end_year_lu or academic_year.find_academic_year_by_year(
        compute_max_academic_year_adjournment() + 1)
Example #6
0
def _decrement_end_year_learning_unit(learning_unit_year):
    learning_unit_to_edit = learning_unit_year.learning_unit

    start_year = learning_unit_to_edit.start_year
    new_end_year = learning_unit_year.academic_year.year - 1
    if new_end_year >= start_year.year:
        learning_unit_to_edit.end_year = academic_year.find_academic_year_by_year(new_end_year)
        learning_unit_to_edit.save()
Example #7
0
 def max_end_year(self):
     """ Compute the maximal possible end_year value when the end_year is None """
     if self.end_year:
         return self.end_year
     end_year = AcademicYear.objects.filter(
         learningunityear__learning_unit=self).aggregate(
             Max('year'))['year__max']
     return academic_year.find_academic_year_by_year(end_year)
Example #8
0
def get_academic_year_postponement_range(luy):
    end_postponement = academic_year.find_academic_year_by_year(
        luy.learning_unit.end_year.year
    ) if luy.learning_unit and luy.learning_unit.end_year else None
    max_postponement_year = compute_max_postponement_year(
        luy.learning_unit, luy.subtype, end_postponement)
    academic_year_postponement_range = AcademicYear.objects.min_max_years(
        luy.academic_year.year + 1, max_postponement_year)
    return academic_year_postponement_range
Example #9
0
def export_mandates_for_entity(request: http.HttpRequest, year: int):
    mandates = assistant_mandate.AssistantMandate.objects.filter(
        mandateentity__entity__in=reviewer.find_by_person(
            find_by_user(request.user)).values_list("entity", flat=True),
        academic_year=academic_year.find_academic_year_by_year(year)).order_by(
            'assistant__person__last_name')
    if mandates:
        return build_doc(request, mandates)
    return HttpResponseRedirect(reverse('reviewer_mandates_list'))
Example #10
0
def export_mandates_for_entity(request, year):
    current_reviewer = reviewer.find_by_person(find_by_user(request.user))
    mandates = find_mandates_for_academic_year_and_entity(
        academic_year.find_academic_year_by_year(year),
        current_reviewer.entity)
    if mandates:
        return build_doc(request, mandates)
    else:
        return HttpResponseRedirect(reverse('reviewer_mandates_list'))
def export_mandates_for_entity(request, year):
    current_reviewer = reviewer.find_by_person(find_by_user(request.user))
    mandates = find_mandates_for_academic_year_and_entity(
        academic_year.find_academic_year_by_year(year),
        current_reviewer.entity
    )
    if mandates:
        return build_doc(request, mandates)
    else:
        return HttpResponseRedirect(reverse('reviewer_mandates_list'))
Example #12
0
def _consolidate_suppression_proposal_accepted(proposal):
    initial_end_year = proposal.initial_data["learning_unit"]["end_year"]
    new_end_year = proposal.learning_unit_year.learning_unit.end_year

    proposal.learning_unit_year.learning_unit.end_year = initial_end_year
    new_academic_year = find_academic_year_by_year(new_end_year)
    try:
        results = {SUCCESS: edit_learning_unit_end_date(proposal.learning_unit_year.learning_unit, new_academic_year)}
    except IntegrityError as err:
        results = {ERROR: err.args[0]}
    return results
Example #13
0
 def setUp(self):
     self.client = Client()
     self.request = self.client.post('/assistants/manager/mandates/upload/')
     self.request._messages = FakeMessages()
     self.manager = ManagerFactory()
     self.client.force_login(self.manager.person.user)
     self.request.user = self.manager.person.user
     now = timezone.now()
     AcademicYearFactory.produce_in_past()
     self.previous_academic_year = academic_year.find_academic_year_by_year(now.year - 2)
     self.person1 = PersonFactory(global_id='00201968')
     self.assistant1 = AcademicAssistantFactory(person=self.person1)
     self.record1 = {
         'SECTOR': 'SST', 'LOGISTICS_ENTITY': 'None', 'FACULTY': 'SC', 'SCHOOL': 'CHIM', 'INSTITUTE': 'IMCN',
         'POLE': 'MOST', 'SAP_ID': '1122199', 'GLOBAL_ID': '1122199', 'LAST_NAME': self.assistant1.person.last_name,
         'FIRST_NAME': self.assistant1.person.first_name, 'FULLTIME_EQUIVALENT': '1', 'ENTRY_DATE': '01/02/2015',
         'END_DATE': '03-10-2017', 'ASSISTANT_TYPE_CODE': 'ST', 'SCALE': '021', 'CONTRACT_DURATION': '4',
         'CONTRACT_DURATION_FTE': '4', 'RENEWAL_TYPE': 'NORMAL', 'ABSENCES': None, 'COMMENT': None,
         'OTHER_STATUS': None, 'EMAIL': None, 'FGS': '00201968'
     }
     self.person2 = PersonFactory(global_id='00201979')
     self.assistant2 = AcademicAssistantFactory()
     self.record2 = {
         'SECTOR': 'SST', 'LOGISTICS_ENTITY': 'None', 'FACULTY': 'SC', 'SCHOOL': 'CHIM', 'INSTITUTE': 'IMCN',
         'POLE': 'MOST', 'SAP_ID': '1122199', 'GLOBAL_ID': '1122199', 'LAST_NAME': self.person2.last_name,
         'FIRST_NAME': self.person2.first_name, 'FULLTIME_EQUIVALENT': '1', 'ENTRY_DATE': '01/02/2015',
         'END_DATE': '03-10-2017', 'ASSISTANT_TYPE_CODE': 'AS', 'SCALE': '021', 'CONTRACT_DURATION': '4',
         'CONTRACT_DURATION_FTE': '4', 'RENEWAL_TYPE': 'exceptional', 'ABSENCES': None, 'COMMENT': None,
         'OTHER_STATUS': None, 'EMAIL': None, 'FGS': '00201979'
     }
     self.assistant3 = AcademicAssistantFactory()
     self.record3 = {
         'SECTOR': 'SST', 'LOGISTICS_ENTITY': 'None', 'FACULTY': 'SC', 'SCHOOL': 'CHIM', 'INSTITUTE': 'IMCN',
         'POLE': 'MOST', 'SAP_ID': '1122599', 'GLOBAL_ID': '1322199', 'LAST_NAME': 'last_name',
         'FIRST_NAME': 'first_name', 'FULLTIME_EQUIVALENT': '1', 'ENTRY_DATE': '01/02/2015',
         'END_DATE': '03-10-2017', 'ASSISTANT_TYPE_CODE': 'AS', 'SCALE': '021', 'CONTRACT_DURATION': '4',
         'CONTRACT_DURATION_FTE': '4', 'RENEWAL_TYPE': 'SPECIAL', 'ABSENCES': None, 'COMMENT': None,
         'OTHER_STATUS': None, 'EMAIL': None, 'FGS': None
     }
     self.entity_version1 = EntityVersionFactory(entity_type=entity_type.SECTOR,
                                                 acronym='SST',
                                                 title='Secteur des Sciences et Technologies',
                                                 end_date=datetime.datetime(datetime.date.today().year + 1, 9, 14))
     self.entity_version2 = EntityVersionFactory(entity_type=entity_type.SECTOR,
                                                 acronym='SSH',
                                                 end_date=datetime.datetime(datetime.date.today().year + 1, 9, 14))
     self.assistant_mandate1 = AssistantMandateFactory(
         assistant=self.assistant1
     )
    def __init__(self, person, start_postponement, end_postponement=None, learning_unit_instance=None,
                 learning_unit_full_instance=None, data=None, check_consistency=True,
                 external=False):
        self.check_input_instance(learning_unit_full_instance, learning_unit_instance)

        self.learning_unit_instance = learning_unit_instance
        self.learning_unit_full_instance = learning_unit_full_instance
        self.subtype = learning_unit_year_subtypes.PARTIM if learning_unit_full_instance else \
            learning_unit_year_subtypes.FULL
        self.start_postponement = start_postponement
        self.person = person
        self.check_consistency = check_consistency
        self.external = external

        # end_year can be given by the request (eg: for partims)
        end_year = data and data.get('end_year')
        if end_year:
            end_postponement = academic_year.find_academic_year_by_year(end_year)

        self.end_postponement = self._get_academic_end_year(end_postponement)
        self._compute_forms_to_insert_update_delete(data)