Browse Source

Documento acessorio de audiencia publica

pull/2319/head
AndreSouto 7 years ago
parent
commit
c096835c91
  1. 16
      sapl/audiencia/forms.py
  2. 47
      sapl/audiencia/models.py
  3. 5
      sapl/audiencia/urls.py
  4. 45
      sapl/audiencia/views.py

16
sapl/audiencia/forms.py

@ -2,7 +2,7 @@ from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction
from django.utils.translation import ugettext_lazy as _
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica, AnexoAudienciaPublica
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.utils import timezone
@ -102,3 +102,17 @@ class AudienciaForm(forms.ModelForm):
raise ValidationError(msg)
return cleaned_data
class AnexoAudienciaPublicaForm(forms.ModelForm):
class Meta:
model = AnexoAudienciaPublica
fields = ['nome',
'data',
'arquivo',
'assunto']
widgets = {
'data': forms.DateInput(format='%d/%m/%Y')
}

47
sapl/audiencia/models.py

@ -143,6 +143,53 @@ class AudienciaPublica(models.Model):
self.upload_ata = upload_ata
self.upload_anexo = upload_anexo
return models.Model.save(self, force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields)
@reversion.register()
class AnexoAudienciaPublica(models.Model):
audiencia = models.ForeignKey(AudienciaPublica,
on_delete=models.PROTECT)
nome = models.CharField(max_length=30, verbose_name=_('Nome'))
arquivo = models.FileField(
blank=True,
null=True,
upload_to=texto_upload_path,
verbose_name=_('Arquivo'))
data = models.DateField(blank=True, null=True, verbose_name=_('Data'))
assunto = models.TextField(
blank=True, verbose_name=_('Assunto'))
indexacao = models.TextField(blank=True)
class Meta:
verbose_name = _('Documento Acessório')
verbose_name_plural = _('Documentos Acessórios')
def __str__(self):
return self.nome
def delete(self, using=None, keep_parents=False):
if self.arquivo:
self.arquivo.delete()
return models.Model.delete(
self, using=using, keep_parents=keep_parents)
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
if not self.pk and self.arquivo:
arquivo = self.arquivo
self.arquivo = None
models.Model.save(self, force_insert=force_insert,
force_update=force_update,
using=using,
update_fields=update_fields)
self.arquivo = arquivo
return models.Model.save(self, force_insert=force_insert,
force_update=force_update,
using=using,

5
sapl/audiencia/urls.py

@ -1,10 +1,11 @@
from django.conf.urls import include, url
from sapl.audiencia.views import (index, AudienciaCrud)
from sapl.audiencia.views import (index, AudienciaCrud,AnexoAudienciaPublicaCrud)
from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^audiencia/', include(AudienciaCrud.get_urls())),
url(r'^audiencia/', include(AudienciaCrud.get_urls() +
AnexoAudienciaPublicaCrud.get_urls())),
]

45
sapl/audiencia/views.py

@ -2,10 +2,10 @@ from django.http import HttpResponse
from django.core.urlresolvers import reverse
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import UpdateView
from sapl.crud.base import RP_DETAIL, RP_LIST, Crud
from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, MasterDetailCrud
from .forms import AudienciaForm
from .models import AudienciaPublica
from .forms import AudienciaForm, AnexoAudienciaPublicaForm
from .models import AudienciaPublica, AnexoAudienciaPublica
def index(request):
@ -18,7 +18,7 @@ class AudienciaCrud(Crud):
class BaseMixin(Crud.BaseMixin):
list_field_names = ['numero', 'nome', 'tipo', 'materia',
'data']
'data']
ordering = 'nome', 'numero', 'tipo', 'data'
class ListView(Crud.ListView):
@ -69,4 +69,41 @@ class AudienciaCrud(Crud):
def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs)
class AudienciaMixin:
def has_permission(self):
app_config = sapl.base.models.AppConfig.objects.last()
if app_config and app_config.documentos_administrativos == 'O':
return True
return super().has_permission()
class AnexoAudienciaPublicaCrud(MasterDetailCrud):
model = AnexoAudienciaPublica
parent_field = 'documento'
help_topic = 'numeracao_docsacess'
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['nome',
'data',
'assunto']
class CreateView(MasterDetailCrud.CreateView):
form_class = AnexoAudienciaPublicaForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = AnexoAudienciaPublicaForm
class ListView(AudienciaMixin, MasterDetailCrud.ListView):
def get_queryset(self):
qs = super(MasterDetailCrud.ListView, self).get_queryset()
kwargs = {self.crud.parent_field: self.kwargs['pk']}
return qs.filter(**kwargs).order_by('-data', '-id')
class DetailView(AudienciaMixin,
MasterDetailCrud.DetailView):
pass
Loading…
Cancel
Save