def test_edit_post_formation_found(self):
        address = AddressFactory()
        ed = EducationGroupFactory()
        EducationGroupYearFactory(education_group=ed)
        cet = ContinuingEducationTrainingFactory(postal_address=None,
                                                 education_group=ed)
        cet_dict = model_to_dict(cet)
        cet_dict['training_aid'] = not cet.training_aid
        cet_dict['active'] = not cet.active
        cet_dict['postal_address'] = model_to_dict(address)

        form = ContinuingEducationTrainingForm(cet_dict)
        form.is_valid()
        url = reverse('formation_edit', args=[cet.pk])
        response = self.client.post(url, data=form.cleaned_data)

        self.assertRedirects(
            response, reverse('formation_detail',
                              args=[cet.education_group.id]))
        cet.refresh_from_db()

        # verifying that fields are correctly updated
        for key in form.cleaned_data.keys():
            field_value = cet.__getattribute__(key)
            self.assertEqual(field_value, cet_dict[key])
 def test_valid_form_for_continuing_education_managers(self):
     self.manager = ContinuingEducationManagerFactory()
     self.client.force_login(self.manager.person.user)
     data = self.formation.__dict__
     data['formation'] = self.formation.pk
     form = ContinuingEducationTrainingForm(data=data, user=self.manager.person.user)
     self.assertTrue(form.is_valid(), form.errors)
def formation_edit(request, formation_id):
    formation = get_object_or_404(ContinuingEducationTraining, pk=formation_id)
    if _can_edit_formation(request, formation):
        form = ContinuingEducationTrainingForm(request.POST or None,
                                               user=request.user,
                                               instance=formation)
        address_form = AddressForm(request.POST or None,
                                   instance=formation.postal_address)
        if all([form.is_valid(), address_form.is_valid()]):
            address = address_form.save()
            formation = form.save(commit=False)
            formation.postal_address = address
            formation.save()
            return redirect(
                reverse('formation_detail',
                        kwargs={'formation_id': formation.education_group.id}))
        return render(request, "formation_form.html", {
            'formation': formation,
            'form': form,
            'address_form': address_form
        })
    else:
        display_error_messages(
            request, _("You are not authorized to edit this training"))
        return redirect(
            reverse('formation_detail',
                    kwargs={'formation_id': formation.education_group.id}))
示例#4
0
 def test_disabled_fields_for_training_managers(self):
     self.training_manager = PersonWithPermissionsFactory(
         groups='continuing_education_training_managers')
     self.client.force_login(self.training_manager.user)
     form = ContinuingEducationTrainingForm(data=None,
                                            user=self.training_manager.user)
     self.assertTrue(form['active'].field.disabled)
示例#5
0
def formation_edit(request, formation_id):
    formation = get_object_or_404(
        ContinuingEducationTraining.objects.select_related('postal_address', 'education_group'),
        pk=formation_id
    )
    form = ContinuingEducationTrainingForm(request.POST or None, user=request.user, instance=formation)
    address_form = AddressForm(request.POST or None, instance=formation.postal_address)
    if all([form.is_valid(), address_form.is_valid()]):
        address = address_form.save()
        formation = form.save(commit=False)
        formation.postal_address = address
        formation.save()
        return redirect(reverse('formation_detail', kwargs={'formation_id': formation.education_group.id}))
    return render(
        request,
        "formation_form.html",
        {
            'formation': formation,
            'form': form,
            'address_form': address_form
        }
    )