Browse Source

Create e List funcionando com CRUD

pull/323/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by Edward Ribeiro
parent
commit
fe02a0910c
  1. 83
      norma/forms.py
  2. 9
      norma/layouts.yaml
  3. 13
      norma/urls.py
  4. 111
      norma/views.py
  5. 4
      templates/norma/list_pesquisa.html
  6. 28
      templates/norma/normajuridica_detail.html
  7. 3
      templates/norma/normajuridica_incluir.html
  8. 36
      templates/norma/normajuridica_list.html
  9. 16
      templates/norma/pesquisa.html

83
norma/forms.py

@ -1,3 +1,5 @@
from datetime import datetime
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Fieldset, Layout
from django import forms
@ -94,23 +96,20 @@ class NormaJuridicaForm(ModelForm):
# Campos de MateriaLegislativa
tipo_materia = forms.ModelChoiceField(
label='Matéria Legislativa',
label='Matéria',
required=False,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione'
)
numero_materia = forms.CharField(label='Número',
required=False)
ano_materia = forms.ChoiceField(label='Ano',
numero_materia = forms.CharField(
label='Número Matéria',
required=False
)
ano_materia = forms.ChoiceField(
label='Ano Matéria',
required=False,
choices=RANGE_ANOS)
def clean_texto_integral(self):
texto_integral = self.cleaned_data.get('texto_integral', False)
if texto_integral:
if texto_integral.size > MAX_DOC_UPLOAD_SIZE:
raise ValidationError("Arquivo muito grande. ( > 5mb )")
return texto_integral
choices=RANGE_ANOS,
)
class Meta:
model = NormaJuridica
@ -130,55 +129,21 @@ class NormaJuridicaForm(ModelForm):
'ementa',
'indexacao',
'observacao',
'texto_integral',
]
'texto_integral']
def save(self, commit=False):
norma = super(NormaJuridicaForm, self).save(commit)
norma.timestamp = datetime.now()
def clean(self):
data = super(NormaJuridicaForm, self).clean()
if ('tipo_materia' and
'numero_materia' and
'ano_materia' in self.cleaned_data):
if self.cleaned_data['tipo_materia']:
try:
MateriaLegislativa.objects.get(
tipo=self.cleaned_data['tipo_materia'],
materia = MateriaLegislativa.objects.get(
tipo_id=self.cleaned_data['tipo_materia'],
numero=self.cleaned_data['numero_materia'],
ano=self.cleaned_data['ano_materia'])
except ObjectDoesNotExist:
msg = 'Matéria adicionada não existe!'
raise forms.ValidationError(msg)
return data
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('tipo', 4), ('numero', 4), ('ano', 4)])
row2 = crispy_layout_mixin.to_row(
[('data', 4), ('esfera_federacao', 4), ('complemento', 4)])
norma.materia = materia
row3 = crispy_layout_mixin.to_row(
[('tipo_materia', 4), ('numero_materia', 4), ('ano_materia', 4)])
row4 = crispy_layout_mixin.to_row(
[('data_publicacao', 3), ('veiculo_publicacao', 3),
('pagina_inicio_publicacao', 3), ('pagina_fim_publicacao', 3)])
row5 = crispy_layout_mixin.to_row(
[('texto_integral', 12)])
row6 = crispy_layout_mixin.to_row(
[('ementa', 12)])
row7 = crispy_layout_mixin.to_row(
[('indexacao', 12)])
row8 = crispy_layout_mixin.to_row(
[('observacao', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset('Identificação Básica',
row1, row2, row3, row4, row5, row6, row7, row8),
form_actions()
)
super(NormaJuridicaForm, self).__init__(*args, **kwargs)
norma.save()
return norma

9
norma/layouts.yaml

@ -11,18 +11,13 @@ NormaJuridica:
Identificação Básica:
- tipo numero ano
- data esfera_federacao complemento
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- tipo_materia numero_materia ano_materia
- data_publicacao veiculo_publicacao pagina_inicio_publicacao pagina_fim_publicacao
- file_FIXME tip_situacao_norma_FIXME
- texto_integral
- ementa
- indexacao
- observacao
NormaJuridica:
Identificação Básica:
- tipo:5 numero:2 ano:2 data
- ementa
LegislacaoCitada:
Legislação Citada:
- tip_norma_FIXME num_norma_FIXME ano_norma_FIXME

13
norma/urls.py

@ -1,8 +1,9 @@
from django.conf.urls import include, url
from norma.views import (AssuntoNormaCrud, NormaEditView, NormaIncluirView,
NormaPesquisaView, NormaTaView, NormaTemporarioCrud,
PesquisaNormaListView, TipoNormaCrud)
from norma.views import (AssuntoNormaCrud, NormaCrud,
NormaPesquisaView, NormaTaView,
NormaTemporarioCrud, PesquisaNormaListView,
TipoNormaCrud)
from .apps import AppConfig
@ -24,14 +25,10 @@ norma_url_patterns = NormaTemporarioCrud.get_urls() + [
]
urlpatterns = [
url(r'^norma/', include(norma_url_patterns)),
url(r'^norma/', include(NormaCrud.get_urls())),
url(r'^sistema/norma/tipo/', include(TipoNormaCrud.get_urls())),
url(r'^sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())),
url(r'^norma/incluir$', NormaIncluirView.as_view(), name='norma_incluir'),
url(r'^norma/(?P<pk>[0-9]+)/editar$',
NormaEditView.as_view(), name='norma_editar'),
url(r'^norma/pesquisa$',
NormaPesquisaView.as_view(), name='norma_pesquisa'),
url(r'^norma/pesquisa-resultado$',

111
norma/views.py

@ -6,6 +6,7 @@ from django.shortcuts import redirect
from django.views.generic import CreateView, FormView, ListView, UpdateView
from compilacao.views import IntegracaoTaView
import crud.base
from crud.base import Crud, make_pagination
from materia.models import MateriaLegislativa
@ -15,11 +16,21 @@ from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica,
AssuntoNormaCrud = Crud.build(AssuntoNorma, 'assunto_norma_juridica')
TipoNormaCrud = Crud.build(TipoNormaJuridica, 'tipo_norma_juridica')
NormaCrud = Crud.build(NormaJuridica, '')
NormaTemporarioCrud = Crud.build(NormaJuridica, 'norma')
LegislacaoCitadaCrud = Crud.build(LegislacaoCitada, '')
class NormaCrud(Crud):
model = NormaJuridica
help_path = 'norma_juridica'
class CreateView(crud.base.CrudCreateView):
form_class = NormaJuridicaForm
class BaseMixin(crud.base.BaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'ementa']
class NormaPesquisaView(FormView):
template_name = "norma/pesquisa.html"
success_url = "norma:norma_pesquisa"
@ -110,55 +121,55 @@ class PesquisaNormaListView(ListView):
return context
class NormaIncluirView(CreateView):
template_name = "norma/normajuridica_incluir.html"
form_class = NormaJuridicaForm
success_url = reverse_lazy('norma:normajuridica_list')
def get_success_url(self):
return reverse_lazy('norma:norma_pesquisa')
def form_valid(self, form):
norma = form.save(commit=False)
norma.timestamp = datetime.now()
if form.cleaned_data['tipo_materia']:
materia = MateriaLegislativa.objects.get(
tipo_id=form.data['tipo_materia'],
numero=form.data['numero_materia'],
ano=form.data['ano_materia'])
norma.materia = materia
norma.save()
return HttpResponseRedirect(self.get_success_url())
class NormaEditView(UpdateView):
template_name = "norma/normajuridica_incluir.html"
form_class = NormaJuridicaForm
model = NormaJuridica
success_url = reverse_lazy('norma:pesquisa_norma')
def get_initial(self):
data = super(NormaEditView, self).get_initial()
norma = NormaJuridica.objects.get(id=self.kwargs['pk'])
if norma.materia:
data.update({
'tipo_materia': norma.materia.tipo,
'numero_materia': norma.materia.numero,
'ano_materia': norma.materia.ano,
})
return data
def form_valid(self, form):
norma = form.save(commit=False)
norma.timestamp = datetime.now()
if form.cleaned_data['tipo_materia']:
materia = MateriaLegislativa.objects.get(
tipo_id=form.data['tipo_materia'],
numero=form.data['numero_materia'],
ano=form.data['ano_materia'])
norma.materia = materia
norma.save()
return HttpResponseRedirect(self.get_success_url())
# class NormaIncluirView(CreateView):
# template_name = "norma/normajuridica_incluir.html"
# form_class = NormaJuridicaForm
# success_url = reverse_lazy('norma:normajuridica_list')
#
# def get_success_url(self):
# return reverse_lazy('norma:norma_pesquisa')
#
# def form_valid(self, form):
# norma = form.save(commit=False)
# norma.timestamp = datetime.now()
# if form.cleaned_data['tipo_materia']:
# materia = MateriaLegislativa.objects.get(
# tipo_id=form.data['tipo_materia'],
# numero=form.data['numero_materia'],
# ano=form.data['ano_materia'])
# norma.materia = materia
# norma.save()
# return HttpResponseRedirect(self.get_success_url())
#
#
# class NormaEditView(UpdateView):
# template_name = "norma/normajuridica_incluir.html"
# form_class = NormaJuridicaForm
# model = NormaJuridica
# success_url = reverse_lazy('norma:pesquisa_norma')
#
# def get_initial(self):
# data = super(NormaEditView, self).get_initial()
# norma = NormaJuridica.objects.get(id=self.kwargs['pk'])
# if norma.materia:
# data.update({
# 'tipo_materia': norma.materia.tipo,
# 'numero_materia': norma.materia.numero,
# 'ano_materia': norma.materia.ano,
# })
# return data
#
# def form_valid(self, form):
# norma = form.save(commit=False)
# norma.timestamp = datetime.now()
# if form.cleaned_data['tipo_materia']:
# materia = MateriaLegislativa.objects.get(
# tipo_id=form.data['tipo_materia'],
# numero=form.data['numero_materia'],
# ano=form.data['ano_materia'])
# norma.materia = materia
# norma.save()
# return HttpResponseRedirect(self.get_success_url())
class NormaTaView(IntegracaoTaView):

4
templates/norma/list_pesquisa.html

@ -4,11 +4,11 @@
{% block actions %}{% endblock %}
{% block detail_content %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'norma:norma_incluir' %}" class="btn btn-default">Adicionar Norma Jurídica</a>
<a href="{% url 'norma:normajuridica_create' %}" class="btn btn-default">Adicionar Norma Jurídica</a>
</div>
<br /><br /><br />
{% if object_list %}
<table class="table table-striped table-bordered">
<table class="table table-striped">
<thead class="thead-default">
<tr>
<th>Tipo da Norma Juridica</th>

28
templates/norma/normajuridica_detail.html

@ -1,28 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block sections_nav %}
<ul class="nav nav-pills navbar-right">
<li>
<a href="{% url 'norma:normajuridica_detail' object.pk %}">{% trans 'Início' %}</a>
</li>
{% comment %}
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 NormaTa(IntegracaoTaView) em views.py
Em nada mais a integração interfere em Norma Jurídica
{% endcomment %}
<li><a href="{% url 'norma:ta' object.pk %}">{% trans 'Texto da Norma' %}</a></li>
</ul>
{% endblock sections_nav %}
<div class="clearfix">
{% block actions %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'norma:norma_editar' object.id %}" class="btn btn-default">{% trans 'Editar' %}</a>
<a href="{{ view.delete_url }}" class="btn btn-default">{% trans 'Excluir' %}</a>
</div>
{% endblock actions %}
</div>

3
templates/norma/normajuridica_incluir.html

@ -1,3 +0,0 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}

36
templates/norma/normajuridica_list.html

@ -1,36 +0,0 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block base_content %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'norma:norma_incluir' %}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name %} Adicionar {{ verbose_name }} {% endblocktrans %}
</a>
</div>
<br /><br /><br />
{% if object_list %}
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Tipo da Norma Juridica</th>
<th>Número</th>
<th>Ano</th>
<th>Data</th>
<th>Ementa</th>
</tr>
</thead>
{% for obj in object_list %}
<tr>
<td><a href="{% url 'norma:normajuridica_detail' obj.id %}">{{obj.tipo}}</a></td>
<td>{{obj.numero}}</td>
<td>{{obj.ano}}</td>
<td>{{obj.data}}</td>
<td>{{obj.ementa|safe}}</td>
</tr>
{% endfor %}
</table>
{% include "paginacao.html" %}
{% else %}
<h2>Nenhum Registro recuperado</h2>
{% endif %}
{% endblock %}

16
templates/norma/pesquisa.html

@ -1,3 +1,17 @@
{% extends "crud/form.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block base_content %}
{% block actions %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'norma:normajuridica_create' %}" class="btn btn-default">{% trans 'Adicionar Norma Juridica' %}</a>
</div>
<br /><br />
{% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock %}
{% endblock %}

Loading…
Cancel
Save