Browse Source

Refatora Tramitacoes de Documentos Administrativos e faz alguns ajustes

pull/481/head
Eduardo Calil 10 years ago
parent
commit
0806e7853e
  1. 2
      materia/migrations/0036_merge.py
  2. 36
      protocoloadm/forms.py
  3. 9
      protocoloadm/layouts.yaml
  4. 19
      protocoloadm/migrations/0013_remove_tramitacaoadministrativo_ultima.py
  5. 1
      protocoloadm/models.py
  6. 13
      protocoloadm/urls.py
  7. 37
      protocoloadm/views.py
  8. 10
      templates/protocoloadm/documentoadministrativo_detail.html
  9. 6
      templates/protocoloadm/documentoadministrativo_filter.html
  10. 2
      templates/protocoloadm/protocolo_filter.html
  11. 9
      templates/protocoloadm/protocolo_pesquisa.html
  12. 1
      templates/protocoloadm/protocoloadm_detail.html

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

36
protocoloadm/forms.py

@ -1,9 +1,9 @@
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 _
@ -523,7 +523,6 @@ class TramitacaoAdmForm(ModelForm):
'data_encaminhamento', 'data_encaminhamento',
'data_fim_prazo', 'data_fim_prazo',
'texto', 'texto',
'documento',
] ]
widgets = { widgets = {
@ -532,22 +531,21 @@ 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() if self.errors:
self.helper.layout = Layout( return self.errors
Fieldset(_('Incluir Tramitação'),
'data_tramitacao', # ultima_tramitacao = TramitacaoAdministrativo.objects.filter(
'unidade_tramitacao_local', # documento_id=self.instance.documento.id).last()
'status',
'unidade_tramitacao_destino', # if ultima_tramitacao:
'data_encaminhamento', # destino = ultima_tramitacao.unidade_tramitacao_destino
'data_fim_prazo', # if (destino != self.cleaned_data['unidade_tramitacao_local']):
'texto'), # msg = _('A origem da nova tramitação deve ser igual ao '
Field('documento', type="hidden"), # 'destino da última adicionada!')
form_actions() # raise ValidationError(msg)
)
super(TramitacaoAdmForm, self).__init__( return self.cleaned_data
*args, **kwargs)
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',
),
]

1
protocoloadm/models.py

@ -186,7 +186,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(

13
protocoloadm/urls.py

@ -19,20 +19,17 @@ from protocoloadm.views import (AnularProtocoloAdmView,
ProtocoloPesquisaView, ProtocoloPesquisaView,
StatusTramitacaoAdministrativoCrud, StatusTramitacaoAdministrativoCrud,
TipoDocumentoAdministrativoCrud, TipoDocumentoAdministrativoCrud,
TipoInstituicaoCrud, TramitacaoAdmDeleteView, TipoInstituicaoCrud,
TramitacaoAdmEditView, TramitacaoAdmCrud,
TramitacaoAdmIncluirView, get_nome_autor, pesquisa_autores)
TramitacaoAdministrativoCrud,
TramitacaoAdmView, get_nome_autor,
pesquisa_autores)
from .apps import AppConfig from .apps import AppConfig
app_name = AppConfig.name 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/',

37
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
@ -29,16 +30,28 @@ 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, '')
StatusTramitacaoAdministrativoCrud = Crud.build(
StatusTramitacaoAdministrativo, '')
TramitacaoAdministrativoCrud = Crud.build(TramitacaoAdministrativo, '') TramitacaoAdministrativoCrud = Crud.build(TramitacaoAdministrativo, '')
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,6 +567,28 @@ class DocumentoAcessorioAdministrativoView(FormView):
return reverse('protocoloadm:doc_ace_adm', kwargs={'pk': pk}) return reverse('protocoloadm:doc_ace_adm', kwargs={'pk': pk})
class TramitacaoAdmCrud(MasterDetailCrud):
model = TramitacaoAdministrativo
parent_field = 'documento'
help_path = ''
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['data_tramitacao', 'unidade_tramitacao_local',
'unidade_tramitacao_destino', 'status']
class CreateView(MasterDetailCrud.CreateView):
form_class = TramitacaoAdmForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = TramitacaoAdmForm
class ListView(MasterDetailCrud.ListView):
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('-data_tramitacao')
class TramitacaoAdmView(FormView): class TramitacaoAdmView(FormView):
template_name = "protocoloadm/tramitacao.html" template_name = "protocoloadm/tramitacao.html"

10
templates/protocoloadm/documentoadministrativo_detail.html

@ -0,0 +1,10 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block actions %}
<h1><b>Protocolos</b></h1>
<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 %}

6
templates/protocoloadm/documentoadministrativo_filter.html

@ -5,15 +5,15 @@
{% block sections_nav %} {% endblock %} {% block sections_nav %} {% endblock %}
{% block actions %} {% block actions %}
<h1><b>Documentos Administrativos</b></h1>
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
<a href="docadm/create" class="btn btn-default">{% trans 'Adicionar Documento' %}</a> <a href="docadm/create" class="btn btn-default">{% trans 'Adicionar Documento Administrativo' %}</a>
</div> </div>
{% endblock actions %} {% endblock actions %}
{% block detail_content %} {% block detail_content %}
<h1><b>Pesquisar Documento Administrativo</b></h1>
<br></br>
{% crispy filter.form %} {% crispy filter.form %}

2
templates/protocoloadm/protocolo_filter.html

@ -18,7 +18,7 @@
{% crispy filter.form %} {% crispy filter.form %}
{% endif %} {% endif %}
{% crispy filter.form %}
{% if filter_url %} {% if filter_url %}
<p></p> <p></p>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">

9
templates/protocoloadm/protocolo_pesquisa.html

@ -1,9 +0,0 @@
{% extends "protocoloadm/protocoloadm_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<legend>Pesquisa Avançada</legend>
{% crispy form %}
</fieldset>
{% endblock detail_content %}

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>

Loading…
Cancel
Save