Browse Source

Merge 1e9a027132 into 75cc37b5ff

pull/481/merge
eduardocalil 10 years ago
parent
commit
f89142156e
  1. 1
      base/forms.py
  2. 3
      compilacao/views.py
  3. 2
      materia/migrations/0036_merge.py
  4. 16
      norma/migrations/0014_merge.py
  5. 137
      protocoloadm/forms.py
  6. 9
      protocoloadm/layouts.yaml
  7. 19
      protocoloadm/migrations/0013_remove_tramitacaoadministrativo_ultima.py
  8. 16
      protocoloadm/migrations/0014_merge.py
  9. 7
      protocoloadm/models.py
  10. 24
      protocoloadm/urls.py
  11. 115
      protocoloadm/views.py
  12. 10
      templates/base.html
  13. 19
      templates/materia/materialegislativa_filter.html
  14. 9
      templates/protocoloadm/documentoadministrativo_detail.html
  15. 25
      templates/protocoloadm/documentoadministrativo_filter.html
  16. 0
      templates/protocoloadm/proposicao_view.html.BASE.12159.html
  17. 6
      templates/protocoloadm/proposicao_view.html.LOCAL.12159.html
  18. 0
      templates/protocoloadm/proposicao_view.html.REMOTE.12159.html
  19. 27
      templates/protocoloadm/protocolo_filter.html
  20. 1
      templates/protocoloadm/protocoloadm_detail.html
  21. 40
      templates/protocoloadm/tramitacao.html
  22. 15
      templates/protocoloadm/tramitacao_edit.html
  23. 14
      templates/protocoloadm/tramitacao_incluir.html
  24. 9
      templates/protocoloadm/tramitacaoadministrativo_detail.html

1
base/forms.py

@ -2,6 +2,7 @@ from django import forms
from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.forms import AuthenticationForm
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
import sapl import sapl
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE from sapl.settings import MAX_IMAGE_UPLOAD_SIZE

3
compilacao/views.py

@ -1,6 +1,6 @@
import sys
from collections import OrderedDict from collections import OrderedDict
from datetime import datetime, timedelta from datetime import datetime, timedelta
import sys
from braces.views import FormMessagesMixin from braces.views import FormMessagesMixin
from django import forms from django import forms
@ -37,7 +37,6 @@ from compilacao.models import (Dispositivo, Nota,
from compilacao.utils import DISPOSITIVO_SELECT_RELATED from compilacao.utils import DISPOSITIVO_SELECT_RELATED
from crud.base import Crud, CrudListView, make_pagination from crud.base import Crud, CrudListView, make_pagination
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')

2
materia/migrations/0036_merge.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-19 13:49 # Generated by Django 1.9.5 on 2016-05-20 11:53
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations from django.db import migrations

16
norma/migrations/0014_merge.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-30 12:00
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('norma', '0013_auto_20160503_0926'),
('norma', '0013_auto_20160510_1404'),
]
operations = [
]

137
protocoloadm/forms.py

@ -1,9 +1,11 @@
from datetime import datetime
import django_filters import django_filters
from crispy_forms.bootstrap import InlineRadios from crispy_forms.bootstrap import InlineRadios
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Field, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Button, Fieldset, Layout, Submit
from django import forms from django import forms
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import models from django.db import models
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -12,7 +14,7 @@ import crispy_layout_mixin
import sapl import sapl
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
from materia.forms import RangeWidgetOverride from materia.forms import RangeWidgetOverride
from materia.models import Autor from materia.models import Autor, UnidadeTramitacao
from sapl.utils import RANGE_ANOS from sapl.utils import RANGE_ANOS
from .models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo, from .models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo,
@ -52,16 +54,18 @@ class ProtocoloFilterSet(django_filters.FilterSet):
autor = django_filters.CharFilter(widget=forms.HiddenInput()) autor = django_filters.CharFilter(widget=forms.HiddenInput())
tipo_protocolo = django_filters.ChoiceFilter(required=False, tipo_protocolo = django_filters.ChoiceFilter(
label='Tipo de Protocolo', required=False,
choices=TIPOS_PROTOCOLO, label='Tipo de Protocolo',
widget=forms.Select( choices=TIPOS_PROTOCOLO,
attrs={'class': 'selector'})) widget=forms.Select(
tipo_processo = django_filters.ChoiceFilter(required=False, attrs={'class': 'selector'}))
label='Natureza do Processo', tipo_processo = django_filters.ChoiceFilter(
choices=NATUREZA_PROCESSO, required=False,
widget=forms.Select( label='Natureza do Processo',
attrs={'class': 'selector'})) choices=NATUREZA_PROCESSO,
widget=forms.Select(
attrs={'class': 'selector'}))
class Meta: class Meta:
model = Protocolo model = Protocolo
@ -111,13 +115,13 @@ class ProtocoloFilterSet(django_filters.FilterSet):
('assunto_ementa', 6)]) ('assunto_ementa', 6)])
row4 = crispy_layout_mixin.to_row( row4 = crispy_layout_mixin.to_row(
[('autor', 0), [('autor', 0),
(Button('pesquisar', (Button('pesquisar',
'Pesquisar Autor', 'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2), css_class='btn btn-primary btn-sm'), 2),
(Button('limpar', (Button('limpar',
'Limpar Autor', 'Limpar Autor',
css_class='btn btn-primary btn-sm'), 10)]) css_class='btn btn-primary btn-sm'), 10)])
row5 = crispy_layout_mixin.to_row( row5 = crispy_layout_mixin.to_row(
[('tipo_processo', 12)]) [('tipo_processo', 12)])
row6 = crispy_layout_mixin.to_row( row6 = crispy_layout_mixin.to_row(
@ -133,7 +137,7 @@ class ProtocoloFilterSet(django_filters.FilterSet):
HTML(sapl.utils.autor_modal), HTML(sapl.utils.autor_modal),
row4, row5, row6, row4, row5, row6,
form_actions(save_label='Pesquisar')) form_actions(save_label='Pesquisar'))
) )
class DocumentoAdministrativoFilterSet(django_filters.FilterSet): class DocumentoAdministrativoFilterSet(django_filters.FilterSet):
@ -221,7 +225,7 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet):
row1, row2, row1, row2,
row3, row4, row5, row3, row4, row5,
form_actions(save_label='Pesquisar')) form_actions(save_label='Pesquisar'))
) )
class AnularProcoloAdmForm(ModelForm): class AnularProcoloAdmForm(ModelForm):
@ -523,7 +527,6 @@ class TramitacaoAdmForm(ModelForm):
'data_encaminhamento', 'data_encaminhamento',
'data_fim_prazo', 'data_fim_prazo',
'texto', 'texto',
'documento',
] ]
widgets = { widgets = {
@ -532,22 +535,78 @@ class TramitacaoAdmForm(ModelForm):
'data_fim_prazo': forms.DateInput(format='%d/%m/%Y'), 'data_fim_prazo': forms.DateInput(format='%d/%m/%Y'),
} }
def __init__(self, *args, **kwargs): def clean(self):
self.helper = FormHelper() data_enc_form = self.cleaned_data['data_encaminhamento']
self.helper.layout = Layout( data_prazo_form = self.cleaned_data['data_fim_prazo']
Fieldset(_('Incluir Tramitação'), data_tram_form = self.cleaned_data['data_tramitacao']
'data_tramitacao',
'unidade_tramitacao_local', if self.errors:
'status', return self.errors
'unidade_tramitacao_destino',
'data_encaminhamento', ultima_tramitacao = TramitacaoAdministrativo.objects.filter(
'data_fim_prazo', documento_id=self.instance.documento_id).exclude(
'texto'), id=self.instance.id).last()
Field('documento', type="hidden"),
form_actions() if not self.instance.data_tramitacao:
)
super(TramitacaoAdmForm, self).__init__( if ultima_tramitacao:
*args, **kwargs) destino = ultima_tramitacao.unidade_tramitacao_destino
if (destino != self.cleaned_data['unidade_tramitacao_local']):
msg = _('A origem da nova tramitação deve ser igual ao '
'destino da última adicionada!')
raise ValidationError(msg)
if self.cleaned_data['data_tramitacao'] > datetime.now().date():
msg = _(
'A data de tramitação deve ser\
menor ou igual a data de hoje!')
raise ValidationError(msg)
if (ultima_tramitacao and
data_tram_form < ultima_tramitacao.data_tramitacao):
msg = _('A data da nova tramitação deve ser\
maior que a data da última tramitação!')
raise ValidationError(msg)
if data_enc_form < data_tram_form or data_prazo_form < data_tram_form:
msg = _('A data fim de prazo e encaminhamento devem ser\
maiores que a data de tramitação!')
raise ValidationError(msg)
return self.cleaned_data
class TramitacaoAdmEditForm(TramitacaoAdmForm):
unidade_tramitacao_local = forms.ModelChoiceField(
queryset=UnidadeTramitacao.objects.all(),
widget=forms.HiddenInput())
data_tramitacao = forms.DateField(widget=forms.HiddenInput())
class Meta:
model = TramitacaoAdministrativo
fields = ['data_tramitacao',
'unidade_tramitacao_local',
'status',
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',
'texto',
]
widgets = {
'data_encaminhamento': forms.DateInput(format='%d/%m/%Y'),
'data_fim_prazo': forms.DateInput(format='%d/%m/%Y'),
}
def clean(self):
local = self.instance.unidade_tramitacao_local
data_tram = self.instance.data_tramitacao
self.cleaned_data['data_tramitacao'] = data_tram
self.cleaned_data['unidade_tramitacao_local'] = local
return super(TramitacaoAdmEditForm, self).clean()
class DocumentoAdministrativoForm(ModelForm): class DocumentoAdministrativoForm(ModelForm):

9
protocoloadm/layouts.yaml

@ -14,6 +14,15 @@ DocumentoAdministrativo:
- dias_prazo data_fim_prazo - dias_prazo data_fim_prazo
- observacao - observacao
TramitacaoAdministrativo:
Indentificação Básica:
- data_tramitacao unidade_tramitacao_local
- unidade_tramitacao_destino status
Outras Informações:
- dias_prazo data_fim_prazo
- observacao
DocumentoAcessorioAdministrativo: DocumentoAcessorioAdministrativo:
Documento Acessório: Documento Acessório:
- tipo nome data - tipo nome data

19
protocoloadm/migrations/0013_remove_tramitacaoadministrativo_ultima.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-20 11:54
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0012_auto_20160503_0926'),
]
operations = [
migrations.RemoveField(
model_name='tramitacaoadministrativo',
name='ultima',
),
]

16
protocoloadm/migrations/0014_merge.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-30 12:01
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0013_remove_tramitacaoadministrativo_ultima'),
('protocoloadm', '0013_merge'),
]
operations = [
]

7
protocoloadm/models.py

@ -166,16 +166,12 @@ class StatusTramitacaoAdministrativo(models.Model):
class TramitacaoAdministrativo(models.Model): class TramitacaoAdministrativo(models.Model):
status = models.ForeignKey( status = models.ForeignKey(
StatusTramitacaoAdministrativo, StatusTramitacaoAdministrativo,
blank=True,
null=True,
verbose_name=_('Status')) verbose_name=_('Status'))
documento = models.ForeignKey(DocumentoAdministrativo) documento = models.ForeignKey(DocumentoAdministrativo)
data_tramitacao = models.DateField( data_tramitacao = models.DateField(
blank=True, null=True, verbose_name=_('Data Tramitação')) verbose_name=_('Data Tramitação'))
unidade_tramitacao_local = models.ForeignKey( unidade_tramitacao_local = models.ForeignKey(
UnidadeTramitacao, UnidadeTramitacao,
blank=True,
null=True,
related_name='adm_tramitacoes_origem', related_name='adm_tramitacoes_origem',
verbose_name=_('Unidade Local')) verbose_name=_('Unidade Local'))
data_encaminhamento = models.DateField( data_encaminhamento = models.DateField(
@ -186,7 +182,6 @@ class TramitacaoAdministrativo(models.Model):
null=True, null=True,
related_name='adm_tramitacoes_destino', related_name='adm_tramitacoes_destino',
verbose_name=_('Unidade Destino')) verbose_name=_('Unidade Destino'))
ultima = models.BooleanField()
texto = models.TextField( texto = models.TextField(
blank=True, verbose_name=_('Texto da Ação')) blank=True, verbose_name=_('Texto da Ação'))
data_fim_prazo = models.DateField( data_fim_prazo = models.DateField(

24
protocoloadm/urls.py

@ -19,12 +19,8 @@ from protocoloadm.views import (AnularProtocoloAdmView,
ProtocoloPesquisaView, ProtocoloPesquisaView,
StatusTramitacaoAdministrativoCrud, StatusTramitacaoAdministrativoCrud,
TipoDocumentoAdministrativoCrud, TipoDocumentoAdministrativoCrud,
TipoInstituicaoCrud, TramitacaoAdmDeleteView, TipoInstituicaoCrud, TramitacaoAdmCrud,
TramitacaoAdmEditView, get_nome_autor, pesquisa_autores)
TramitacaoAdmIncluirView,
TramitacaoAdministrativoCrud,
TramitacaoAdmView, get_nome_autor,
pesquisa_autores)
from .apps import AppConfig from .apps import AppConfig
@ -32,17 +28,14 @@ app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^protocoloadm/docadm/', url(r'^protocoloadm/docadm/',
include(DocumentoAdministrativoCrud.get_urls())), include(DocumentoAdministrativoCrud.get_urls() +
TramitacaoAdmCrud.get_urls())),
url(r'^protocoloadm/tipo-documento-adm/', url(r'^protocoloadm/tipo-documento-adm/',
include(TipoDocumentoAdministrativoCrud.get_urls())), include(TipoDocumentoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/doc-acessorio/', url(r'^protocoloadm/doc-acessorio/',
include(DocumentoAcessorioAdministrativoCrud.get_urls())), include(DocumentoAcessorioAdministrativoCrud.get_urls())),
url(r'^protocoloadm/status-tramitacao-adm/', url(r'^protocoloadm/status-tramitacao-adm/',
include(StatusTramitacaoAdministrativoCrud.get_urls())), include(StatusTramitacaoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/tipo-instituicao/',
include(TipoInstituicaoCrud.get_urls())),
url(r'^protocoloadm/tramitacao-adm/',
include(TramitacaoAdministrativoCrud.get_urls())),
url(r'^protocoloadm/protocolo-doc/', url(r'^protocoloadm/protocolo-doc/',
include(ProtocoloDocumentoCrud.get_urls())), include(ProtocoloDocumentoCrud.get_urls())),
url(r'^protocoloadm/protocolo-mat/', url(r'^protocoloadm/protocolo-mat/',
@ -69,15 +62,6 @@ urlpatterns = [
DocumentoAcessorioAdministrativoEditView.as_view(), DocumentoAcessorioAdministrativoEditView.as_view(),
name='doc_ace_adm_edit'), name='doc_ace_adm_edit'),
url(r'^protocoloadm/(?P<pk>\d+)/tramitacao$',
TramitacaoAdmView.as_view(), name='tramitacao_adm'),
url(r'^protocoloadm/(?P<pk>\d+)/tramitacao_incluir',
TramitacaoAdmIncluirView.as_view(), name='tramitacao_incluir'),
url(r'^protocoloadm/(?P<pk>\d+)/tramitacao_edit',
TramitacaoAdmEditView.as_view(), name='tramitacao_edit'),
url(r'^protocoloadm/(?P<pk>\d+)/tramitacao_delete/(?P<oid>\d+)',
TramitacaoAdmDeleteView.as_view(), name='tramitacao_delete'),
url(r'^protocoloadm/(?P<pk>\d+)/(?P<ano>\d+)/comprovante$', url(r'^protocoloadm/(?P<pk>\d+)/(?P<ano>\d+)/comprovante$',
ComprovanteProtocoloView.as_view(), name='comprovante_protocolo'), ComprovanteProtocoloView.as_view(), name='comprovante_protocolo'),
url(r'^protocoloadm/(?P<pk>\d+)/(?P<ano>\d+)/criar_documento$', url(r'^protocoloadm/(?P<pk>\d+)/(?P<ano>\d+)/criar_documento$',

115
protocoloadm/views.py

@ -14,6 +14,7 @@ from django_filters.views import FilterView
import crud.base import crud.base
from crud.base import Crud, make_pagination from crud.base import Crud, make_pagination
from crud.masterdetail import MasterDetailCrud
from materia.models import Proposicao, TipoMateriaLegislativa from materia.models import Proposicao, TipoMateriaLegislativa
from sapl.utils import create_barcode, get_client_ip from sapl.utils import create_barcode, get_client_ip
@ -21,7 +22,8 @@ from .forms import (AnularProcoloAdmForm, DocumentoAcessorioAdministrativoForm,
DocumentoAdministrativoFilterSet, DocumentoAdministrativoFilterSet,
DocumentoAdministrativoForm, ProposicaoSimpleForm, DocumentoAdministrativoForm, ProposicaoSimpleForm,
ProtocoloDocumentForm, ProtocoloFilterSet, ProtocoloDocumentForm, ProtocoloFilterSet,
ProtocoloMateriaForm, TramitacaoAdmForm) ProtocoloMateriaForm, TramitacaoAdmEditForm,
TramitacaoAdmForm)
from .models import (Autor, DocumentoAcessorioAdministrativo, from .models import (Autor, DocumentoAcessorioAdministrativo,
DocumentoAdministrativo, Protocolo, DocumentoAdministrativo, Protocolo,
StatusTramitacaoAdministrativo, StatusTramitacaoAdministrativo,
@ -29,16 +31,27 @@ from .models import (Autor, DocumentoAcessorioAdministrativo,
TramitacaoAdministrativo) TramitacaoAdministrativo)
TipoDocumentoAdministrativoCrud = Crud.build(TipoDocumentoAdministrativo, '') TipoDocumentoAdministrativoCrud = Crud.build(TipoDocumentoAdministrativo, '')
DocumentoAdministrativoCrud = Crud.build(DocumentoAdministrativo, '')
DocumentoAcessorioAdministrativoCrud = Crud.build( DocumentoAcessorioAdministrativoCrud = Crud.build(
DocumentoAcessorioAdministrativo, '') DocumentoAcessorioAdministrativo, '')
TramitacaoAdministrativoCrud = Crud.build(TramitacaoAdministrativo, '') StatusTramitacaoAdministrativoCrud = Crud.build(
StatusTramitacaoAdministrativo, '')
ProtocoloDocumentoCrud = Crud.build(Protocolo, '') ProtocoloDocumentoCrud = Crud.build(Protocolo, '')
# FIXME precisa de uma chave diferente para o layout # FIXME precisa de uma chave diferente para o layout
ProtocoloMateriaCrud = Crud.build(Protocolo, '') ProtocoloMateriaCrud = Crud.build(Protocolo, '')
TipoInstituicaoCrud = Crud.build(TipoInstituicao, '') TipoInstituicaoCrud = Crud.build(TipoInstituicao, '')
class DocumentoAdministrativoCrud(Crud):
model = DocumentoAdministrativo
help_path = ''
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data',
'numero_protocolo', 'assunto',
'interessado', 'tramitacao', 'texto_integral']
class StatusTramitacaoAdministrativoCrud(Crud): class StatusTramitacaoAdministrativoCrud(Crud):
model = StatusTramitacaoAdministrativo model = StatusTramitacaoAdministrativo
help_path = '' help_path = ''
@ -554,90 +567,26 @@ class DocumentoAcessorioAdministrativoView(FormView):
return reverse('protocoloadm:doc_ace_adm', kwargs={'pk': pk}) return reverse('protocoloadm:doc_ace_adm', kwargs={'pk': pk})
class TramitacaoAdmView(FormView): class TramitacaoAdmCrud(MasterDetailCrud):
template_name = "protocoloadm/tramitacao.html" model = TramitacaoAdministrativo
parent_field = 'documento'
def get(self, request, *args, **kwargs): help_path = ''
pk = kwargs['pk']
documento = DocumentoAdministrativo.objects.get(id=pk)
tramitacoes = TramitacaoAdministrativo.objects.filter(
documento=documento).order_by('-data_tramitacao')
return self.render_to_response({'documento': documento,
'tramitacoes': tramitacoes})
class TramitacaoAdmIncluirView(FormView):
template_name = "protocoloadm/tramitacao_incluir.html"
def get(self, request, *args, **kwargs):
pk = kwargs['pk']
documento = DocumentoAdministrativo.objects.get(id=pk)
data = {'documento': documento}
form = TramitacaoAdmForm(initial=data)
return self.render_to_response({'documento': documento, 'form': form})
def post(self, request, *args, **kwargs):
pk = kwargs['pk']
form = TramitacaoAdmForm(request.POST or None)
if form.is_valid():
tramitacao = form.save(commit=False)
tramitacao.ultima = False
tramitacao.save()
return HttpResponseRedirect(reverse(
'protocoloadm:tramitacao_adm', kwargs={'pk': pk}))
else:
return self.form_invalid(form)
class TramitacaoAdmEditView(FormView):
template_name = "protocoloadm/tramitacao_edit.html"
def get(self, request, *args, **kwargs):
pk = kwargs['pk']
tramitacao = TramitacaoAdministrativo.objects.get(id=pk)
documento = tramitacao.documento
form = TramitacaoAdmForm(instance=tramitacao)
return self.render_to_response({'documento': documento, 'form': form})
def post(self, request, *args, **kwargs):
pk = kwargs['pk']
tramitacao = TramitacaoAdministrativo.objects.get(id=pk)
form = TramitacaoAdmForm(request.POST, instance=tramitacao)
if form.is_valid():
tramitacao = form.save(commit=False)
tramitacao.ultima = False
tramitacao.save()
return HttpResponseRedirect(
reverse('protocoloadm:tramitacao_adm',
kwargs={'pk': tramitacao.documento.id}))
else:
return self.form_invalid(form)
class TramitacaoAdmDeleteView(DetailView):
template_name = "protocoloadm/tramitacao.html"
def get(self, request, *args, **kwargs): class BaseMixin(MasterDetailCrud.BaseMixin):
pk = kwargs['pk'] list_field_names = ['data_tramitacao', 'unidade_tramitacao_local',
oid = kwargs['oid'] 'unidade_tramitacao_destino', 'status']
documento = DocumentoAdministrativo.objects.get(id=pk) class CreateView(MasterDetailCrud.CreateView):
form_class = TramitacaoAdmForm
tramitacao = TramitacaoAdministrativo.objects.get(id=oid) class UpdateView(MasterDetailCrud.UpdateView):
tramitacao.delete() form_class = TramitacaoAdmEditForm
tramitacoes = TramitacaoAdministrativo.objects.filter(
documento=documento)
return self.render_to_response({'documento': documento, class ListView(MasterDetailCrud.ListView):
'tramitacoes': tramitacoes}) 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('-id')
def get_nome_autor(request): def get_nome_autor(request):

10
templates/base.html

@ -57,18 +57,24 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Protocolo <span class="caret"></span></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Protocolo <span class="caret"></span></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:protocolo' %}">Pesquisar Protocolo</a></li> <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:protocolo' %}">Pesquisar Protocolo</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:pesq_doc_adm' %}">Pesquisar Documento Administrativo</a></li>
<!-- <li class="nav__sub-item"><a class="nav__sub-link" href="/materia">Protocolo Legislativo</a></li> --> <!-- <li class="nav__sub-item"><a class="nav__sub-link" href="/materia">Protocolo Legislativo</a></li> -->
{# <li class="nav__sub-item"><a class="nav__sub-link" href="">Protocolo Geral</a></li> #} {# <li class="nav__sub-item"><a class="nav__sub-link" href="">Protocolo Geral</a></li> #}
{# <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:proposicao' %}">Proposições</a></li> #} {# <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:proposicao' %}">Proposições</a></li> #}
</ul> </ul>
</li> </li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Documentos Administrativos <span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'protocoloadm:pesq_doc_adm' %}">Pesquisar Documento </a></li>
</ul>
</li>
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Atividade Legislativa <span class="caret"></span></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Atividade Legislativa <span class="caret"></span></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:proposicao_list' %}">Proposições</a></li> <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:proposicao_list' %}">Proposições</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:materialegislativa_list' %}">Matérias Legislativas</a></li> <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'materia:pesquisar_materia' %}">Matérias Legislativas</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:sessaoplenaria_list' %}">Sessões Plenárias</a></li> <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:sessaoplenaria_list' %}">Sessões Plenárias</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:list_pauta_sessao' %}">Pautas das Sessões</a></li> <li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'sessao:list_pauta_sessao' %}">Pautas das Sessões</a></li>
<!-- <li class="nav__sub-item"><a class="nav__sub-link" href="#">Atas das Sessões</a></li> <!-- <li class="nav__sub-item"><a class="nav__sub-link" href="#">Atas das Sessões</a></li>

19
templates/materia/materialegislativa_filter.html

@ -1,19 +1,22 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %}{% endblock %} {% block actions %}
<h1><b>Matérias Legislativas</b></h1>
<div class="actions btn-group pull-right" role="group">
<a href="create" class="btn btn-default">{% trans 'Adicionar Matéria Legislativa' %}</a>
</div>
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'materia:pesquisar_materia' %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
</div>
{% endif %}
{% endblock %}
{% block sections_nav %} {% block sections_nav %}
{% endblock %} {% endblock %}
{% block detail_content %} {% block detail_content %}
<h1><b>Pesquisar Matéria</b></h1>
<br></br>
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'materia:pesquisar_materia' %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
</div>
{% endif %}
{% if not filter_url %} {% if not filter_url %}
{% crispy filter.form %} {% crispy filter.form %}

9
templates/protocoloadm/documentoadministrativo_detail.html

@ -0,0 +1,9 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block actions %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:tramitacaoadministrativo_list' object.pk %}" class="btn btn-default">{% trans 'Tramitações' %}</a>
<a href="{{ view.update_url }}" class="btn btn-default">{% trans 'Editar' %}</a>
<a href="{{ view.delete_url }}" class="btn btn-default">{% trans 'Excluir' %}</a>
</div>
{% endblock actions %}

25
templates/protocoloadm/documentoadministrativo_filter.html

@ -1,16 +1,31 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block sections_nav %} {% endblock %} {% block sections_nav %} {% endblock %}
{% block actions %}
<h1><b>Documentos Administrativos</b></h1>
<div class="actions btn-group pull-right" role="group">
<a href="docadm/create" class="btn btn-default">{% trans 'Adicionar Documento Administrativo' %}</a>
</div>
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:pesq_doc_adm' %}" class="btn btn-default">{% trans 'Fazer Nova Pesquisa' %}</a>
</div>
{% endif %}
{% endblock actions %}
{% block detail_content %} {% block detail_content %}
<h1><b>Pesquisar Documento Administrativo</b></h1>
<br></br>
{% crispy filter.form %} {% if not filter_url %}
{% crispy filter.form %}
{% endif %}
{% if filter_url %} {% if filter_url %}
<p></p> <p></p>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">

0
templates/protocoloadm/proposicao_view.html.BASE.12159.html

6
templates/protocoloadm/protocolo_pesquisa.html → templates/protocoloadm/proposicao_view.html.LOCAL.12159.html

@ -3,7 +3,5 @@
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% block detail_content %} {% block detail_content %}
<legend>Pesquisa Avançada</legend> {{ form.as_p }}
{% crispy form %} {% endblock detail_content %}
</fieldset>
{% endblock detail_content %}

0
templates/protocoloadm/proposicao_view.html.REMOTE.12159.html

27
templates/protocoloadm/protocolo_filter.html

@ -1,23 +1,32 @@
{% extends "protocoloadm/protocoloadm_detail.html" %} {% extends "protocoloadm/protocoloadm_detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% load static %} {% load static %}
{% block actions %}
<h1><b>Protocolos</b></h1>
<div class="actions btn-group pull-right" role="group">
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:protocolo' %}" class="btn btn-default">{% trans 'Fazer Nova Pesquisa' %}</a>
</div>
{% endif %}
<a href="{% url 'protocoloadm:protocolar_doc' %}" class="btn btn-default">{% trans 'Protocolar Documento' %}</a>
<a href="{% url 'protocoloadm:protocolar_mat' %}" class="btn btn-default">{% trans 'Protocolar Matéria' %}</a>
<a href="{% url 'protocoloadm:anular_protocolo' %}" class="btn btn-default">{% trans 'Anular Protocolo' %}</a>
</div>
{% endblock actions %}
{% block sections_nav %} {% endblock %} {% block sections_nav %} {% endblock %}
{% block detail_content %} {% block detail_content %}
<h1><b>Pesquisa de Protocolo</b></h1>
<br></br>
{% if filter_url %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:protocolo' %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
</div>
{% endif %}
{% if not filter_url %} {% if not filter_url %}
{% crispy filter.form %} {% crispy filter.form %}
{% endif %}
{% endif %}
{% if filter_url %} {% if filter_url %}
<p></p> <p></p>

1
templates/protocoloadm/protocoloadm_detail.html

@ -1,6 +1,7 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% block actions %} {% block actions %}
<h1><b>Protocolos</b></h1>
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:protocolar_doc' %}" class="btn btn-default">{% trans 'Protocolar Documento' %}</a> <a href="{% url 'protocoloadm:protocolar_doc' %}" class="btn btn-default">{% trans 'Protocolar Documento' %}</a>
<a href="{% url 'protocoloadm:protocolar_mat' %}" class="btn btn-default">{% trans 'Protocolar Matéria' %}</a> <a href="{% url 'protocoloadm:protocolar_mat' %}" class="btn btn-default">{% trans 'Protocolar Matéria' %}</a>

40
templates/protocoloadm/tramitacao.html

@ -1,40 +0,0 @@
{% extends "protocoloadm/protocoloadm_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
Tipo: {{documento.tipo.sigla}} Número: {{documento.numero}} Ano: {{documento.ano}}</br>
Assunto: {{documento.assunto}}
</fieldset>
<fieldset>
<h2>Tramitação</h2>
{% if tramitacoes %}
<table>
<tr>
<td>Data Ação</td>
<td>Origem</td>
<td>Destino</td>
<td>Status</td>
<td>Excluir</td>
</tr>
{% for t in tramitacoes %}
<tr>
<td><a href="{% url 'protocoloadm:tramitacao_edit' t.id %}">{{t.data_encaminhamento|date:"d/m/Y"}}</a></td>
<td>{{t.unidade_tramitacao_local}}</td>
<td>{{t.unidade_tramitacao_destino}}</td>
<td>{{t.status.sigla}}</td>
<td><a href="{% url 'protocoloadm:tramitacao_delete' documento.id t.id %}">Excluir</ad></td>
</tr>
{% endfor %}
</table>
{% else %}
<strong>Nenhuma tramitação cadastrada para este documento.</strong>
{% endif %}
</br>
<a href="{% url 'protocoloadm:tramitacao_incluir' documento.id %}" class="button primary">Incluir Tramitação</a>
</fieldset>
{% endblock detail_content %}

15
templates/protocoloadm/tramitacao_edit.html

@ -1,15 +0,0 @@
{% extends "protocoloadm/protocoloadm_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
Tipo: {{documento.tipo.sigla}} Número: {{documento.numero}} Ano: {{documento.ano}}</br>
Assunto: {{documento.assunto}}
</fieldset>
<h2>Tramitação Edit</h2>
{% crispy form %}
{% endblock detail_content %}

14
templates/protocoloadm/tramitacao_incluir.html

@ -1,14 +0,0 @@
{% extends "protocoloadm/protocoloadm_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
Tipo: {{documento.tipo.sigla}} Número: {{documento.numero}} Ano: {{documento.ano}}</br>
Assunto: {{documento.assunto}}
</fieldset>
<h2>Tramitação</h2>
{% crispy form %}
{% endblock detail_content %}

9
templates/protocoloadm/tramitacaoadministrativo_detail.html

@ -0,0 +1,9 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block actions %}
<div class="actions btn-group pull-right" role="group">
<a href="{% url 'protocoloadm:documentoadministrativo_detail' root_pk %}" class="btn btn-default">{% trans 'Início' %}</a>
<a href="{{ view.update_url }}" class="btn btn-default">{% trans 'Editar' %}</a>
<a href="{{ view.delete_url }}" class="btn btn-default">{% trans 'Excluir' %}</a>
</div>
{% endblock actions %}
Loading…
Cancel
Save