Beispiel #1
0
def manager_informations_add_person(request):
    if request.method == "POST":
        form = ManagerAddAdviserPerson(request.POST)
        if form.is_valid():
            person = Person(**form.cleaned_data,
                            source=person_source_type.DISSERTATION)
            person.save()
            adv = adviser.add(person, 'PRF', False, False, False, '')
            return redirect('manager_informations_detail', pk=adv.pk)
    else:
        form = ManagerAddAdviserPerson()
    return render(request, 'manager_information_add_person.html',
                  {'form': form})
Beispiel #2
0
def _create_update_person(user, person, user_infos):
    if not person:
        person = find_by_user(user)
    if not person:
        person = Person(user=user,
                        global_id=user_infos.get('USER_FGS'),
                        first_name=user_infos.get('USER_FIRST_NAME'),
                        last_name=user_infos.get('USER_LAST_NAME'),
                        email=user_infos.get('USER_EMAIL'))
        person.save()
        person_created.send(sender=None, person=person)
    else:
        updated, person = _update_person_if_necessary(
            person, user, user_infos.get('USER_FGS'))
    return person
Beispiel #3
0
 def test_necessary_update(self):
     user = get_or_create_user(self.user_infos)
     person = Person(user=None, first_name="user3", last_name="user3", email='*****@*****.**', global_id="1111111")
     updated, updated_person = mdl_signals._update_person_if_necessary(user=user,
                                                                       person=person,
                                                                       global_id=self.user_infos.get('USER_FGS'))
     self.assertTrue(updated)
     assert_person_match_user_infos(self, updated_person, self.user_infos)
Beispiel #4
0
 def test_unnecessary_update(self):
     user = get_or_create_user(self.user_infos)
     person = Person(user=user,
                     first_name=self.user_infos.get('USER_FIRST_NAME'),
                     last_name=self.user_infos.get('USER_LAST_NAME'),
                     email=self.user_infos.get('USER_EMAIL'),
                     global_id=self.user_infos.get('USER_FGS'))
     updated, updated_person = mdl_signals._update_person_if_necessary(user=user,
                                                                       person=person,
                                                                       global_id=self.user_infos.get('USER_FGS'))
     self.assertFalse(updated)
     assert_person_match_user_infos(self, updated_person, self.user_infos)
Beispiel #5
0
def get_or_create_person(user=None, first_name=None, global_id=None):
    person = None
    created = False
    if user:
        person = mdl_person.find_by_user(user)
    if not person and global_id:
        person = mdl_person.find_by_global_id(global_id)
    if not person:
        person = Person(user=user, first_name=first_name, global_id=global_id)
        created = True
    if created:
        person.user = user
        person.first_name = first_name
        person.global_id = global_id
    person.save()
    return person
Beispiel #6
0
    def test_should_give_warning_messages_when_volume_partim_superior_to_volume_parent(
            self):
        self.charge_lecturing_1.allocation_charge = 50
        self.charge_lecturing_1.save()

        msgs = get_charge_repartition_warning_messages(
            self.full_luy.learning_container_year)
        tutor_name = Person.get_str(
            self.attribution_full.tutor.person.first_name,
            self.attribution_full.tutor.person.middle_name,
            self.attribution_full.tutor.person.last_name)
        tutor_name_with_function = "{} ({})".format(
            tutor_name, _(self.attribution_full.get_function_display()))
        self.assertListEqual(msgs, [
            _("The sum of volumes for the partims for professor %(tutor)s is superior to the "
              "volume of full UE for this professor") % {
                  "tutor": tutor_name_with_function
              }
        ])
Beispiel #7
0
def get_charge_repartition_warning_messages(learning_container_year):
    total_charges_by_attribution_and_learning_subtype = AttributionChargeNew.objects \
        .filter(attribution__learning_container_year=learning_container_year) \
        .order_by("attribution__tutor", "attribution__function", "attribution__start_year") \
        .values("attribution__tutor", "attribution__tutor__person__first_name",
                "attribution__tutor__person__middle_name", "attribution__tutor__person__last_name",
                "attribution__function", "attribution__start_year",
                "learning_component_year__learning_unit_year__subtype") \
        .annotate(total_volume=Sum("allocation_charge"))

    charges_by_attribution = itertools.groupby(
        total_charges_by_attribution_and_learning_subtype,
        lambda rec: "{}_{}_{}".format(rec["attribution__tutor"], rec[
            "attribution__start_year"], rec["attribution__function"]))
    msgs = []
    for attribution_key, charges in charges_by_attribution:
        charges = list(charges)
        subtype_key = "learning_component_year__learning_unit_year__subtype"
        full_total_charges = next(
            (charge["total_volume"] for charge in charges
             if charge[subtype_key] == learning_unit_year_subtypes.FULL), 0)
        partim_total_charges = next(
            (charge["total_volume"] for charge in charges
             if charge[subtype_key] == learning_unit_year_subtypes.PARTIM), 0)
        partim_total_charges = partim_total_charges or 0
        full_total_charges = full_total_charges or 0
        if partim_total_charges > full_total_charges:
            tutor_name = Person.get_str(
                charges[0]["attribution__tutor__person__first_name"],
                charges[0]["attribution__tutor__person__middle_name"],
                charges[0]["attribution__tutor__person__last_name"])
            tutor_name_with_function = "{} ({})".format(
                tutor_name,
                getattr(Functions, charges[0]["attribution__function"]).value)
            msg = _(
                "The sum of volumes for the partims for professor %(tutor)s is superior to the "
                "volume of parent learning unit for this professor") % {
                    "tutor": tutor_name_with_function
                }
            msgs.append(msg)
    return msgs
Beispiel #8
0
def get_or_create_person(user=None, first_name=None, global_id=None):
    person = None
    created = False
    if user:
        person = mdl_person.find_by_user(user)
    if not person and global_id:
        person = mdl_person.find_by_global_id(global_id)
    if not person:
        person = Person(user=user, first_name=first_name, global_id=global_id)
        created = True
    if created:
        person.user = user
        person.first_name = first_name
        person.global_id = global_id
    person.save()
    return person
Beispiel #9
0
def email_destination_person():
    return Person(last_name='Test user', gender='M', email='person@localhost')