class FacturaProveedorCategoriaCreateView(PermissionRequiredMixin,
                                          SuccessMessageMixin, CreateView):
    """Vista que agrega una categoría de factura."""

    form_class = FacturaProveedorCategoriaForm
    model = FacturaProveedorCategoria
    permission_required = 'core.add_facturaproveedorcategoria'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_CREATED.format('categoría de factura')

    def get_success_url(self):
        """Luego de agregar al objecto redirecciono a la vista que tiene permiso."""
        if self.request.user.has_perm('core.change_facturaproveedorcategoria'):
            return reverse('core:facturaproveedorcategoria-update',
                           args=(self.object.id, ))
        if self.request.user.has_perm('core.view_facturaproveedorcategoria'):
            return reverse('core:facturaproveedorcategoria-detail',
                           args=(self.object.id, ))
        if self.request.user.has_perm('core.list_facturaproveedorcategoria'):
            return reverse('core:facturaproveedorcategoria-list')
        return reverse('core:home')

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')
Ejemplo n.º 2
0
class FacturaCreateView(PermissionRequiredMixin, SuccessMessageMixin,
                        CreateView):
    """Vista para agregar una factura."""

    form_class = FacturaForm
    model = Factura
    permission_required = 'core.add_factura'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_CREATED.format('factura del cliente')
    template_name = 'core/facturacliente_form.html'

    def get_form_kwargs(self):
        """Envía parámetros extras al formulario."""
        kwargs = super().get_form_kwargs()
        kwargs['user'] = self.request.user
        return kwargs

    def get_success_url(self):
        """Luego de agregar al objecto redirecciono a la vista que tiene permiso."""
        if self.request.user.has_perm('core.change_factura'):
            return reverse('core:factura-update', args=(self.object.id, ))
        if self.request.user.has_perm('core.view_factura'):
            return reverse('core:factura-detail', args=(self.object.id, ))
        if self.request.user.has_perm('core.list_factura'):
            return reverse('core:factura-list')
        return reverse('core:home')

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')