Browse Source

feat: Adiciona model para criar configuracoes de impressao de pagina

configuracao_impressao
joao 1 year ago
parent
commit
d94134cfbe
  1. 1
      sapl/configuracao_impressao/__init__.py
  2. 3
      sapl/configuracao_impressao/admin.py
  3. 8
      sapl/configuracao_impressao/apps.py
  4. 8
      sapl/configuracao_impressao/forms.py
  5. 35
      sapl/configuracao_impressao/migrations/0001_initial.py
  6. 49
      sapl/configuracao_impressao/migrations/0002_auto_20230731_1427.py
  7. 18
      sapl/configuracao_impressao/migrations/0003_auto_20230731_1429.py
  8. 0
      sapl/configuracao_impressao/migrations/__init__.py
  9. 52
      sapl/configuracao_impressao/models.py
  10. 3
      sapl/configuracao_impressao/tests.py
  11. 9
      sapl/configuracao_impressao/urls.py
  12. 33
      sapl/configuracao_impressao/views.py
  13. 3
      sapl/settings.py
  14. 18
      sapl/templates/configuracao_impressao/layouts.yaml
  15. 2
      sapl/urls.py

1
sapl/configuracao_impressao/__init__.py

@ -0,0 +1 @@
default_app_config = 'sapl.configuracao_impressao.apps.AppConfig'

3
sapl/configuracao_impressao/admin.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

8
sapl/configuracao_impressao/apps.py

@ -0,0 +1,8 @@
from django import apps
from django.utils.translation import ugettext_lazy as _
class AppConfig(apps.AppConfig):
name = 'sapl.configuracao_impressao'
label = 'configuracao_impressao'
verbose_name = _('Configuração de Impressão')

8
sapl/configuracao_impressao/forms.py

@ -0,0 +1,8 @@
from django import forms
from .models import ConfiguracaoImpressao
class ConfiguracaoImpressaoForm(forms.ModelForm):
class Meta:
model = ConfiguracaoImpressao
fields = '__all__'

35
sapl/configuracao_impressao/migrations/0001_initial.py

@ -0,0 +1,35 @@
# Generated by Django 2.2.28 on 2023-07-31 16:33
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='ConfiguracaoImpressao',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('identificador', models.CharField(help_text='Identificador único da configuração', max_length=100, unique=True, validators=[django.core.validators.RegexValidator('^[A-Z]+$', 'Digite apenas letras maiúsculas.')])),
('nome', models.CharField(help_text='Nome da configuração de impressão', max_length=100)),
('descricao', models.TextField(blank=True, help_text='Descrição da configuração de impressão')),
('largura_pagina', models.PositiveIntegerField(default=800, help_text='Largura da página em pixels')),
('altura_pagina', models.PositiveIntegerField(default=1200, help_text='Altura da página em pixels')),
('margem_superior', models.PositiveIntegerField(default=20, help_text='Margem superior da página em pixels')),
('margem_inferior', models.PositiveIntegerField(default=20, help_text='Margem inferior da página em pixels')),
('margem_esquerda', models.PositiveIntegerField(default=20, help_text='Margem esquerda da página em pixels')),
('margem_direita', models.PositiveIntegerField(default=20, help_text='Margem direita da página em pixels')),
('cor_fundo', models.CharField(default='#FFFFFF', help_text='Cor de fundo da página em formato hexadecimal', max_length=7)),
('tamanho_fonte', models.PositiveIntegerField(default=12, help_text='Tamanho padrão da fonte em pixels')),
('cor_fonte', models.CharField(default='#000000', help_text='Cor padrão da fonte em formato hexadecimal', max_length=7)),
('fonte', models.CharField(default='Arial', help_text='Família da fonte utilizada', max_length=100)),
('espacamento_linhas', models.PositiveIntegerField(default=1, help_text='Espaçamento entre linhas em pixels')),
],
),
]

49
sapl/configuracao_impressao/migrations/0002_auto_20230731_1427.py

@ -0,0 +1,49 @@
# Generated by Django 2.2.28 on 2023-07-31 17:27
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('configuracao_impressao', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='configuracaoimpressao',
name='altura_pagina',
field=models.DecimalField(decimal_places=2, default=1200, help_text='Altura da página em pixels', max_digits=6),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='identificador',
field=models.CharField(help_text='Identificador único da configuração', max_length=100, unique=True, validators=[django.core.validators.RegexValidator('^[A-Z0-9_-]+$', 'Digite apenas letras maiúsculas, números, underline (_) ou hífen (-).')]),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='largura_pagina',
field=models.DecimalField(decimal_places=2, default=800, help_text='Largura da página em pixels', max_digits=6),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='margem_direita',
field=models.DecimalField(decimal_places=2, default=20, help_text='Margem direita da página em pixels', max_digits=6),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='margem_esquerda',
field=models.DecimalField(decimal_places=2, default=20, help_text='Margem esquerda da página em pixels', max_digits=6),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='margem_inferior',
field=models.DecimalField(decimal_places=2, default=20, help_text='Margem inferior da página em pixels', max_digits=6),
),
migrations.AlterField(
model_name='configuracaoimpressao',
name='margem_superior',
field=models.DecimalField(decimal_places=2, default=20, help_text='Margem superior da página em pixels', max_digits=6),
),
]

18
sapl/configuracao_impressao/migrations/0003_auto_20230731_1429.py

@ -0,0 +1,18 @@
# Generated by Django 2.2.28 on 2023-07-31 17:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('configuracao_impressao', '0002_auto_20230731_1427'),
]
operations = [
migrations.AlterField(
model_name='configuracaoimpressao',
name='espacamento_linhas',
field=models.DecimalField(decimal_places=2, default=1, help_text='Espaçamento entre linhas em pixels', max_digits=6),
),
]

0
sapl/configuracao_impressao/migrations/__init__.py

52
sapl/configuracao_impressao/models.py

@ -0,0 +1,52 @@
from django.core.validators import RegexValidator
from django.db import models
class ConfiguracaoImpressao(models.Model):
# Campo para ser o identificador único da configuração de impressão
identificador = models.CharField(
max_length=100,
unique=True,
help_text="Identificador único da configuração",
validators=[
RegexValidator(
r'^[A-Z0-9_-]+$',
'Digite apenas letras maiúsculas, números, underline (_) ou hífen (-).'
)
]
)
# Campos para a configuração da página de impressão
nome = models.CharField(max_length=100, help_text="Nome da configuração de impressão")
# Campo de descrição para que o usuário possa identificar a configuração
descricao = models.TextField(blank=True, help_text="Descrição da configuração de impressão")
largura_pagina = models.DecimalField(max_digits=6, decimal_places=2, default=800,
help_text="Largura da página em pixels")
altura_pagina = models.DecimalField(max_digits=6, decimal_places=2, default=1200,
help_text="Altura da página em pixels")
margem_superior = models.DecimalField(max_digits=6, decimal_places=2, default=20,
help_text="Margem superior da página em pixels")
margem_inferior = models.DecimalField(max_digits=6, decimal_places=2, default=20,
help_text="Margem inferior da página em pixels")
margem_esquerda = models.DecimalField(max_digits=6, decimal_places=2, default=20,
help_text="Margem esquerda da página em pixels")
margem_direita = models.DecimalField(max_digits=6, decimal_places=2, default=20,
help_text="Margem direita da página em pixels")
cor_fundo = models.CharField(max_length=7, default="#FFFFFF",
help_text="Cor de fundo da página em formato hexadecimal")
tamanho_fonte = models.PositiveIntegerField(default=12,
help_text="Tamanho padrão da fonte em pixels")
cor_fonte = models.CharField(max_length=7, default="#000000",
help_text="Cor padrão da fonte em formato hexadecimal")
fonte = models.CharField(max_length=100, default="Arial",
help_text="Família da fonte utilizada")
espacamento_linhas = models.DecimalField(max_digits=6, decimal_places=2, default=1,
help_text="Espaçamento entre linhas em pixels")
def __str__(self):
return self.nome
class Meta:
verbose_name = "Configuração de Impressão"
verbose_name_plural = "Configurações de Impressão"
ordering = ['identificador', 'nome']

3
sapl/configuracao_impressao/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

9
sapl/configuracao_impressao/urls.py

@ -0,0 +1,9 @@
from django.conf.urls import include, url
from sapl.configuracao_impressao.views import (ConfiguracaoImpressaoCrud)
from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^configuracao_impressao/', include(ConfiguracaoImpressaoCrud.get_urls())),
]

33
sapl/configuracao_impressao/views.py

@ -0,0 +1,33 @@
from django.shortcuts import render, get_object_or_404, redirect
from .models import ConfiguracaoImpressao
from .forms import ConfiguracaoImpressaoForm
from sapl.crud.base import Crud, MasterDetailCrud
import os
class ConfiguracaoImpressaoCrud(Crud):
model = ConfiguracaoImpressao
class BaseMixin(Crud.BaseMixin):
list_field_names = ['identificador', 'nome', 'descricao']
class CreateView(Crud.CreateView):
form_class = ConfiguracaoImpressaoForm
def form_valid(self, form):
return super(Crud.CreateView, self).form_valid(form)
class UpdateView(Crud.UpdateView):
form_class = ConfiguracaoImpressaoForm
def get_initial(self):
initial = super().get_initial()
initial['identificador'] = self.object.identificador
return initial
class DetailView(Crud.DetailView):
layout_key = 'ConfiguracaoImpressaoDetail'
class ListView(Crud.ListView):
paginate_by = None
ordering = ['identificador', 'nome']

3
sapl/settings.py

@ -63,7 +63,8 @@ SAPL_APPS = (
'sapl.protocoloadm', 'sapl.protocoloadm',
'sapl.compilacao', 'sapl.compilacao',
'sapl.api', 'sapl.api',
'sapl.rules' 'sapl.rules',
'sapl.configuracao_impressao',
) )
INSTALLED_APPS = ( INSTALLED_APPS = (

18
sapl/templates/configuracao_impressao/layouts.yaml

@ -0,0 +1,18 @@
{% load i18n %}
ConfiguracaoImpressao:
{% trans 'Configuraçao de Impressao' %}:
- identificador nome
- descricao
- largura_pagina altura_pagina
- margem_superior margem_inferior margem_esquerda margem_direita
- cor_fundo tamanho_fonte cor_fonte
- fonte espacamento_linhas
ConfiguracaoImpressaoDetail:
{% trans 'Configuraçao de Impressao' %}:
- identificador nome
- descricao
- largura_pagina altura_pagina
- margem_superior margem_inferior margem_esquerda margem_direita
- cor_fundo tamanho_fonte cor_fonte
- fonte espacamento_linhas

2
sapl/urls.py

@ -34,6 +34,7 @@ import sapl.parlamentares.urls
import sapl.protocoloadm.urls import sapl.protocoloadm.urls
import sapl.relatorios.urls import sapl.relatorios.urls
import sapl.sessao.urls import sapl.sessao.urls
import sapl.configuracao_impressao.urls
urlpatterns = [] urlpatterns = []
@ -52,6 +53,7 @@ urlpatterns += [
url(r'', include(sapl.compilacao.urls)), url(r'', include(sapl.compilacao.urls)),
url(r'', include(sapl.relatorios.urls)), url(r'', include(sapl.relatorios.urls)),
url(r'', include(sapl.audiencia.urls)), url(r'', include(sapl.audiencia.urls)),
url(r'', include(sapl.configuracao_impressao.urls)),
# name='sapl_index'), # name='sapl_index'),
# must come at the end # must come at the end

Loading…
Cancel
Save