Browse Source

Adaptando pra ficar parecido com protocolo Fix #3138

pull/3162/head
ulysses 6 years ago
parent
commit
5ba692cf8a
  1. 7
      sapl/materia/migrations/0068_configetiquetamaterialegislativa.py
  2. 20
      sapl/materia/migrations/0069_auto_20200518_1519.py
  3. 8
      sapl/materia/models.py
  4. 5
      sapl/materia/urls.py
  5. 19
      sapl/materia/views.py
  6. 4
      sapl/relatorios/urls.py
  7. 31
      sapl/relatorios/views.py
  8. 19
      sapl/templates/materia/config_etiqueta_materia.html
  9. 2
      sapl/templates/materia/materialegislativa_filter.html
  10. 3
      sapl/templates/menu_tabelas_auxiliares.yaml
  11. 3
      sapl/templates/relatorios/etiqueta_materia_legislativa.html

7
sapl/materia/migrations/0068_configetiquetamaterialegislativa.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-05-13 14:15 # Generated by Django 1.11.29 on 2020-05-18 18:14
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models
@ -16,9 +16,8 @@ class Migration(migrations.Migration):
name='ConfigEtiquetaMateriaLegislativa', name='ConfigEtiquetaMateriaLegislativa',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('largura', models.FloatField()), ('largura', models.FloatField(default=5)),
('altura', models.FloatField()), ('altura', models.FloatField(default=3)),
('mostrar_em_arquivo', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Mostrar em arquivo ?')),
], ],
), ),
] ]

20
sapl/materia/migrations/0069_auto_20200518_1519.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-05-18 18:19
from __future__ import unicode_literals
from django.db import migrations
def create_first(apps, schema_editor):
db_alias = schema_editor.connection.alias
Type = apps.get_model("materia", "ConfigEtiquetaMateriaLegislativa")
Type.objects.using(db_alias).create()
class Migration(migrations.Migration):
dependencies = [
('materia', '0068_configetiquetamaterialegislativa'),
]
operations = [
migrations.RunPython(create_first),
]

8
sapl/materia/models.py

@ -1118,12 +1118,8 @@ class MateriaEmTramitacao(models.Model):
return '{}/{}'.format(self.materia, self.tramitacao) return '{}/{}'.format(self.materia, self.tramitacao)
class ConfigEtiquetaMateriaLegislativa(models.Model): class ConfigEtiquetaMateriaLegislativa(models.Model):
largura = models.FloatField() largura = models.FloatField(default=5)
altura = models.FloatField() altura = models.FloatField(default=3)
mostrar_em_arquivo = models.BooleanField(verbose_name=_('Mostrar em arquivo ?'),
choices=YES_NO_CHOICES,
default=False)
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.id = 1 self.id = 1

5
sapl/materia/urls.py

@ -28,7 +28,7 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
ExcluirTramitacaoEmLoteView, RetornarProposicao, ExcluirTramitacaoEmLoteView, RetornarProposicao,
MateriaPesquisaSimplesView, MateriaPesquisaSimplesView,
DespachoInicialMultiCreateView, get_zip_docacessorios, DespachoInicialMultiCreateView, get_zip_docacessorios,
get_pdf_docacessorios, ConfigEtiquetaMateriaLegislativaCrud) get_pdf_docacessorios, configEtiquetaMateriaLegislativaCrud)
from sapl.norma.views import NormaPesquisaSimplesView from sapl.norma.views import NormaPesquisaSimplesView
from sapl.protocoloadm.views import ( from sapl.protocoloadm.views import (
FichaPesquisaAdmView, FichaSelecionaAdmView) FichaPesquisaAdmView, FichaSelecionaAdmView)
@ -173,8 +173,7 @@ urlpatterns_sistema = [
url(r'^sistema/materia/status-tramitacao/', url(r'^sistema/materia/status-tramitacao/',
include(StatusTramitacaoCrud.get_urls())), include(StatusTramitacaoCrud.get_urls())),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^sistema/materia/config-etiqueta-materia-legislativas/', url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"),
include(ConfigEtiquetaMateriaLegislativaCrud.get_urls())),
] ]
urlpatterns = urlpatterns_impressos + urlpatterns_materia + \ urlpatterns = urlpatterns_impressos + urlpatterns_materia + \

19
sapl/materia/views.py

@ -32,6 +32,8 @@ from django.utils.translation import ugettext_lazy as _
from django.views.generic import CreateView, ListView, TemplateView, UpdateView from django.views.generic import CreateView, ListView, TemplateView, UpdateView
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django.shortcuts import render
from django_filters.views import FilterView from django_filters.views import FilterView
@ -2853,8 +2855,15 @@ def get_pdf_docacessorios(request, pk):
% external_name) % external_name)
return response return response
class ConfigEtiquetaMateriaLegislativaCrud(CrudAux): def configEtiquetaMateriaLegislativaCrud(request):
model = ConfigEtiquetaMateriaLegislativa config = ConfigEtiquetaMateriaLegislativa.objects.last()
if request.method == "POST":
class UpdateView(CrudAux.UpdateView): form = ConfigEtiquetaMateriaLegislativaForms(request.POST, instance=config)
form_class = ConfigEtiquetaMateriaLegislativaForms if form.is_valid():
config = form.save(commit=False)
config.published_date = timezone.now()
config.save()
return redirect('materia/config_etiqueta_materia.html', {'form': form})
else:
form = ConfigEtiquetaMateriaLegislativaForms(instance=config)
return render(request, 'materia/config_etiqueta_materia.html', {'form': form})

4
sapl/relatorios/urls.py

@ -6,7 +6,7 @@ from .views import (relatorio_capa_processo,
relatorio_etiqueta_protocolo, relatorio_materia, relatorio_etiqueta_protocolo, relatorio_materia,
relatorio_ordem_dia, relatorio_pauta_sessao, relatorio_ordem_dia, relatorio_pauta_sessao,
relatorio_protocolo, relatorio_sessao_plenaria, relatorio_protocolo, relatorio_sessao_plenaria,
resumo_ata_pdf, relatorio_sessao_plenaria_pdf, etiqueta_materia_legislativa, texto_articulado_com_etiqueta) resumo_ata_pdf, relatorio_sessao_plenaria_pdf, etiqueta_materia_legislativa)
app_name = AppConfig.name app_name = AppConfig.name
@ -35,6 +35,4 @@ urlpatterns = [
relatorio_sessao_plenaria_pdf, name='relatorio_sessao_plenaria_pdf'), relatorio_sessao_plenaria_pdf, name='relatorio_sessao_plenaria_pdf'),
url(r'^relatorios/(?P<pk>\d+)/etiqueta-materia-legislativa$', url(r'^relatorios/(?P<pk>\d+)/etiqueta-materia-legislativa$',
etiqueta_materia_legislativa, name='etiqueta_materia_legislativa'), etiqueta_materia_legislativa, name='etiqueta_materia_legislativa'),
url(r'^relatorios/(?P<pk>\d+)/texto_articulado_com_etiqueta$',
texto_articulado_com_etiqueta, name='texto_articulado_com_etiqueta'),
] ]

31
sapl/relatorios/views.py

@ -1573,11 +1573,10 @@ def gera_etiqueta_ml(materia_legislativa, base_url):
base64_data = create_barcode(ml_info, 100, 500) base64_data = create_barcode(ml_info, 100, 500)
barcode = 'data:image/png;base64,{0}'.format(base64_data) barcode = 'data:image/png;base64,{0}'.format(base64_data)
context = { context = {
'tipo': materia_legislativa.tipo, 'tipo': materia_legislativa.tipo,
'data_apresentacao':materia_legislativa.data_apresentacao, 'data_apresentacao':materia_legislativa.data_apresentacao,
'autores': materia_legislativa.autores, 'autores': materia_legislativa.autores.all(),
'ementa':materia_legislativa.ementa, 'ementa':materia_legislativa.ementa,
'largura': confg.largura, 'largura': confg.largura,
'altura':confg.largura, 'altura':confg.largura,
@ -1605,31 +1604,3 @@ def etiqueta_materia_legislativa(request, pk):
response.write(pdf_file) response.write(pdf_file)
return response return response
def texto_articulado_com_etiqueta(request,pk):
from shutil import move
import fitz
from pdf2image import convert_from_bytes
from io import BytesIO
from PIL.Image import FLIP_TOP_BOTTOM
base_url = request.build_absolute_uri()
materia_legislativa = MateriaLegislativa.objects.get(pk=pk)
input_file = materia_legislativa.texto_original.path
etiqueta = gera_etiqueta_ml(materia_legislativa, base_url)
img = convert_from_bytes(etiqueta)
aux_binary = BytesIO()
barcode_file = img[0].save(aux_binary,format="JPEG")
image_rectangle = fitz.Rect(500,600,800,900)
file_handle = fitz.open(input_file)
first_page = file_handle[0]
first_page.insertImage(image_rectangle, stream=aux_binary.getvalue(),rotate=270,keep_proportion=False)
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = 'inline; filename=relatorio.pdf'
response['Content-Transfer-Encoding'] = 'binary'
response.write(file_handle.write())
return response

19
sapl/templates/materia/config_etiqueta_materia.html

@ -0,0 +1,19 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block base_content %}
<h1>Configuração Etiqueta Materia Legislativa</h1>
<form action="." method="post">
{% csrf_token %}
{{ form|crispy }}
<div class="row">
<div class="col-md-12">
<div class="form-group row justify-content-between">
<a href="{% url 'sapl.base:sistema' %}" class="btn btn-dark">Cancelar</a>
<input type="submit" name="salvar" value="Salvar" class="btn btn-primary float-right" id="submit-id-salvar" onclick="this.form.submit();this.disabled=true;">
</div>
</div>
</div>
</form>
{% endblock base_content %}

2
sapl/templates/materia/materialegislativa_filter.html

@ -1,6 +1,7 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags common_tags%} {% load crispy_forms_tags common_tags%}
{% load webpack_static from webpack_loader %}
{% block actions %} {% block actions %}
@ -47,6 +48,7 @@
<tr> <tr>
<td> <td>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a> <strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a>
<a href="{% url 'sapl.relatorios:etiqueta_materia_legislativa' m.pk %}"><img src="{% webpack_static 'img/etiqueta.png' %}" alt="Etiqueta Individual"></a>
</br> </br>
<strong>Ementa:</strong>&nbsp;{{ m.ementa|dont_break_out }} <strong>Ementa:</strong>&nbsp;{{ m.ementa|dont_break_out }}
</br> </br>

3
sapl/templates/menu_tabelas_auxiliares.yaml

@ -116,6 +116,9 @@
- title: {% trans 'Assunto Matéria' %} - title: {% trans 'Assunto Matéria' %}
url: sapl.materia:assuntomateria_list url: sapl.materia:assuntomateria_list
css_class: btn btn-link css_class: btn btn-link
- title: {% trans 'Configuração Etiqueta Materia Legislativa' %}
url: sapl.materia:configEtiquetaMateriaLegislativaCrud
css_class: btn btn-link
- title: {% trans 'Módulo Normas Jurídicas' %} - title: {% trans 'Módulo Normas Jurídicas' %}
css_class: head_title css_class: head_title
children: children:

3
sapl/templates/relatorios/etiqueta_materia_legislativa.html

@ -10,6 +10,7 @@
@page{ @page{
margin: 0cm margin: 0cm
} }
div {page-break-inside: avoid;} div {page-break-inside: avoid;}
p { p {
font-size:3pt; font-size:3pt;
@ -23,7 +24,7 @@
<p><strong>Etiqueta Materia Legislativa</strong></p> <p><strong>Etiqueta Materia Legislativa</strong></p>
<p>{{tipo}}</p> <p>{{tipo}}</p>
<p>{{data_apresentacao}}</p> <p>{{data_apresentacao}}</p>
<p>{{autores}}</p> {% for autor in autores %}<p>{{autor}}{% if not forloop.last%}-{% endif %}</p>{% endfor %}
<p>{{ementa}}</p> <p>{{ementa}}</p>
<img src="{{barcode}}" style="width: 100%; height: 100%;" alt="{{barcode}}"> <img src="{{barcode}}" style="width: 100%; height: 100%;" alt="{{barcode}}">

Loading…
Cancel
Save