mirror of https://github.com/interlegis/sapl.git
joao
1 year ago
15 changed files with 241 additions and 1 deletions
@ -0,0 +1 @@ |
|||||
|
default_app_config = 'sapl.configuracao_impressao.apps.AppConfig' |
@ -0,0 +1,3 @@ |
|||||
|
from django.contrib import admin |
||||
|
|
||||
|
# Register your models here. |
@ -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') |
@ -0,0 +1,8 @@ |
|||||
|
from django import forms |
||||
|
from .models import ConfiguracaoImpressao |
||||
|
|
||||
|
|
||||
|
class ConfiguracaoImpressaoForm(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = ConfiguracaoImpressao |
||||
|
fields = '__all__' |
@ -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')), |
||||
|
], |
||||
|
), |
||||
|
] |
@ -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), |
||||
|
), |
||||
|
] |
@ -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,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'] |
@ -0,0 +1,3 @@ |
|||||
|
from django.test import TestCase |
||||
|
|
||||
|
# Create your tests here. |
@ -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())), |
||||
|
] |
@ -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'] |
@ -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 |
Loading…
Reference in new issue