コード例 #1
0
    def post(self, request, **kwargs):
        unit_data_object = self.get_object()

        vehicles_update_formset = VehicleUpdateFormSet(
            self.request.POST,
            prefix='vehicles',
            queryset=Vehicle.objects.filter(
                unit=unit_data_object.unit,
            ),
        )

        # Disable the vehicles update form.
        unit_data_object.vehicles_update = False
        unit_data_object.save()

        # Update, delete or create new vehicles instances for this unit.
        process_unit_formset(vehicles_update_formset, unit_data_object.unit)

        messages.success(
            self.request,
            _('Gracias por actualizar los datos sobre vehículos registrados.')
        )

        if unit_data_object.residents_update_enabled:
            return redirect(
                'buildings:residents_update_form',
                self.get_object().unit.id,
                self.kwargs['verify_key'],
            )

        # Remove edit permission.
        unit_data_object.enable_residents_update = False
        unit_data_object.save()

        return redirect('home')
コード例 #2
0
    def post(self, request, **kwargs):
        unit_data_object = self.get_object()

        pets_update_formset = PetUpdateFormSet(
            self.request.POST,
            prefix='pets',
            queryset=Pet.objects.filter(
                unit=unit_data_object.unit,
            ),
        )

        # Disable the domestic workers update form.
        unit_data_object.pets_update = False
        unit_data_object.save()

        # Update, delete or create new pets
        # instances for this unit.
        process_unit_formset(
            pets_update_formset,
            unit_data_object.unit,
        )

        messages.success(
            self.request,
            _('Gracias por actualizar los datos sobre las mascotas.')
        )

        if unit_data_object.residents_update_enabled:
            return redirect(
                'buildings:residents_update_form',
                self.get_object().unit.id,
                self.kwargs['verify_key'],
            )

        # Remove edit permission.
        unit_data_object.enable_residents_update = False
        unit_data_object.save()

        return redirect('home')
コード例 #3
0
    def post(self, *args, **kwargs):
        unit = self.get_object()

        form = UnitForm(
            self.request.POST,
            instance=unit,
        )
        owner_formset = OwnerFormSet(
            self.request.POST,
            prefix='owner',
            queryset=Owner.objects.filter(unit=unit),
        )
        leaseholder_formset = LeaseholderFormSet(
            self.request.POST,
            prefix='leaseholder',
            queryset=Leaseholder.objects.filter(unit=unit),
        )

        # Check if unit form, owners formset and
        # leaseholders formset are valid. If not,
        # error messages are returned to the user.
        # It the forms are valid, the data will be
        # processed by the 'process_data' function.
        if (not form.is_valid() or not owner_formset.is_valid()
                or not leaseholder_formset.is_valid()):
            return self.render_to_response(
                self.get_context_data(
                    form=form,
                    owner_formset=owner_formset,
                    leaseholder_formset=leaseholder_formset,
                ))

        # Validate the number of form with 'is_main' field
        # checked. If there are not forms checked or there
        # are more than one, an error message must be raised.
        #  Units must have one main owner.
        form, owner_formset, is_main_owner_counter = validate_is_main_formset(
            form=form,
            formset=owner_formset,
            formset_type='owner',
        )

        # Validate the number of form with 'is_main' field
        # checked. If there  are more than one, an error
        # message must be raised. Units must have only one
        # main leaseholder.
        form, leaseholder_formset, is_main_leaseholder_counter = validate_is_main_formset(
            form=form,
            formset=leaseholder_formset,
            formset_type='leaseholder',
        )

        # Return formsets errors.
        if (not is_main_owner_counter or is_main_owner_counter > 1
                or is_main_leaseholder_counter > 1):
            return self.render_to_response(
                self.get_context_data(
                    form=form,
                    owner_formset=owner_formset,
                    leaseholder_formset=leaseholder_formset,
                ))

        # Save unit form data.
        unit = form.save()
        # Update, delete or create new Owner instances for this unit.
        process_unit_formset(owner_formset, unit)

        # Process leaseholders formset only if
        # owners are not residents of the unit.
        if not unit.owner_set.filter(is_resident=True):
            # Update, delete or create new Leaseholder instances for this unit.
            process_unit_formset(leaseholder_formset, unit)

        messages.success(
            self.request,
            _('Unidad actualizada correctamente.'),
        )

        return redirect(unit.get_absolute_url())