diff --git a/sapl/materia/migrations/0068_configetiquetamaterialegislativa.py b/sapl/materia/migrations/0068_configetiquetamaterialegislativa.py index bcabc1537..3dce8a3f3 100644 --- a/sapl/materia/migrations/0068_configetiquetamaterialegislativa.py +++ b/sapl/materia/migrations/0068_configetiquetamaterialegislativa.py @@ -1,5 +1,5 @@ # -*- 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 django.db import migrations, models @@ -16,9 +16,8 @@ class Migration(migrations.Migration): name='ConfigEtiquetaMateriaLegislativa', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('largura', models.FloatField()), - ('altura', models.FloatField()), - ('mostrar_em_arquivo', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Mostrar em arquivo ?')), + ('largura', models.FloatField(default=5)), + ('altura', models.FloatField(default=3)), ], ), ] diff --git a/sapl/materia/migrations/0069_auto_20200518_1519.py b/sapl/materia/migrations/0069_auto_20200518_1519.py new file mode 100644 index 000000000..4251cb6e9 --- /dev/null +++ b/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), + ] \ No newline at end of file diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 7c930ae80..fe0c45c39 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -1118,13 +1118,9 @@ class MateriaEmTramitacao(models.Model): return '{}/{}'.format(self.materia, self.tramitacao) class ConfigEtiquetaMateriaLegislativa(models.Model): - largura = models.FloatField() - altura = models.FloatField() - - mostrar_em_arquivo = models.BooleanField(verbose_name=_('Mostrar em arquivo ?'), - choices=YES_NO_CHOICES, - default=False) - + largura = models.FloatField(default=5) + altura = models.FloatField(default=3) + def save(self, *args, **kwargs): self.id = 1 return super().save(*args, **kwargs) \ No newline at end of file diff --git a/sapl/materia/urls.py b/sapl/materia/urls.py index 490862214..4c6c5166b 100644 --- a/sapl/materia/urls.py +++ b/sapl/materia/urls.py @@ -28,7 +28,7 @@ from sapl.materia.views import (AcompanhamentoConfirmarView, ExcluirTramitacaoEmLoteView, RetornarProposicao, MateriaPesquisaSimplesView, DespachoInicialMultiCreateView, get_zip_docacessorios, - get_pdf_docacessorios, ConfigEtiquetaMateriaLegislativaCrud) + get_pdf_docacessorios, configEtiquetaMateriaLegislativaCrud) from sapl.norma.views import NormaPesquisaSimplesView from sapl.protocoloadm.views import ( FichaPesquisaAdmView, FichaSelecionaAdmView) @@ -173,8 +173,7 @@ urlpatterns_sistema = [ url(r'^sistema/materia/status-tramitacao/', include(StatusTramitacaoCrud.get_urls())), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), - url(r'^sistema/materia/config-etiqueta-materia-legislativas/', - include(ConfigEtiquetaMateriaLegislativaCrud.get_urls())), + url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"), ] urlpatterns = urlpatterns_impressos + urlpatterns_materia + \ diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 6c0559e11..5d62caca4 100644 --- a/sapl/materia/views.py +++ b/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.base import RedirectView from django.views.generic.edit import FormView +from django.shortcuts import render + from django_filters.views import FilterView @@ -2853,8 +2855,15 @@ def get_pdf_docacessorios(request, pk): % external_name) return response -class ConfigEtiquetaMateriaLegislativaCrud(CrudAux): - model = ConfigEtiquetaMateriaLegislativa - - class UpdateView(CrudAux.UpdateView): - form_class = ConfigEtiquetaMateriaLegislativaForms +def configEtiquetaMateriaLegislativaCrud(request): + config = ConfigEtiquetaMateriaLegislativa.objects.last() + if request.method == "POST": + form = ConfigEtiquetaMateriaLegislativaForms(request.POST, instance=config) + 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}) \ No newline at end of file diff --git a/sapl/relatorios/urls.py b/sapl/relatorios/urls.py index b72cd14b9..e60a1e03e 100644 --- a/sapl/relatorios/urls.py +++ b/sapl/relatorios/urls.py @@ -6,7 +6,7 @@ from .views import (relatorio_capa_processo, relatorio_etiqueta_protocolo, relatorio_materia, relatorio_ordem_dia, relatorio_pauta_sessao, 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 @@ -35,6 +35,4 @@ urlpatterns = [ relatorio_sessao_plenaria_pdf, name='relatorio_sessao_plenaria_pdf'), url(r'^relatorios/(?P\d+)/etiqueta-materia-legislativa$', etiqueta_materia_legislativa, name='etiqueta_materia_legislativa'), - url(r'^relatorios/(?P\d+)/texto_articulado_com_etiqueta$', - texto_articulado_com_etiqueta, name='texto_articulado_com_etiqueta'), ] diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 17780221f..8c8578dcc 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1573,11 +1573,10 @@ def gera_etiqueta_ml(materia_legislativa, base_url): base64_data = create_barcode(ml_info, 100, 500) barcode = 'data:image/png;base64,{0}'.format(base64_data) - context = { 'tipo': materia_legislativa.tipo, 'data_apresentacao':materia_legislativa.data_apresentacao, - 'autores': materia_legislativa.autores, + 'autores': materia_legislativa.autores.all(), 'ementa':materia_legislativa.ementa, 'largura': confg.largura, 'altura':confg.largura, @@ -1604,32 +1603,4 @@ def etiqueta_materia_legislativa(request, pk): response['Content-Transfer-Encoding'] = 'binary' response.write(pdf_file) - 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 \ No newline at end of file diff --git a/sapl/templates/materia/config_etiqueta_materia.html b/sapl/templates/materia/config_etiqueta_materia.html new file mode 100644 index 000000000..cea6716c6 --- /dev/null +++ b/sapl/templates/materia/config_etiqueta_materia.html @@ -0,0 +1,19 @@ +{% extends "crud/form.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block base_content %} +

Configuração Etiqueta Materia Legislativa

+
+ {% csrf_token %} + {{ form|crispy }} +
+
+
+ Cancelar + +
+
+
+
+{% endblock base_content %} diff --git a/sapl/templates/materia/materialegislativa_filter.html b/sapl/templates/materia/materialegislativa_filter.html index 5cf56d17d..9e91c29b8 100644 --- a/sapl/templates/materia/materialegislativa_filter.html +++ b/sapl/templates/materia/materialegislativa_filter.html @@ -1,6 +1,7 @@ {% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags common_tags%} +{% load webpack_static from webpack_loader %} {% block actions %} @@ -47,6 +48,7 @@ {{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}} + Etiqueta Individual
Ementa: {{ m.ementa|dont_break_out }}
diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml index 9a9c40d8d..7453aeb12 100644 --- a/sapl/templates/menu_tabelas_auxiliares.yaml +++ b/sapl/templates/menu_tabelas_auxiliares.yaml @@ -116,6 +116,9 @@ - title: {% trans 'Assunto Matéria' %} url: sapl.materia:assuntomateria_list 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' %} css_class: head_title children: diff --git a/sapl/templates/relatorios/etiqueta_materia_legislativa.html b/sapl/templates/relatorios/etiqueta_materia_legislativa.html index d0be0e05e..eeb945ba9 100644 --- a/sapl/templates/relatorios/etiqueta_materia_legislativa.html +++ b/sapl/templates/relatorios/etiqueta_materia_legislativa.html @@ -10,6 +10,7 @@ @page{ margin: 0cm } + div {page-break-inside: avoid;} p { font-size:3pt; @@ -23,7 +24,7 @@

Etiqueta Materia Legislativa

{{tipo}}

{{data_apresentacao}}

-

{{autores}}

+ {% for autor in autores %}

{{autor}}{% if not forloop.last%}-{% endif %}

{% endfor %}

{{ementa}}

{{barcode}}