Browse Source

Torna assunto norma um MasterDetail

pull/772/head
Eduardo Edson Batista Cordeiro Alves 8 years ago
parent
commit
b620f218c0
  1. 23
      sapl/norma/forms.py
  2. 7
      sapl/norma/models.py
  3. 9
      sapl/norma/urls.py
  4. 17
      sapl/norma/views.py
  5. 5
      sapl/templates/norma/layouts.yaml
  6. 4
      sapl/templates/norma/subnav.yaml

23
sapl/norma/forms.py

@ -8,7 +8,8 @@ from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.materia.models import (AssuntoNormaRelationship, MateriaLegislativa,
TipoMateriaLegislativa)
from sapl.settings import MAX_DOC_UPLOAD_SIZE
from sapl.utils import RANGE_ANOS
@ -30,6 +31,26 @@ ORDENACAO_CHOICES = [('', '---------'),
('data,tipo,ano,numero', _('Data/Tipo/Ano/Número'))]
class AssuntoNormaRelationshipForm(ModelForm):
class Meta:
model = AssuntoNormaRelationship
fields = ['assunto']
def clean(self):
cleaned_data = self.cleaned_data
import ipdb; ipdb.set_trace()
# try:
# comissao = Comissao.objects.get(id=self.initial['comissao'])
# except ObjectDoesNotExist:
# msg = _('A localização atual deve ser uma comissão.')
# raise ValidationError(msg)
# else:
# cleaned_data['comissao'] = comissao
return cleaned_data
# TODO termos, pesquisa textual, assunto(M2M)
class NormaJuridicaPesquisaForm(ModelForm):

7
sapl/norma/models.py

@ -143,6 +143,13 @@ class AssuntoNormaRelationship(models.Model):
('assunto', 'norma'),
)
class Meta:
verbose_name = _('Assunto')
verbose_name_plural = _('Assuntos')
def __str__(self):
return self.assunto
class LegislacaoCitada(models.Model):
materia = models.ForeignKey(MateriaLegislativa)

9
sapl/norma/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url
from sapl.norma.views import (AssuntoNormaCrud, NormaCrud, NormaPesquisaView,
NormaTaView, PesquisaNormaListView,
TipoNormaCrud)
from sapl.norma.views import (AssuntoNormaCrud, AssuntoNormaRelationshipCrud,
NormaCrud, NormaPesquisaView, NormaTaView,
PesquisaNormaListView, TipoNormaCrud)
from .apps import AppConfig
@ -10,7 +10,8 @@ app_name = AppConfig.name
urlpatterns = [
url(r'^norma/', include(NormaCrud.get_urls())),
url(r'^norma/', include(NormaCrud.get_urls() +
AssuntoNormaRelationshipCrud.get_urls())),
# Integração com Compilação
url(r'^norma/(?P<pk>[0-9]+)/ta$', NormaTaView.as_view(), name='norma_ta'),

17
sapl/norma/views.py

@ -7,11 +7,13 @@ from django.views.generic.base import RedirectView
from sapl.base.models import AppConfig
from sapl.compilacao.views import IntegracaoTaView
from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, make_pagination
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud, make_pagination)
from sapl.norma.forms import NormaJuridicaForm
from .forms import NormaJuridicaPesquisaForm
from .models import AssuntoNorma, NormaJuridica, TipoNormaJuridica
from .models import (AssuntoNorma, AssuntoNormaRelationship, NormaJuridica,
TipoNormaJuridica)
# LegislacaoCitadaCrud = Crud.build(LegislacaoCitada, '')
AssuntoNormaCrud = CrudAux.build(AssuntoNorma, 'assunto_norma_juridica',
@ -39,6 +41,17 @@ class NormaTaView(IntegracaoTaView):
return self.get_redirect_deactivated()
class AssuntoNormaRelationshipCrud(MasterDetailCrud):
model = AssuntoNormaRelationship
parent_field = 'norma'
help_path = ''
public = [RP_LIST, RP_DETAIL]
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['assunto']
ordering = 'assunto'
class NormaCrud(Crud):
model = NormaJuridica
help_path = 'norma_juridica'

5
sapl/templates/norma/layouts.yaml

@ -1,4 +1,9 @@
{% load i18n %}
AssuntoNormaRelationship:
{% trans 'Assunto Norma Jurídica' %}:
- assunto
AssuntoNorma:
{% trans 'Assunto Norma Jurídica' %}:
- assunto descricao

4
sapl/templates/norma/subnav.yaml

@ -1,11 +1,15 @@
{% load i18n common_tags%}
- title: {% trans 'Início' %}
url: normajuridica_detail
- title: {% trans 'Assuntos' %}
url: assuntonormarelationship_list
# Opção adicionada para chamar o TextoArticulado da norma.
# para integração foram necessárias apenas criar a url norma_ta em urls.py
# e a view NormaTaView(IntegracaoTaView) em views.py
# Em nada mais a integração interfere em NormaJuridica
{% if 'texto_articulado_norma'|get_config_attr %}
- title: {% trans 'Texto' %}
url: norma_ta

Loading…
Cancel
Save