diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py
index ace3625..f25efa2 100644
--- a/sigi/apps/casas/admin.py
+++ b/sigi/apps/casas/admin.py
@@ -1,12 +1,13 @@
from django.contrib import admin
from django.contrib.contenttypes.admin import GenericTabularInline
+from django.template.loader import render_to_string
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _
from django_weasyprint.views import WeasyTemplateResponse
from import_export.fields import Field
from sigi.apps.casas.forms import OrgaoForm
-from sigi.apps.casas.models import Orgao, Presidente, Funcionario, TipoOrgao
+from sigi.apps.casas.models import Orgao, Funcionario, TipoOrgao
from sigi.apps.casas.filters import (
GerentesInterlegisFilter,
ConvenioFilter,
@@ -16,8 +17,10 @@ from sigi.apps.casas.filters import (
from sigi.apps.contatos.models import Telefone
from sigi.apps.convenios.models import Convenio
from sigi.apps.ocorrencias.models import Ocorrencia
+from sigi.apps.parlamentares.models import Parlamentar
from sigi.apps.servicos.models import Servico
from sigi.apps.servicos.filters import ServicoAtivoFilter
+from sigi.apps.servidores.models import Servidor
from sigi.apps.utils import queryset_ascii
from sigi.apps.utils.mixins import CartExportReportMixin, LabeledResourse
@@ -75,79 +78,30 @@ class TelefonesInline(GenericTabularInline):
extra = 1
-class PresidenteInline(admin.StackedInline):
- model = Presidente
+class ParlamentarInline(admin.StackedInline):
+ model = Parlamentar
fields = (
- "nome",
- "sexo",
+ "foto",
+ "nome_parlamentar",
+ "nome_completo",
+ "partido",
+ "presidente",
"data_nascimento",
"cpf",
"identidade",
- "nota",
+ "telefones",
"email",
- "tempo_de_servico",
- "ult_alteracao",
- "endereco",
- "municipio",
- "bairro",
- "cep",
"redes_sociais",
- )
- autocomplete_fields = ("municipio",)
- readonly_fields = ("ult_alteracao",)
- extra = 1
- max_num = 1
- verbose_name_plural = _("Presidente")
-
- def get_queryset(self, request):
- return (
- self.model.objects.exclude(desativado=True)
- .extra(select={"ult_null": "ult_alteracao is null"})
- .order_by("ult_null", "-ult_alteracao")
- # A função extra foi usada para quando existir um registro com o
- # campo igual a null não aparecer na frente dos mais novos
- )
-
-
-class ContatoInterlegisInline(admin.StackedInline):
- model = Funcionario
- fields = (
- "nome",
- "sexo",
- "data_nascimento",
- "cpf",
- "identidade",
- "nota",
- "email",
- "cargo",
- "funcao",
- "setor",
- "tempo_de_servico",
"ult_alteracao",
- "endereco",
- "municipio",
- "bairro",
- "cep",
- "redes_sociais",
- "desativado",
- "observacoes",
)
- autocomplete_fields = ("municipio",)
readonly_fields = ("ult_alteracao",)
- extra = 1
- inlines = (TelefonesInline,)
- verbose_name_plural = _("Contato(s) Interlegis Vigente(s)")
+ extra = 0
- def get_queryset(self, request):
- return (
- self.model.objects.filter(setor="contato_interlegis")
- .extra(select={"ult_null": "ult_alteracao is null"})
- .order_by("-ult_alteracao")
- )
+ def has_add_permission(self, request, *args, **kwargs):
+ return False
- def get_extra(self, request, obj=None, **kwargs):
- extra = 0
- return extra
+ def has_delete_permission(self, request, *args, **kwargs):
+ return False
class FuncionariosInline(admin.StackedInline):
@@ -174,15 +128,11 @@ class FuncionariosInline(admin.StackedInline):
autocomplete_fields = ("municipio",)
readonly_fields = ("ult_alteracao",)
extra = 1
- inlines = (TelefonesInline,)
- verbose_name_plural = _("Outros Contatos da Casa")
+ verbose_name_plural = _("Contatos da Casa")
def get_queryset(self, request):
return (
- self.model.objects.exclude(
- cargo="Presidente",
- )
- .exclude(desativado=True)
+ self.model.objects.exclude(desativado=True)
.extra(select={"ult_null": "ult_alteracao is null"})
.order_by("ult_null", "-ult_alteracao")
# A função extra foi usada para quando existir um registro com
@@ -190,71 +140,46 @@ class FuncionariosInline(admin.StackedInline):
)
-class ConveniosInline(admin.TabularInline):
+class ConveniosInline(admin.StackedInline):
model = Convenio
- fieldsets = (
- (
- None,
- {
- "fields": (
- (
- "link_sigad",
- "status_convenio",
- "num_convenio",
- "projeto",
- "observacao",
- ),
- (
- "data_retorno_assinatura",
- "data_pub_diario",
- ),
- ("get_anexos",),
- ("link_convenio",),
- )
- },
- ),
- )
- readonly_fields = [
- "link_convenio",
+ fields = (
+ "num_processo_sf",
"link_sigad",
"status_convenio",
"num_convenio",
"projeto",
"observacao",
- "data_adesao",
"data_retorno_assinatura",
- "data_termo_aceite",
+ "data_termino_vigencia",
"data_pub_diario",
- "data_devolucao_via",
- "data_postagem_correio",
- "data_devolucao_sem_assinatura",
- "data_retorno_sem_assinatura",
+ "data_sigad",
+ "data_solicitacao",
+ "get_anexos",
+ )
+ readonly_fields = [
+ "link_sigad",
+ "status_convenio",
"get_anexos",
]
+ ordering = ("-data_retorno_assinatura",)
extra = 0
can_delete = False
- ordering = ("-data_retorno_assinatura",)
-
- def has_add_permission(self, request, obj):
- return False
+ show_change_link = True
+ @admin.display(description=_("Anexos"))
def get_anexos(self, obj):
return mark_safe(
- "
".join(
- [
- f'{a}'
- for a in obj.anexo_set.all()
- ]
+ render_to_string(
+ "admin/casas/anexo_convenio_snippet.html",
+ context={"anexos": obj.anexo_set.all()},
)
)
- get_anexos.short_description = _("Anexos")
-
+ @admin.display(description=_("Status do convênio"))
def status_convenio(self, obj):
if obj.pk is None:
return ""
status = obj.get_status()
-
if status in ["Vencido", "Desistência", "Cancelado"]:
label = r"danger"
elif status == "Vigente":
@@ -263,33 +188,16 @@ class ConveniosInline(admin.TabularInline):
label = r"warning"
else:
label = r"info"
-
return mark_safe(f'
{status}
')
- status_convenio.short_description = _("Status do convênio")
-
- def link_convenio(self, obj):
- if obj.pk is None:
- return ""
- opts = self.opts
- url = reverse(
- f"admin:{opts.app_label}_{opts.model_name}_change", args=[obj.pk]
- )
- return mark_safe(
- f'edit'
- )
-
- link_convenio.short_description = _("Editar convenio")
-
+ @admin.display(description=_("Ver no SIGAD"))
def link_sigad(self, obj):
if obj.pk is None:
return ""
- return mark_safe(obj.get_sigad_url())
-
- link_sigad.short_description = _("Processo no Senado")
+ return mark_safe(obj.get_sigad_url(display_type="icone"))
-class ServicoInline(admin.TabularInline):
+class ServicoInline(admin.StackedInline):
model = Servico
fields = (
"tipo_servico",
@@ -301,45 +209,38 @@ class ServicoInline(admin.TabularInline):
"motivo_desativacao",
)
readonly_fields = ["data_alteracao"]
- extra = 1
ordering = ("tipo_servico", "-data_alteracao")
+ extra = 0
+ show_change_link = True
-class OcorrenciaInline(admin.TabularInline):
+class OcorrenciaInline(admin.StackedInline):
model = Ocorrencia
fields = (
"data_criacao",
+ "categoria",
+ "tipo_contato",
"assunto",
"prioridade",
"status",
+ "descricao",
+ "resolucao",
+ "ticket",
"data_modificacao",
- "link_editar",
)
readonly_fields = (
"data_criacao",
- "assunto",
- "prioridade",
- "status",
"data_modificacao",
- "link_editar",
)
+ ordering = ("-data_modificacao",)
extra = 0
- max_num = 0
can_delete = False
- ordering = ("-data_modificacao",)
+ show_change_link = True
- def link_editar(self, obj):
- if obj.pk is None:
- return ""
- opts = self.opts
- url = reverse(
- f"admin:{opts.app_label}_{opts.model_name}_change", args=[obj.pk]
- )
- return mark_safe(
- f'edit'
- )
-
- link_editar.short_description = _("Editar")
+ def has_add_permission(self, request, obj):
+ if Servidor.objects.filter(user=request.user).exists():
+ return super().has_add_permission(request, obj)
+ return False
@admin.register(Orgao)
@@ -348,8 +249,7 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
resource_class = OrgaoExportResourse
inlines = (
TelefonesInline,
- PresidenteInline,
- ContatoInterlegisInline,
+ ParlamentarInline,
FuncionariosInline,
ConveniosInline,
ServicoInline,
@@ -365,6 +265,7 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
"get_servicos",
)
list_display_links = (
+ "id",
"sigla",
"nome",
)
@@ -464,6 +365,20 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
queryset = super(OrgaoAdmin, self).get_queryset(request)
return queryset.prefetch_related("gerentes_interlegis", "convenio_set")
+ def save_related(self, request, form, formsets, change):
+ for formset in formsets:
+ if formset.model == Ocorrencia:
+ formset.save(commit=False)
+ for obj in formset.new_objects:
+ if (
+ not hasattr(obj, "servidor_registro")
+ or obj.servidor_registro is None
+ ):
+ obj.servidor_registro = Servidor.objects.get(
+ user=request.user
+ )
+ return super().save_related(request, form, formsets, change)
+
def get_uf(self, obj):
return obj.municipio.uf.nome
diff --git a/sigi/apps/casas/migrations/0024_delete_presidente.py b/sigi/apps/casas/migrations/0024_delete_presidente.py
new file mode 100644
index 0000000..512fbfe
--- /dev/null
+++ b/sigi/apps/casas/migrations/0024_delete_presidente.py
@@ -0,0 +1,16 @@
+# Generated by Django 4.0.4 on 2022-06-18 13:14
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('casas', '0023_funcionario_cpf_funcionario_identidade'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='Presidente',
+ ),
+ ]
diff --git a/sigi/apps/casas/models.py b/sigi/apps/casas/models.py
index e86e196..345ef1d 100644
--- a/sigi/apps/casas/models.py
+++ b/sigi/apps/casas/models.py
@@ -149,7 +149,7 @@ class Orgao(models.Model):
@property
def num_parlamentares(self):
- return 0
+ return self.parlamentar_set.count()
@property
def telefone(self):
@@ -160,28 +160,11 @@ class Orgao(models.Model):
@property
def presidente(self):
- try:
- if self.funcionario_set.filter(setor="presidente").count() > 1:
- return self.funcionario_set.filter(setor="presidente")[0]
- else:
- return self.funcionario_set.get(setor="presidente")
- except Funcionario.DoesNotExist:
- return None
+ return self.parlamentar_set.filter(presidente=True).first()
@property
def contato_interlegis(self):
- try:
- if (
- self.funcionario_set.filter(setor="contato_interlegis").count()
- > 1
- ):
- return self.funcionario_set.filter(setor="contato_interlegis")[
- 0
- ]
- else:
- return self.funcionario_set.get(setor="contato_interlegis")
- except Funcionario.DoesNotExist:
- return None
+ return self.funcionario_set.filter(setor="contato_interlegis").first()
def __str__(self):
return self.nome
@@ -308,23 +291,3 @@ class Funcionario(models.Model):
def __str__(self):
return self.nome
-
-
-class PresidenteManager(models.Manager):
- def get_queryset(self):
- qs = super(PresidenteManager, self).get_queryset()
- qs = qs.filter(setor="presidente")
- return qs
-
-
-class Presidente(Funcionario):
- class Meta:
- proxy = True
-
- objects = PresidenteManager()
-
- def save(self, *args, **kwargs):
- self.setor = "presidente"
- self.cargo = "Presidente"
- self.funcao = "Presidente"
- return super(Presidente, self).save(*args, **kwargs)
diff --git a/sigi/apps/casas/templates/admin/casas/anexo_convenio_snippet.html b/sigi/apps/casas/templates/admin/casas/anexo_convenio_snippet.html
new file mode 100644
index 0000000..466bfbb
--- /dev/null
+++ b/sigi/apps/casas/templates/admin/casas/anexo_convenio_snippet.html
@@ -0,0 +1,10 @@
+{% load i18n %}
+{% if not anexos %}
+ {% trans "Nenhum anexo no convênio" %}
+{% else %}
+
+ {% for anexo in anexos %}
+
{{ anexo }}
+ {% endfor %}
+
+{% endif %}
\ No newline at end of file
diff --git a/sigi/apps/casas/templates/admin/casas/orgao/change_form.html b/sigi/apps/casas/templates/admin/casas/orgao/change_form.html
new file mode 100644
index 0000000..37ed774
--- /dev/null
+++ b/sigi/apps/casas/templates/admin/casas/orgao/change_form.html
@@ -0,0 +1,75 @@
+{% extends "admin/change_form.html" %}
+{% load i18n %}
+
+{% block extrastyle %}
+ {{ block.super }}
+{% endblock %}
+
+{% block form_top %}
+
+{% endblock %}
+
+{% block field_sets %}
+{% for fieldset in adminform %}
+
+ {% include "admin/includes/fieldset.html" %}
+
+{% endfor %}
+{% endblock %}
+
+{% block inline_field_sets %}
+{% for inline_admin_formset in inline_admin_formsets %}
+
+ {% include inline_admin_formset.opts.template %}
+
+{% endfor %}
+{% endblock %}
+
+
+{% block footer %}
+ {{ block.super }}
+
+
+{% endblock %}
diff --git a/sigi/apps/casas/views.py b/sigi/apps/casas/views.py
index f00bde6..c2ab642 100644
--- a/sigi/apps/casas/views.py
+++ b/sigi/apps/casas/views.py
@@ -1,23 +1,15 @@
import csv
from functools import reduce
-
-from django.contrib import messages
-from sigi.apps.utils import to_ascii
-
-from django.conf import settings
+from django.db.models import Count, Q
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, InvalidPage, EmptyPage
-from django.db.models import Count, Q
from django.http import (
HttpResponse,
HttpResponseRedirect,
- HttpResponseForbidden,
)
from django.shortcuts import render, get_object_or_404
from django.utils.translation import gettext as _, ngettext
-from django.views.generic import View
from django_weasyprint.views import WeasyTemplateView
-
from sigi.apps.casas.forms import PortfolioForm, AtualizaCasaForm
from sigi.apps.casas.models import Orgao, TipoOrgao, Funcionario
from sigi.apps.servidores.models import Servidor
diff --git a/sigi/apps/convenios/migrations/0025_alter_projeto_modelo_minuta_and_more.py b/sigi/apps/convenios/migrations/0025_alter_projeto_modelo_minuta_and_more.py
new file mode 100644
index 0000000..81fe8c1
--- /dev/null
+++ b/sigi/apps/convenios/migrations/0025_alter_projeto_modelo_minuta_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.4 on 2022-06-20 23:56
+
+import django.core.validators
+from django.db import migrations, models
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('convenios', '0024_alter_anexo_data_pub'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='projeto',
+ name='modelo_minuta',
+ field=models.FileField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ ente }}: Ente da federação (município/estado)
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', upload_to='convenios/minutas/', validators=[django.core.validators.FileExtensionValidator(['docx'])], verbose_name='Modelo de minuta'),
+ ),
+ migrations.AlterField(
+ model_name='projeto',
+ name='texto_oficio',
+ field=tinymce.models.HTMLField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', verbose_name='texto do ofício'),
+ ),
+ ]
diff --git a/sigi/apps/convenios/migrations/0026_alter_projeto_modelo_minuta_and_more.py b/sigi/apps/convenios/migrations/0026_alter_projeto_modelo_minuta_and_more.py
new file mode 100644
index 0000000..ce7dc7d
--- /dev/null
+++ b/sigi/apps/convenios/migrations/0026_alter_projeto_modelo_minuta_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.4 on 2022-06-21 12:05
+
+import django.core.validators
+from django.db import migrations, models
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('convenios', '0025_alter_projeto_modelo_minuta_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='projeto',
+ name='modelo_minuta',
+ field=models.FileField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.numero_tse }}: Número TSE
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ ente }}: Ente da federação (município/estado)
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', upload_to='convenios/minutas/', validators=[django.core.validators.FileExtensionValidator(['docx'])], verbose_name='Modelo de minuta'),
+ ),
+ migrations.AlterField(
+ model_name='projeto',
+ name='texto_oficio',
+ field=tinymce.models.HTMLField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.numero_tse }}: Número TSE
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', verbose_name='texto do ofício'),
+ ),
+ ]
diff --git a/sigi/apps/convenios/migrations/0027_alter_projeto_modelo_minuta_and_more.py b/sigi/apps/convenios/migrations/0027_alter_projeto_modelo_minuta_and_more.py
new file mode 100644
index 0000000..aaa374a
--- /dev/null
+++ b/sigi/apps/convenios/migrations/0027_alter_projeto_modelo_minuta_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.4 on 2022-06-21 13:23
+
+import django.core.validators
+from django.db import migrations, models
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('convenios', '0026_alter_projeto_modelo_minuta_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='projeto',
+ name='modelo_minuta',
+ field=models.FileField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.sequencial_tse }}: Sequencial TSE
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ ente }}: Ente da federação (município/estado)
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', upload_to='convenios/minutas/', validators=[django.core.validators.FileExtensionValidator(['docx'])], verbose_name='Modelo de minuta'),
+ ),
+ migrations.AlterField(
+ model_name='projeto',
+ name='texto_oficio',
+ field=tinymce.models.HTMLField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.sequencial_tse }}: Sequencial TSE
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', verbose_name='texto do ofício'),
+ ),
+ ]
diff --git a/sigi/apps/convenios/migrations/0028_alter_projeto_modelo_minuta_and_more.py b/sigi/apps/convenios/migrations/0028_alter_projeto_modelo_minuta_and_more.py
new file mode 100644
index 0000000..8bffff2
--- /dev/null
+++ b/sigi/apps/convenios/migrations/0028_alter_projeto_modelo_minuta_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.4 on 2022-06-21 19:28
+
+import django.core.validators
+from django.db import migrations, models
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('convenios', '0027_alter_projeto_modelo_minuta_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='projeto',
+ name='modelo_minuta',
+ field=models.FileField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ presidente.sequencial_tse }}: Sequencial TSE
\n \n - {{ presidente.flag_importa }}: flag importa
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ ente }}: Ente da federação (município/estado)
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', upload_to='convenios/minutas/', validators=[django.core.validators.FileExtensionValidator(['docx'])], verbose_name='Modelo de minuta'),
+ ),
+ migrations.AlterField(
+ model_name='projeto',
+ name='texto_oficio',
+ field=tinymce.models.HTMLField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ presidente.sequencial_tse }}: Sequencial TSE
\n \n - {{ presidente.flag_importa }}: flag importa
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', verbose_name='texto do ofício'),
+ ),
+ ]
diff --git a/sigi/apps/convenios/migrations/0029_alter_projeto_modelo_minuta_and_more.py b/sigi/apps/convenios/migrations/0029_alter_projeto_modelo_minuta_and_more.py
new file mode 100644
index 0000000..66f1196
--- /dev/null
+++ b/sigi/apps/convenios/migrations/0029_alter_projeto_modelo_minuta_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 4.0.4 on 2022-06-21 22:24
+
+import django.core.validators
+from django.db import migrations, models
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('convenios', '0028_alter_projeto_modelo_minuta_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='projeto',
+ name='modelo_minuta',
+ field=models.FileField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n', upload_to='convenios/minutas/', validators=[django.core.validators.FileExtensionValidator(['docx'])], verbose_name='Modelo de minuta'),
+ ),
+ migrations.AlterField(
+ model_name='projeto',
+ name='texto_oficio',
+ field=tinymce.models.HTMLField(blank=True, help_text='\nUtilize os seguintes placeholders\n\n
\n
Placeholders
\n
\n \n - {{ evento }}: Evento
\n \n - {{ evento.nome }}: Nome do evento
\n \n - {{ evento.descricao }}: Descrição do evento
\n \n - {{ evento.virtual }}: Virtual
\n \n - {{ evento.solicitante }}: Solicitante
\n \n - {{ evento.num_processo }}: número do processo SIGAD
\n \n - {{ evento.data_pedido }}: Data do pedido
\n \n - {{ evento.data_inicio }}: Data/hora do Início
\n \n - {{ evento.data_termino }}: Data/hora do Termino
\n \n - {{ evento.carga_horaria }}: carga horária
\n \n - {{ evento.local }}: Local do evento
\n \n - {{ evento.observacao }}: Observações e anotações
\n \n - {{ evento.publico_alvo }}: Público alvo
\n \n - {{ evento.total_participantes }}: Total de participantes
\n \n - {{ evento.status }}: Status
\n \n - {{ evento.data_cancelamento }}: Data de cancelamento
\n \n - {{ evento.motivo_cancelamento }}: Motivo do cancelamento
\n \n - {{ casa }}: Órgão
\n \n - {{ casa.nome }}: nome
\n \n - {{ casa.sigla }}: sigla do órgão
\n \n - {{ casa.search_text }}: search text
\n \n - {{ casa.cnpj }}: CNPJ
\n \n - {{ casa.observacoes }}: observações
\n \n - {{ casa.horario_funcionamento }}: horário de funcionamento da Casa Legislativa
\n \n - {{ casa.codigo_interlegis }}: código Interlegis
\n \n - {{ casa.logradouro }}: logradouro
\n \n - {{ casa.bairro }}: bairro
\n \n - {{ casa.cep }}: CEP
\n \n - {{ casa.email }}: e-mail
\n \n - {{ casa.pagina_web }}: página web
\n \n - {{ casa.inclusao_digital }}: inclusão digital
\n \n - {{ casa.data_levantamento }}: data/hora da pesquisa
\n \n - {{ casa.obs_pesquisa }}: observações do pesquisador
\n \n - {{ casa.ult_alt_endereco }}: última alteração do endereço
\n \n - {{ casa.foto }}: foto
\n \n - {{ casa.foto_largura }}: foto largura
\n \n - {{ casa.foto_altura }}: foto altura
\n \n - {{ casa.data_instalacao }}: data de instalação da Casa Legislativa
\n \n - {{ casa.brasao }}: brasão
\n \n - {{ casa.brasao_largura }}: brasao largura
\n \n - {{ casa.brasao_altura }}: brasao altura
\n \n - {{ presidente }}: Parlamentar
\n \n - {{ presidente.ano_eleicao }}: Ano de eleição
\n \n - {{ presidente.status_mandato }}: status do mandato
\n \n - {{ presidente.presidente }}: presidente
\n \n - {{ presidente.nome_completo }}: nome completo
\n \n - {{ presidente.nome_parlamentar }}: nome parlamentar
\n \n - {{ presidente.foto }}: foto
\n \n - {{ presidente.foto_largura }}: foto largura
\n \n - {{ presidente.foto_altura }}: foto altura
\n \n - {{ presidente.data_nascimento }}: data de nascimento
\n \n - {{ presidente.cpf }}: CPF
\n \n - {{ presidente.identidade }}: Identidade (RG)
\n \n - {{ presidente.telefones }}: telefones
\n \n - {{ presidente.email }}: e-mail
\n \n - {{ presidente.redes_sociais }}: redes sociais
\n \n - {{ presidente.ult_alteracao }}: última alteração
\n \n - {{ presidente.observacoes }}: observações
\n \n - {{ presidente.sequencial_tse }}: Sequencial TSE
\n \n - {{ presidente.flag_importa }}: flag importa
\n \n - {{ contato }}: Contato da casa legislativa
\n \n - {{ contato.nome }}: nome completo
\n \n - {{ contato.sexo }}: sexo
\n \n - {{ contato.data_nascimento }}: data de nascimento
\n \n - {{ contato.cpf }}: CPF
\n \n - {{ contato.identidade }}: Identidade (RG)
\n \n - {{ contato.nota }}: telefones
\n \n - {{ contato.email }}: e-mail
\n \n - {{ contato.endereco }}: endereço
\n \n - {{ contato.bairro }}: bairro
\n \n - {{ contato.cep }}: CEP
\n \n - {{ contato.redes_sociais }}: redes sociais
\n \n - {{ contato.cargo }}: cargo
\n \n - {{ contato.funcao }}: função
\n \n - {{ contato.setor }}: setor
\n \n - {{ contato.tempo_de_servico }}: tempo de serviço
\n \n - {{ contato.ult_alteracao }}: última alteração
\n \n - {{ contato.desativado }}: desativado
\n \n - {{ contato.observacoes }}: observações
\n \n - {{ casa.municipio }}: Município
\n \n - {{ casa.municipio.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.codigo_tse }}: código TSE
\n \n - {{ casa.municipio.nome }}: nome
\n \n - {{ casa.municipio.search_text }}: search text
\n \n - {{ casa.municipio.is_capital }}: capital
\n \n - {{ casa.municipio.populacao }}: população
\n \n - {{ casa.municipio.is_polo }}: pólo
\n \n - {{ casa.municipio.data_criacao }}: data de criação do município
\n \n - {{ casa.municipio.latitude }}: latitude
\n \n - {{ casa.municipio.longitude }}: longitude
\n \n - {{ casa.municipio.idh }}: IDH
\n \n - {{ casa.municipio.pib_total }}: PIB total
\n \n - {{ casa.municipio.pib_percapita }}: PIB per capita
\n \n - {{ casa.municipio.pib_ano }}: Ano de apuração do PIB
\n \n - {{ casa.municipio.uf }}: Unidade federativa
\n \n - {{ casa.municipio.uf.codigo_ibge }}: código IBGE
\n \n - {{ casa.municipio.uf.nome }}: nome UF
\n \n - {{ casa.municipio.uf.search_text }}: search text
\n \n - {{ casa.municipio.uf.sigla }}: sigla
\n \n - {{ casa.municipio.uf.regiao }}: região
\n \n - {{ casa.municipio.uf.populacao }}: população
\n \n - {{ data }}: Data atual
\n \n - {{ doravante }}: CÂMARA ou ASSEMBLEIA
\n \n
\n
\n \n
\n', verbose_name='texto do ofício'),
+ ),
+ ]
diff --git a/sigi/apps/convenios/models.py b/sigi/apps/convenios/models.py
index 379757c..abd8143 100644
--- a/sigi/apps/convenios/models.py
+++ b/sigi/apps/convenios/models.py
@@ -11,6 +11,7 @@ from django.utils.translation import gettext as _
from tinymce.models import HTMLField
from sigi.apps.contatos.models import Municipio, UnidadeFederativa
from sigi.apps.eventos.models import Evento
+from sigi.apps.parlamentares.models import Parlamentar
from sigi.apps.utils import to_ascii
from sigi.apps.casas.models import Funcionario, Orgao
from sigi.apps.servidores.models import Servidor, Servico
@@ -23,7 +24,7 @@ class Projeto(models.Model):
[
("evento", Evento),
("casa", Orgao),
- ("presidente", Funcionario),
+ ("presidente", Parlamentar),
("contato", Funcionario),
("casa.municipio", Municipio),
("casa.municipio.uf", UnidadeFederativa),
@@ -36,7 +37,7 @@ class Projeto(models.Model):
[
("evento", Evento),
("casa", Orgao),
- ("presidente", Funcionario),
+ ("presidente", Parlamentar),
("contato", Funcionario),
("casa.municipio", Municipio),
("casa.municipio.uf", UnidadeFederativa),
@@ -263,20 +264,27 @@ class Convenio(models.Model):
return ""
return obj.get_sigad_url()
- def get_sigad_url(self):
+ def get_sigad_url(self, display_type="numero"):
m = re.match(
r"(?P00100|00200)\.(?P\d{6})/(?P\d{4})-\d{2}",
self.num_processo_sf,
)
if m:
orgao, sequencial, ano = m.groups()
+ if display_type == "numero":
+ display = self.num_processo_sf
+ else:
+ display = "visibility"
return (
f'{self.num_processo_sf}'
+ f'target="_blank">{display}'
)
- return self.num_processo_sf
+ if display_type == "numero":
+ return self.num_processo_sf
+ else:
+ return "visibility_off"
def save(self, *args, **kwargs):
self.conveniada = self.data_retorno_assinatura is not None
diff --git a/sigi/apps/eventos/forms.py b/sigi/apps/eventos/forms.py
index b14da76..e56b4b9 100644
--- a/sigi/apps/eventos/forms.py
+++ b/sigi/apps/eventos/forms.py
@@ -3,6 +3,7 @@ from django.utils.translation import gettext as _
from material.admin.widgets import MaterialAdminTextareaWidget
from sigi.apps.casas.models import Funcionario, Orgao
from sigi.apps.eventos.models import Convite, ModeloDeclaracao, Evento
+from sigi.apps.parlamentares.models import Parlamentar
class EventoAdminForm(forms.ModelForm):
@@ -79,3 +80,25 @@ class FuncionarioForm(forms.ModelForm):
"nota": MaterialAdminTextareaWidget,
"redes_sociais": MaterialAdminTextareaWidget,
}
+
+
+class ParlamentarForm(forms.ModelForm):
+ class Meta:
+ model = Parlamentar
+ fields = [
+ "nome_completo",
+ "nome_parlamentar",
+ "data_nascimento",
+ "cpf",
+ "identidade",
+ "telefones",
+ "email",
+ "redes_sociais",
+ "observacoes",
+ ]
+ widgets = {
+ "nome_completo": forms.HiddenInput,
+ "redes_sociais": MaterialAdminTextareaWidget,
+ "observacoes": MaterialAdminTextareaWidget,
+ "status_mandato": forms.RadioSelect,
+ }
diff --git a/sigi/apps/eventos/static/css/convite.css b/sigi/apps/eventos/static/css/convite.css
new file mode 100644
index 0000000..1d9e791
--- /dev/null
+++ b/sigi/apps/eventos/static/css/convite.css
@@ -0,0 +1,23 @@
+.lista_parlamentares {
+ width: 100%;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .12), 0 1px 5px 0 rgba(0, 0, 0, .2);
+ margin: .5rem 0 1rem 0 !important;
+}
+
+.input-field>label {
+ position: relative;
+ font-size: 0.8rem;
+}
+
+.suplente {
+ color: #a5d6a7;
+}
+
+.inativo {
+ color: #9e9e9e;
+}
+
+.presidente-foto .card-title {
+ position: relative;
+ bottom: 2em;
+}
\ No newline at end of file
diff --git a/sigi/apps/eventos/templates/eventos/alocacao_equipe.html b/sigi/apps/eventos/templates/eventos/alocacao_equipe.html
index 43a1131..d8b1fa3 100644
--- a/sigi/apps/eventos/templates/eventos/alocacao_equipe.html
+++ b/sigi/apps/eventos/templates/eventos/alocacao_equipe.html
@@ -57,8 +57,8 @@
print
{% include "eventos/snippets/alocacao_equipe_snippet.html" with mode="html" %}
diff --git a/sigi/apps/eventos/templates/eventos/calendario.html b/sigi/apps/eventos/templates/eventos/calendario.html
index 2e9f3b1..229c80e 100644
--- a/sigi/apps/eventos/templates/eventos/calendario.html
+++ b/sigi/apps/eventos/templates/eventos/calendario.html
@@ -23,7 +23,7 @@
date_range
{% endif %}
- picture_as_pdf
+ picture_as_pdf
diff --git a/sigi/apps/eventos/templates/eventos/convida_casa.html b/sigi/apps/eventos/templates/eventos/convida_casa.html
index 077c737..08780f9 100644
--- a/sigi/apps/eventos/templates/eventos/convida_casa.html
+++ b/sigi/apps/eventos/templates/eventos/convida_casa.html
@@ -1,98 +1,152 @@
{% extends "admin/base_site.html" %}
{% load i18n static %}
+{% block extrastyle %}
+ {{ block.super }}
+
+{% endblock %}
+
{% block content %}
-{{ block.super }}
-