Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Adiciona model para criar configuracoes de impressao de pagina #3659

Open
wants to merge 1 commit into
base: 3.1.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions sapl/configuracao_impressao/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
default_app_config = 'sapl.configuracao_impressao.apps.AppConfig'
3 changes: 3 additions & 0 deletions sapl/configuracao_impressao/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
8 changes: 8 additions & 0 deletions sapl/configuracao_impressao/apps.py
Original file line number Diff line number Diff line change
@@ -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 changes: 8 additions & 0 deletions sapl/configuracao_impressao/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django import forms
from .models import ConfiguracaoImpressao


class ConfiguracaoImpressaoForm(forms.ModelForm):
class Meta:
model = ConfiguracaoImpressao
fields = '__all__'
35 changes: 35 additions & 0 deletions sapl/configuracao_impressao/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -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 changes: 49 additions & 0 deletions sapl/configuracao_impressao/migrations/0002_auto_20230731_1427.py
Original file line number Diff line number Diff line change
@@ -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 changes: 18 additions & 0 deletions sapl/configuracao_impressao/migrations/0003_auto_20230731_1429.py
Original file line number Diff line number Diff line change
@@ -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),
),
]
Empty file.
52 changes: 52 additions & 0 deletions sapl/configuracao_impressao/models.py
Original file line number Diff line number Diff line change
@@ -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 changes: 3 additions & 0 deletions sapl/configuracao_impressao/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
9 changes: 9 additions & 0 deletions sapl/configuracao_impressao/urls.py
Original file line number Diff line number Diff line change
@@ -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 changes: 33 additions & 0 deletions sapl/configuracao_impressao/views.py
Original file line number Diff line number Diff line change
@@ -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 changes: 2 additions & 1 deletion sapl/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@
'sapl.protocoloadm',
'sapl.compilacao',
'sapl.api',
'sapl.rules'
'sapl.rules',
'sapl.configuracao_impressao',
)

INSTALLED_APPS = (
Expand Down
18 changes: 18 additions & 0 deletions sapl/templates/configuracao_impressao/layouts.yaml
Original file line number Diff line number Diff line change
@@ -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 changes: 2 additions & 0 deletions sapl/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import sapl.protocoloadm.urls
import sapl.relatorios.urls
import sapl.sessao.urls
import sapl.configuracao_impressao.urls

urlpatterns = []

Expand All @@ -52,6 +53,7 @@
url(r'', include(sapl.compilacao.urls)),
url(r'', include(sapl.relatorios.urls)),
url(r'', include(sapl.audiencia.urls)),
url(r'', include(sapl.configuracao_impressao.urls)),

# name='sapl_index'),
# must come at the end
Expand Down