Browse Source

Impl. #2936

pull/2919/head
João Rodrigues 6 years ago
parent
commit
1ee4c6a8f8
  1. 11
      sapl/protocoloadm/forms.py
  2. 33
      sapl/protocoloadm/migrations/0026_auto_20190815_1737.py
  3. 18
      sapl/protocoloadm/models.py
  4. 61
      sapl/protocoloadm/views.py
  5. 4
      sapl/templates/materia/materialegislativa_detail.html
  6. 4
      sapl/templates/materia/tramitacao_detail.html
  7. 4
      sapl/templates/norma/normajuridica_detail.html
  8. 54
      sapl/templates/protocoloadm/documentoadministrativo_detail.html
  9. 4
      sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html

11
sapl/protocoloadm/forms.py

@ -1090,10 +1090,17 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm):
'observacao', 'observacao',
'texto_integral', 'texto_integral',
'protocolo', 'protocolo',
'restrito' 'restrito',
'user',
'ip',
'ultima_edicao'
] ]
widgets = {'protocolo': forms.HiddenInput()} widgets = {'protocolo': forms.HiddenInput(),
'user': forms.HiddenInput(),
'ip': forms.HiddenInput(),
'ultima_edicao': forms.HiddenInput()
}
def clean(self): def clean(self):
super(DocumentoAdministrativoForm, self).clean() super(DocumentoAdministrativoForm, self).clean()

33
sapl/protocoloadm/migrations/0026_auto_20190815_1737.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.23 on 2019-08-15 20:37
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('protocoloadm', '0025_auto_20190815_1539'),
]
operations = [
migrations.AddField(
model_name='documentoadministrativo',
name='ip',
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'),
),
migrations.AddField(
model_name='documentoadministrativo',
name='ultima_edicao',
field=models.DateTimeField(blank=True, null=True, verbose_name='Data e Hora da Edição'),
),
migrations.AddField(
model_name='documentoadministrativo',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'),
),
]

18
sapl/protocoloadm/models.py

@ -186,6 +186,24 @@ class DocumentoAdministrativo(models.Model):
) )
) )
user = models.ForeignKey(
get_settings_auth_user_model(),
verbose_name=_('Usuário'),
on_delete=models.PROTECT,
null=True,
blank=True
)
ip = models.CharField(
verbose_name=_('IP'),
max_length=30,
blank=True,
default=''
)
ultima_edicao = models.DateTimeField(
verbose_name=_('Data e Hora da Edição'),
blank=True, null=True
)
class Meta: class Meta:
verbose_name = _('Documento Administrativo') verbose_name = _('Documento Administrativo')
verbose_name_plural = _('Documentos Administrativos') verbose_name_plural = _('Documentos Administrativos')

61
sapl/protocoloadm/views.py

@ -350,6 +350,17 @@ class DocumentoAdministrativoCrud(Crud):
form_class = DocumentoAdministrativoForm form_class = DocumentoAdministrativoForm
layout_key = None layout_key = None
def get_initial(self):
initial = super().get_initial()
initial['user'] = self.request.user
initial['ip'] = get_client_ip(self.request)
tz = timezone.get_current_timezone()
initial['ultima_edicao'] = tz.localize(datetime.now())
return initial
@property @property
def cancel_url(self): def cancel_url(self):
return self.search_url return self.search_url
@ -358,6 +369,33 @@ class DocumentoAdministrativoCrud(Crud):
form_class = DocumentoAdministrativoForm form_class = DocumentoAdministrativoForm
layout_key = None layout_key = None
def form_valid(self, form):
dict_objeto_antigo = DocumentoAdministrativo.objects.get(
pk=self.kwargs['pk']
).__dict__
self.object = form.save()
dict_objeto_novo = self.object.__dict__
atributos = [
'tipo_id', 'ano', 'numero', 'data', 'protocolo_id', 'assunto',
'interessado', 'tramitacao', 'restrito', 'texto_integral','numero_externo',
'dias_prazo', 'data_fim_prazo', 'observacao'
]
for atributo in atributos:
if dict_objeto_antigo[atributo] != dict_objeto_novo[atributo]:
self.object.user = self.request.user
self.object.ip = get_client_ip(self.request)
tz = timezone.get_current_timezone()
self.object.ultima_edicao = tz.localize(datetime.now())
self.object.save()
break
return super().form_valid(form)
def get_initial(self): def get_initial(self):
if self.object.protocolo: if self.object.protocolo:
p = self.object.protocolo p = self.object.protocolo
@ -372,7 +410,17 @@ class DocumentoAdministrativoCrud(Crud):
if documento.restrito and self.request.user.is_anonymous(): if documento.restrito and self.request.user.is_anonymous():
return redirect('/') return redirect('/')
return super(Crud.DetailView, self).get(args, kwargs) return super(Crud.DetailView, self).get(args, kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['user'] = self.request.user
context['documentoadministrativo'] = DocumentoAdministrativo.objects.get(
pk=self.kwargs['pk']
)
return context
def urlize(self, obj, fieldname): def urlize(self, obj, fieldname):
a = '<a href="%s">%s</a>' % ( a = '<a href="%s">%s</a>' % (
reverse( reverse(
@ -633,6 +681,12 @@ class CriarDocumentoProtocolo(PermissionRequiredMixin, CreateView):
doc['assunto'] = protocolo.assunto_ementa doc['assunto'] = protocolo.assunto_ementa
doc['interessado'] = protocolo.interessado doc['interessado'] = protocolo.interessado
doc['numero'] = numero_max + 1 if numero_max else 1 doc['numero'] = numero_max + 1 if numero_max else 1
doc['user'] = self.request.user
doc['ip'] = get_client_ip(self.request)
tz = timezone.get_current_timezone()
doc['ultima_edicao'] = tz.localize(datetime.now())
return doc return doc
@ -1358,6 +1412,13 @@ class DesvincularDocumentoView(PermissionRequiredMixin, CreateView):
ano=form.cleaned_data['ano'], ano=form.cleaned_data['ano'],
tipo=form.cleaned_data['tipo']) tipo=form.cleaned_data['tipo'])
documento.protocolo = None documento.protocolo = None
documento.user = self.request.user
documento.ip = get_client_ip(self.request)
tz = timezone.get_current_timezone()
documento.ultima_edicao = tz.localize(datetime.now())
documento.save() documento.save()
return redirect(self.get_success_url()) return redirect(self.get_success_url())

4
sapl/templates/materia/materialegislativa_detail.html

@ -54,7 +54,9 @@
<div class="controls"> <div class="controls">
<div class="form-control-static"> <div class="form-control-static">
<div class="dont-break-out"> <div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' materia.user.pk %}">{{ materia.user }}</a> <a href="{% url 'sapl.base:user_edit' materia.user.pk %}">
{{ materia.user }}
</a>
</div> </div>
</div> </div>
</div> </div>

4
sapl/templates/materia/tramitacao_detail.html

@ -12,7 +12,9 @@
<div class="controls"> <div class="controls">
<div class="form-control-static"> <div class="form-control-static">
<div class="dont-break-out"> <div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' tramitacao.user.pk %}">{{ tramitacao.user }}</a> <a href="{% url 'sapl.base:user_edit' tramitacao.user.pk %}">
{{ tramitacao.user }}
</a>
</div> </div>
</div> </div>
</div> </div>

4
sapl/templates/norma/normajuridica_detail.html

@ -93,7 +93,9 @@
<div class="controls"> <div class="controls">
<div class="form-control-static"> <div class="form-control-static">
<div class="dont-break-out"> <div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' object.user.pk %}">{{ object.user }}</a> <a href="{% url 'sapl.base:user_edit' object.user.pk %}">
{{ object.user }}
</a>
</div> </div>
</div> </div>
</div> </div>

54
sapl/templates/protocoloadm/documentoadministrativo_detail.html

@ -0,0 +1,54 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block detail_content %}
{{ block.super }}
{% if user.is_superuser %}
<div class="row">
{% if documentoadministrativo.user %}
<div class="col-sm-4">
<div id="div_id_user" class="form-group">
<p class="control-label">Usuário</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' documentoadministrativo.user.pk %}">
{{ documentoadministrativo.user }}
</a>
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% if documentoadministrativo.ip %}
<div class="col-sm-4">
<div id="div_ip_user" class="form-group">
<p class="control-label">IP</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">
{{ documentoadministrativo.ip }}
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% if documentoadministrativo.ultima_edicao %}
<div class="col-sm-4">
<div id="div_ud_user" class="form-group">
<p class="control-label">Data e Hora da Edição</p>
<div class="controls">
<div class="form-control-static">
<div class="dont-break-out">
{{ documentoadministrativo.ultima_edicao }}
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endif %}
{% endblock detail_content %}

4
sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html

@ -26,7 +26,9 @@
<div class="controls"> <div class="controls">
<div class="form-control-static"> <div class="form-control-static">
<div class="dont-break-out"> <div class="dont-break-out">
<a href="{% url 'sapl.base:user_edit' tramitacaoadministrativo.user.pk %}">{{ tramitacaoadministrativo.user }}</a> <a href="{% url 'sapl.base:user_edit' tramitacaoadministrativo.user.pk %}">
{{ tramitacaoadministrativo.user }}
</a>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save