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 django.utils.translation import ugettext_lazy as _
from sapl.crispy_layout_mixin import form_actions, to_row 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.settings import MAX_DOC_UPLOAD_SIZE
from sapl.utils import RANGE_ANOS from sapl.utils import RANGE_ANOS
@ -30,6 +31,26 @@ ORDENACAO_CHOICES = [('', '---------'),
('data,tipo,ano,numero', _('Data/Tipo/Ano/Número'))] ('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) # TODO termos, pesquisa textual, assunto(M2M)
class NormaJuridicaPesquisaForm(ModelForm): class NormaJuridicaPesquisaForm(ModelForm):

7
sapl/norma/models.py

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

9
sapl/norma/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from sapl.norma.views import (AssuntoNormaCrud, NormaCrud, NormaPesquisaView, from sapl.norma.views import (AssuntoNormaCrud, AssuntoNormaRelationshipCrud,
NormaTaView, PesquisaNormaListView, NormaCrud, NormaPesquisaView, NormaTaView,
TipoNormaCrud) PesquisaNormaListView, TipoNormaCrud)
from .apps import AppConfig from .apps import AppConfig
@ -10,7 +10,8 @@ app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^norma/', include(NormaCrud.get_urls())), url(r'^norma/', include(NormaCrud.get_urls() +
AssuntoNormaRelationshipCrud.get_urls())),
# Integração com Compilação # Integração com Compilação
url(r'^norma/(?P<pk>[0-9]+)/ta$', NormaTaView.as_view(), name='norma_ta'), 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.base.models import AppConfig
from sapl.compilacao.views import IntegracaoTaView 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 sapl.norma.forms import NormaJuridicaForm
from .forms import NormaJuridicaPesquisaForm from .forms import NormaJuridicaPesquisaForm
from .models import AssuntoNorma, NormaJuridica, TipoNormaJuridica from .models import (AssuntoNorma, AssuntoNormaRelationship, NormaJuridica,
TipoNormaJuridica)
# LegislacaoCitadaCrud = Crud.build(LegislacaoCitada, '') # LegislacaoCitadaCrud = Crud.build(LegislacaoCitada, '')
AssuntoNormaCrud = CrudAux.build(AssuntoNorma, 'assunto_norma_juridica', AssuntoNormaCrud = CrudAux.build(AssuntoNorma, 'assunto_norma_juridica',
@ -39,6 +41,17 @@ class NormaTaView(IntegracaoTaView):
return self.get_redirect_deactivated() 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): class NormaCrud(Crud):
model = NormaJuridica model = NormaJuridica
help_path = 'norma_juridica' help_path = 'norma_juridica'

5
sapl/templates/norma/layouts.yaml

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

4
sapl/templates/norma/subnav.yaml

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

Loading…
Cancel
Save