Browse Source

add norma_temporario_crud

pull/10/head
LeandroRoberto 9 years ago
parent
commit
604345d32c
  1. 41
      compilacao/forms.py
  2. 2
      compilacao/urls.py
  3. 23
      compilacao/views.py
  4. 5
      norma/models.py
  5. 15
      norma/urls.py
  6. 12
      norma/views.py
  7. 19
      static/js/compilacao_notas.js
  8. 17
      static/styles/compilacao.scss
  9. 1
      templates/compilacao/edit_bloco.html
  10. 18
      templates/compilacao/index_bloco.html

41
compilacao/forms.py

@ -36,11 +36,19 @@ class NotaForm(ModelForm):
# All users have visibility.
(NPUBL, _('Nota Pública')),
)
error_messages = {
'required': _('Este campo é obrigatório'),
'invalid': _('URL inválida.')
}
titulo = forms.CharField(label=' ', required=False)
texto = forms.CharField(label='', widget=forms.Textarea)
url_externa = forms.URLField(label='', required=False)
texto = forms.CharField(
label='',
widget=forms.Textarea,
error_messages=error_messages)
url_externa = forms.URLField(
label='',
required=False,
error_messages=error_messages)
publicidade = forms.ChoiceField(
required=True,
label='Publicidade',
@ -53,16 +61,21 @@ class NotaForm(ModelForm):
queryset=TipoNota.objects.all(),
empty_label=None)
publicacao = forms.DateField(label=u'Publicação',
input_formats=['%d/%m/%Y'],
required=True,
widget=forms.DateInput(
format='%d/%m/%Y'))
efetividade = forms.DateField(label=u'Efetividade',
input_formats=['%d/%m/%Y'],
required=True,
widget=forms.DateInput(
format='%d/%m/%Y'))
publicacao = forms.DateField(
label=u'Publicação',
input_formats=['%d/%m/%Y'],
required=True,
widget=forms.DateInput(
format='%d/%m/%Y'),
error_messages=error_messages
)
efetividade = forms.DateField(
label=u'Efetividade',
input_formats=['%d/%m/%Y'],
required=True,
widget=forms.DateInput(
format='%d/%m/%Y'),
error_messages=error_messages)
dispositivo = forms.ModelChoiceField(queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput())
pk = forms.IntegerField(widget=forms.HiddenInput(),

2
compilacao/urls.py

@ -31,7 +31,7 @@ urlpatterns_compilacao = [
views.NotasEditView.as_view(), name='nota_edit'),
url(r'^(?P<norma_id>[0-9]+)/compilacao/'
'(?P<dispositivo_id>[0-9]+)/nota/delete$',
'(?P<dispositivo_id>[0-9]+)/nota/(?P<pk>[0-9]+)/delete$',
views.NotasDeleteView.as_view(), name='nota_delete'),
]

23
compilacao/views.py

@ -6,12 +6,14 @@ from django.contrib.auth.models import User
from django.core.signing import Signer
from django.core.urlresolvers import reverse
from django.db.models import Q
from django.http.response import JsonResponse, HttpResponse
from django.http.response import JsonResponse, HttpResponse,\
HttpResponseRedirect
from django.shortcuts import render
from django.utils.dateparse import parse_date
from django.utils.translation import ugettext_lazy as _
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormMixin, UpdateView
from django.views.generic.detail import SingleObjectMixin
from django.views.generic.edit import FormMixin, UpdateView, DeleteView
from django.views.generic.list import ListView
from vanilla.model_views import CreateView
@ -1160,5 +1162,18 @@ class NotasEditView(UpdateView):
'dispositivo_id']})
class NotasDeleteView(FormMixin, CreateView):
pass
class NotasDeleteView(TemplateView):
def get(self, request, *args, **kwargs):
nt = Nota.objects.get(pk=self.kwargs['pk'])
success_url = self.get_success_url()
nt.delete()
return HttpResponseRedirect(success_url)
def get_success_url(self):
return reverse(
'dispositivo', kwargs={
'norma_id': self.kwargs[
'norma_id'],
'dispositivo_id': self.kwargs[
'dispositivo_id']})

5
norma/models.py

@ -3,7 +3,7 @@ from django.template import defaultfilters
from django.utils.translation import ugettext_lazy as _
from materia.models import MateriaLegislativa
from sapl.utils import make_choices
from sapl.utils import make_choices, YES_NO_CHOICES
class AssuntoNorma(models.Model):
@ -86,7 +86,8 @@ class NormaJuridica(models.Model):
observacao = models.TextField(
blank=True, null=True, verbose_name=_('Observação'))
complemento = models.NullBooleanField(
blank=True, verbose_name=_('Complementar ?'))
blank=True, verbose_name=_('Complementar ?'),
choices=YES_NO_CHOICES)
# XXX was a CharField (attention on migrate)
assuntos = models.ManyToManyField(
AssuntoNorma,

15
norma/urls.py

@ -1,12 +1,19 @@
from django.conf.urls import include, url
from norma.views import NormaIncluirView, assunto_norma_crud, tipo_norma_crud
from norma.views import NormaIncluirView, assunto_norma_crud, tipo_norma_crud,\
norma_temporario_crud
norma_url_patterns = norma_temporario_crud.urlpatterns + []
# norma_url_patterns = norma_crud.urlpatterns + []
urlpatterns = [
# url(r'^norma/', include(norma_url_patterns,
# norma_temporario_para_compilacao_crud.namespace,
# norma_temporario_para_compilacao_crud.namespace)),
url(r'^norma/', include(norma_url_patterns,
norma_temporario_crud.namespace,
norma_temporario_crud.namespace)),
url(r'^sistema/norma/tipo/', include(tipo_norma_crud.urls)),
url(r'^sistema/norma/assunto/', include(assunto_norma_crud.urls)),
url(r'^norma/incluir', NormaIncluirView.as_view(), name='norma-incluir'),
]

12
norma/views.py

@ -30,6 +30,7 @@ tipo_norma_crud = build_crud(
])
norma_crud = build_crud(
NormaJuridica, '', [
[_('Identificação Básica'),
@ -47,19 +48,18 @@ norma_crud = build_crud(
[('indexacao', 12)],
[('observacao', 12)]],
[_('Assuntos (Classificação) [+] '),
[_('Assuntos (Classificação) [+]'),
[('assunto_norma_FIXME', 12)],
[('assunto_norma_FIXME', 12)],
[('assunto_norma_FIXME', 12)]],
])
norma_temporario_para_compilacao_crud = build_crud(
NormaJuridica, 'norma', [
norma_temporario_crud = build_crud(
NormaJuridica, 'normajuridica', [
[_('Identificação Básica'),
[('tipo', 4), ('numero', 4), ('ano', 4)],
[('data', 4), ('esfera_federacao', 4)],
[('data_publicacao', 3)],
[('tipo', 5), ('numero', 2), ('ano', 2), ('data', 3)],
[('ementa', 12)]],
])

19
static/js/compilacao_notas.js

@ -50,6 +50,18 @@ var onSubmitEditForm = function(event) {
}
);
}
var onDelete = function(event) {
var id_dispositivo = $(event).closest('.dn').attr('pk');
var id_nota = $(event).attr('pk');
var url = 'compilacao/'+id_dispositivo+'/nota/'+id_nota+'/delete'
$.get( url, function(data) {
$('#dne'+id_dispositivo+' .dne-form').closest('.dpt').html(data)
onReadyNotas();
}
);
}
function getFormNota(_this, _btn) {
var id_dispositivo = $('.dne-exec .dne-form').closest('.dne').attr('pk');
@ -63,13 +75,12 @@ function getFormNota(_this, _btn) {
id_dispositivo = $(_this).attr('pk');
url = 'compilacao/'+id_dispositivo+'/nota/create';
}
else {
else if (_btn == 'btn-edit') {
var id_nota = $(_this).attr('pk');
id_dispositivo = $(_this).closest('.dn').attr('pk');
url = 'compilacao/'+id_dispositivo+'/nota/'+id_nota+'/edit'
}
$('#dne'+id_dispositivo).addClass('dne-exec');
$('#dne'+id_dispositivo).addClass('dne-exec');
$.get(url).done(function( data ) {
$('#dne'+id_dispositivo+' .dne-form').html(data);
@ -79,12 +90,16 @@ function getFormNota(_this, _btn) {
function onReadyNotas() {
$('.dne .btn-create').off();
$('.dne .btn-edit').off();
$('.dne .btn-delete').off();
$('.dne .btn-create').click(function(){
getFormNota(this, 'btn-create')
});
$('.dn .btn-edit').click(function(){
getFormNota(this, 'btn-edit')
});
$('.dn .btn-delete').click(function(){
onDelete(this, 'btn-delete')
});
}
$(document).ready(function() {
onReadyNotas()

17
static/styles/compilacao.scss

@ -209,7 +209,7 @@ $color_actions_border: #CCC;
font-size: 1.15em;
float:left;
.dptt {
z-index: 98;
z-index: 89;
position: relative;
}
}
@ -273,6 +273,7 @@ $color_actions_border: #CCC;
font-weight: normal;
line-height: 1rem;
position: relative;
text-decoration: none;
p, ul {
font-size: 0.8rem;
font-weight: normal;
@ -299,8 +300,6 @@ $color_actions_border: #CCC;
padding: 0.5em 0.5em 0em 0.5em;
border: 1px solid #c7e3d3;
border-top: 0px;
}
&:hover {
@ -323,15 +322,25 @@ $color_actions_border: #CCC;
&:hover {
color: #787;
a{
color: #27AE60 !important;
}
}
}
.ntitulo {
font-weight: bold;
color: #676;
font-size: 90%;
a{
color: #294 !important;
}
}
.ntexto {
color: #787;
a{
color: #294 !important;
}
}
.nowner {
color: #27AE60;
@ -342,6 +351,7 @@ $color_actions_border: #CCC;
.dptt {
.dne {
text-decoration: none;
position: relative;
display: block;
font-size: 0.8rem;
@ -356,6 +366,7 @@ $color_actions_border: #CCC;
font-size: 0.8rem;
font-weight: normal;
line-height: 1rem;
text-decoration: none;
}
ul.btns-action {

1
templates/compilacao/edit_bloco.html

@ -35,7 +35,6 @@
</ul>
<ul class="btns-action actions_left">
<li><a class="btn-left btn-action" pk="{{dpt.pk}}" title="TODO: Notas...">Nt</a></li>
<li><a class="btn-left btn-action" pk="{{dpt.pk}}" title="TODO: Vides...">Vd</a></li>
</ul>
<ul class="btns-action actions_bottom">

18
templates/compilacao/index_bloco.html

@ -46,7 +46,6 @@
<li><a class="btn-delete" pk="{{nota.pk}}">Excluir</a></li> {# TODO: User - tratar permissão usuário #}
<li class="bullet">&#8226;</li>
<li class="ntipo">{{nota.tipo.nome}}</li>
<li class="bullet">&#8226;</li>
<li class="nowner" title="{% trans 'Criado Por' %}">{%if nota.owner.first_name%}{{nota.owner.first_name}}{%else%}{{nota.owner}}{%endif%}</li>
@ -54,14 +53,19 @@
<li class="npublicacao" title="{% trans 'Data de Publicação'%}">{{nota.publicacao|date:"d M Y"}}</li>
</ul>
{%if nota.titulo %}
<div class="ntitulo">
{%if nota.url_externa %}<a target="_blank" href="{{nota.url_externa}}">{%endif%}
{{nota.titulo}}
{%if nota.url_externa %}</a>{%endif%}
</div>
{%endif%}
<div class="ntexto">
{%if nota.url_externa %}<a target="_blank" href="{{nota.url_externa}}">{%endif%}
{%if nota.titulo %}<div class="ntitulo">{{nota.titulo}}</div>{%endif%}
{%if nota.url_externa %}</a>{%endif%}
{%if nota.url_externa %}<a target="_blank" href="{{nota.url_externa}}">{%endif%}
<div class="ntexto">{{ nota.texto}}</div>
{%if nota.url_externa %}</a>{%endif%}
{{ nota.texto}}
{%if nota.url_externa %}</a>{%endif%}
</div>
{%comment%}
<ul>

Loading…
Cancel
Save