diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py index edc8ef1..1dfe8bf 100644 --- a/sigi/apps/casas/admin.py +++ b/sigi/apps/casas/admin.py @@ -81,6 +81,8 @@ class PresidenteInline(admin.StackedInline): "nome", "sexo", "data_nascimento", + "cpf", + "identidade", "nota", "email", "tempo_de_servico", @@ -113,6 +115,8 @@ class ContatoInterlegisInline(admin.StackedInline): "nome", "sexo", "data_nascimento", + "cpf", + "identidade", "nota", "email", "cargo", @@ -459,6 +463,7 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin): "observacoes", "horario_funcionamento", "foto", + "brasao", ), }, ), diff --git a/sigi/apps/casas/migrations/0022_orgao_brasao_orgao_brasao_altura_and_more.py b/sigi/apps/casas/migrations/0022_orgao_brasao_orgao_brasao_altura_and_more.py new file mode 100644 index 0000000..cd1a09b --- /dev/null +++ b/sigi/apps/casas/migrations/0022_orgao_brasao_orgao_brasao_altura_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.0.4 on 2022-04-24 17:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('casas', '0021_alter_orgao_options_remove_orgao_recorte_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='orgao', + name='brasao', + field=models.ImageField(blank=True, height_field='brasao_altura', help_text='Trate a imagem para que ela fique com cerca de 120x120 pixels', upload_to='imagens/casas/brasao', verbose_name='brasão', width_field='brasao_largura'), + ), + migrations.AddField( + model_name='orgao', + name='brasao_altura', + field=models.SmallIntegerField(editable=False, null=True), + ), + migrations.AddField( + model_name='orgao', + name='brasao_largura', + field=models.SmallIntegerField(editable=False, null=True), + ), + ] diff --git a/sigi/apps/casas/migrations/0023_funcionario_cpf_funcionario_identidade.py b/sigi/apps/casas/migrations/0023_funcionario_cpf_funcionario_identidade.py new file mode 100644 index 0000000..0412fe3 --- /dev/null +++ b/sigi/apps/casas/migrations/0023_funcionario_cpf_funcionario_identidade.py @@ -0,0 +1,23 @@ +# Generated by Django 4.0.4 on 2022-04-25 21:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('casas', '0022_orgao_brasao_orgao_brasao_altura_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='funcionario', + name='cpf', + field=models.CharField(blank=True, max_length=20, verbose_name='CPF'), + ), + migrations.AddField( + model_name='funcionario', + name='identidade', + field=models.CharField(blank=True, help_text='Informe o RG e o órgão emissor.', max_length=30, verbose_name='Identidade (RG)'), + ), + ] diff --git a/sigi/apps/casas/models.py b/sigi/apps/casas/models.py index b800921..cedca2f 100644 --- a/sigi/apps/casas/models.py +++ b/sigi/apps/casas/models.py @@ -113,6 +113,18 @@ class Orgao(models.Model): data_instalacao = models.DateField( _("data de instalação da Casa Legislativa"), null=True, blank=True ) + brasao = models.ImageField( + _("brasão"), + upload_to="imagens/casas/brasao", + width_field="brasao_largura", + height_field="brasao_altura", + blank=True, + help_text=_( + "Trate a imagem para que ela fique com cerca de 120x120 pixels" + ), + ) + brasao_largura = models.SmallIntegerField(editable=False, null=True) + brasao_altura = models.SmallIntegerField(editable=False, null=True) class Meta: ordering = ("nome",) @@ -354,6 +366,13 @@ class Funcionario(models.Model): data_nascimento = models.DateField( _("data de nascimento"), blank=True, null=True ) + cpf = models.CharField(_("CPF"), max_length=20, blank=True) + identidade = models.CharField( + _("Identidade (RG)"), + max_length=30, + blank=True, + help_text=_("Informe o RG e o órgão emissor."), + ) nota = models.CharField( _("telefones"), max_length=250, null=True, blank=True ) diff --git a/sigi/apps/convenios/admin.py b/sigi/apps/convenios/admin.py index fcab3aa..7bec97a 100644 --- a/sigi/apps/convenios/admin.py +++ b/sigi/apps/convenios/admin.py @@ -2,6 +2,9 @@ from django.contrib import admin from django.http import HttpResponse, HttpResponseRedirect from django.utils.translation import gettext as _ from django.utils.safestring import mark_safe +from django_weasyprint.views import WeasyTemplateResponse +from tinymce.models import HTMLField +from tinymce.widgets import AdminTinyMCE from sigi.apps.convenios.models import ( Projeto, StatusConvenio, @@ -16,7 +19,6 @@ from sigi.apps.utils import queryset_ascii from sigi.apps.servidores.models import Servidor from sigi.apps.casas.admin import ConveniosInline, GerentesInterlegisFilter from sigi.apps.utils.mixins import CartExportReportMixin, LabeledResourse -from django_weasyprint.views import WeasyTemplateResponse from sigi.apps.utils.filters import DateRangeFilter @@ -80,6 +82,12 @@ class AcompanhaFilter(admin.filters.RelatedFieldListFilter): self.lookup_choices = [(x.id, x) for x in servidores] +@admin.register(Projeto) +class ProjetoAdmin(admin.ModelAdmin): + list_display = ("sigla", "nome") + formfield_overrides = {HTMLField: {"widget": AdminTinyMCE}} + + @admin.register(Convenio) class ConvenioAdmin(CartExportReportMixin, admin.ModelAdmin): fieldsets = ( @@ -339,6 +347,5 @@ class GesconAdmin(admin.ModelAdmin): ] -admin.site.register(Projeto) admin.site.register(StatusConvenio) admin.site.register(TipoSolicitacao) diff --git a/sigi/apps/convenios/migrations/0021_projeto_texto_minuta_projeto_texto_oficio.py b/sigi/apps/convenios/migrations/0021_projeto_texto_minuta_projeto_texto_oficio.py new file mode 100644 index 0000000..8d7964a --- /dev/null +++ b/sigi/apps/convenios/migrations/0021_projeto_texto_minuta_projeto_texto_oficio.py @@ -0,0 +1,24 @@ +# Generated by Django 4.0.4 on 2022-04-25 19:45 + +from django.db import migrations +import tinymce.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('convenios', '0020_gescon_orgaos_gestores'), + ] + + operations = [ + migrations.AddField( + model_name='projeto', + name='texto_minuta', + field=tinymce.models.HTMLField(blank=True, help_text='Use as seguintes marcações:', verbose_name='texto da minuta'), + ), + migrations.AddField( + model_name='projeto', + name='texto_oficio', + field=tinymce.models.HTMLField(blank=True, help_text='Use as seguintes marcações:', verbose_name='texto do ofício'), + ), + ] diff --git a/sigi/apps/convenios/models.py b/sigi/apps/convenios/models.py index 22d6319..cc60452 100644 --- a/sigi/apps/convenios/models.py +++ b/sigi/apps/convenios/models.py @@ -7,14 +7,29 @@ from django.core.mail import send_mail from django.urls import reverse from django.utils.formats import date_format from django.utils.translation import gettext as _ +from tinymce.models import HTMLField from sigi.apps.utils import to_ascii from sigi.apps.casas.models import Orgao from sigi.apps.servidores.models import Servidor, Servico class Projeto(models.Model): + MARKUP_HELP = _( + "Use as seguintes marcações:" + ) nome = models.CharField(max_length=50) sigla = models.CharField(max_length=10) + texto_oficio = HTMLField( + _("texto do ofício"), blank=True, help_text=MARKUP_HELP + ) + texto_minuta = HTMLField( + _("texto da minuta"), blank=True, help_text=MARKUP_HELP + ) def __str__(self): return self.sigla diff --git a/sigi/apps/eventos/forms.py b/sigi/apps/eventos/forms.py index 0d99e7c..b14da76 100644 --- a/sigi/apps/eventos/forms.py +++ b/sigi/apps/eventos/forms.py @@ -1,6 +1,8 @@ from django import forms from django.utils.translation import gettext as _ -from sigi.apps.eventos.models import ModeloDeclaracao, Evento +from material.admin.widgets import MaterialAdminTextareaWidget +from sigi.apps.casas.models import Funcionario, Orgao +from sigi.apps.eventos.models import Convite, ModeloDeclaracao, Evento class EventoAdminForm(forms.ModelForm): @@ -46,3 +48,34 @@ class SelecionaModeloForm(forms.Form): required=True, label=_("Modelo de declaração"), ) + + +class ConviteForm(forms.ModelForm): + class Meta: + model = Convite + fields = ["nomes_participantes"] + widgets = {"nomes_participantes": MaterialAdminTextareaWidget} + + +class CasaForm(forms.ModelForm): + class Meta: + model = Orgao + fields = ["cnpj", "logradouro", "bairro", "cep", "email", "brasao"] + + +class FuncionarioForm(forms.ModelForm): + class Meta: + model = Funcionario + fields = [ + "nome", + "sexo", + "cpf", + "identidade", + "nota", + "email", + "redes_sociais", + ] + widgets = { + "nota": MaterialAdminTextareaWidget, + "redes_sociais": MaterialAdminTextareaWidget, + } diff --git a/sigi/apps/eventos/models.py b/sigi/apps/eventos/models.py index 2962f82..9f980db 100644 --- a/sigi/apps/eventos/models.py +++ b/sigi/apps/eventos/models.py @@ -2,6 +2,7 @@ import re from datetime import datetime from django.db import models from django.db.models import Sum +from django.urls import reverse from django.utils.translation import gettext as _ from sigi.apps.casas.models import Orgao from sigi.apps.contatos.models import Municipio @@ -110,6 +111,9 @@ class Evento(models.Model): f"de {self.data_inicio} a {self.data_termino}" ) + def get_absolute_url(self): + return reverse("eventos-evento", args=[self.id]) + def get_sigad_url(self): m = re.match( "(?P00100|00200)\.(?P\d{6})/(?P" diff --git a/sigi/apps/eventos/templates/eventos/convida_casa.html b/sigi/apps/eventos/templates/eventos/convida_casa.html new file mode 100644 index 0000000..0dc44ea --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/convida_casa.html @@ -0,0 +1,75 @@ +{% extends "admin/base_site.html" %} +{% load i18n static %} + +{% block content %} +{{ block.super }} +
{% csrf_token %} +
+
+
+ {% blocktranslate with casa_nome=casa.nome evento_nome=evento.nome %} + Convidar {{ casa_nome }} para {{ evento_nome }} + {% endblocktranslate %} +
+
+
+
+
+
+
+ {% trans "Convite" %} + {{ form_convite }} +
+
+
+
+
+
+
+
+ {% trans "Casa" %} + {{ form_casa }} +
+
+
+
+
+
+
+
+ {% trans "Dados do presidente" %} + {{ form_presidente }} +
+
+
+
+
+
+
+
+ {% trans "Dados do contato Interlegis" %} + {{ form_contato }} +
+
+
+
+
+
+
+
+ + {% for proj in projetos %} + + {% endfor %} +
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/evento.html b/sigi/apps/eventos/templates/eventos/evento.html new file mode 100644 index 0000000..91042ef --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/evento.html @@ -0,0 +1,134 @@ +{% extends "admin/base_site.html" %} +{% load i18n static model_fields %} + +{% block extrastyle %} + {{ block.super }} + +{% endblock %} +{% block content %} +{{ block.super }} +
+
+
+

{{ evento.nome }}

+
+
+
+
+ +
+
+
+
+ + {% for field_name in fields %} + + + + + {% endfor %} +
{{ evento|verbose_name:field_name|title }}{{ evento|field_value:field_name }}
+
+
+
+
+
+
+
+ + +
+
+ {% if evento.convite_set.count == 0 %} + {% trans "Nenhum convite registrado" %} + {% else %} + + + + {% for field_name in convite_fields %} + + {% endfor %} + + + + {% for convite in evento.convite_set.all %} + + {% for field_name in convite_fields %} + + {% endfor %} + + {% endfor %} + +
{{ evento.convite_set.first|verbose_name:field_name|title }}
{{ convite|field_value:field_name }}
+ {% endif %} +
+
+
+
+
+
+ {% if anexos.count == 0 %} + {% trans "Nenhum anexo registrado" %} + {% else %} + {% if active %} + + {% trans "Mostrando apenas anexos recem-criados" %} + + {% trans "Ver todos" %} + {% endif %} + + + + {% with anexos.first as anexo %} + + + + {% endwith %} + + + + {% for anexo in anexos.all %} + + + + + + {% endfor %} + +
{{ anexo|verbose_name:"descricao"|title }}{{ anexo|verbose_name:"data_pub"|title }}{{ anexo|verbose_name:"arquivo"|title }}
{{ anexo.descricao }}{{ anexo.data_pub|date:"SHORT_DATE_FORMAT" }} + + picture_as_pdf + +
+ {% endif %} +
+
+
+
+
+{% endblock %} + +{% block footer %} +{{ block.super }} + + +{% endblock %} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/minuta_pdf.html b/sigi/apps/eventos/templates/eventos/minuta_pdf.html new file mode 100644 index 0000000..7561dcd --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/minuta_pdf.html @@ -0,0 +1,77 @@ +{% extends 'pdf/base_report.html' %} +{% load i18n static %} + +{% block page_margin %}4cm 2cm{% endblock page_margin %} + +{% block page-header-settings %} +@top-center { content: element(header);} +{% endblock %} + +{% block page-footer-settings %} +@bottom-center { content: element(footer); } +{% endblock %} + + +{% block extra_style %} + h1 {font-size: 1.2em;} + h2 {font-size: 1.1em;} + h3,h4,h5,h6 {font-size: 1em;} + + header { + font-size: 1em; + text-align: center; + } + + header p { + margin: 0 0 5px 0; + } + + .strong { + font-weight: bold; + } + + .header-title { + font-weight: bold; + font-size: 1.2em; + } + + .header-subtitle { + font-weight: bold; + font-size: 1em; + } + + .content { + font-size: 1.2em; + line-height: 1.4em; + padding-bottom: 5px; + } + + footer { + width: 100%; + text-align: center; + } + + .barra { + height: 15px; + } +{% endblock %} + +{% block header %} + +

SENADO FEDERAL

+

Instituto Legislativo Brasileiro - ILB

+

Programa Interlegis

+{% endblock %} + +{% block main_content %} +
+ {% block text_body %}{% endblock %} +
+{% endblock %} + +{% block footer %} + +

Instituto Legislativo Brasileiro - ILB - Av. N2 - Bloco 12 - CEP 70165-900 – Brasília DF

+

Telefone: +55 (61) 3303-2599 – interlegis@senado.leg.br – www.interlegis.leg.br

+

MINUTA-PADRÃO aprovada pela Diretoria-Geral do Senado Federal em 01/setembro/2021, conforme processo 00200.006818/2021-12.

+{% endblock %} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/oficio_padrao.html b/sigi/apps/eventos/templates/eventos/oficio_padrao.html new file mode 100644 index 0000000..66e5432 --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/oficio_padrao.html @@ -0,0 +1,79 @@ +{% extends 'pdf/base_report.html' %} +{% load i18n %} + +{% block page_margin %}4cm 2cm{% endblock page_margin %} + +{% block page-header-settings %} +@top-left { content: element(logo);} +@top-center { content: element(header);} +{% endblock %} + +{% block page-footer-settings %} +@bottom-center { content: element(footer); } +{% endblock %} + + +{% block extra_style %} + @media print { + .logo {position: running(logo);} + } + + .logo-image { + display: block; + max-width: 120px; + max-height: 120px; + } + + header { + font-size: 1em; + text-align: left; + } + + header p { + margin: 5px 15px; + } + + header h1 { + margin: 0 0 5px 0; + } + + .strong { + font-weight: bold; + } + + .content { + font-size: 1.2em; + line-height: 1.4em; + padding-bottom: 5px; + } + + footer { + width: 100%; + text-align: center; + } +{% endblock %} + +{% block body_content %} + + {{ block.super }} +{% endblock %} + +{% block header %} +

{{ casa.nome }}

+

CNPJ: {{ casa.cnpj }}

+

{{ casa.logradouro }}, {{ casa.bairro }}

+

{{ casa.cep }} - {{ casa.municipio.nome }} - {{ casa.municipio.uf.nome }}

+{% endblock %} + +{% block main_content %} +
+ {% block text_body %}{% endblock %} +
+{% endblock %} + +{% block footer %} +

{{ casa.nome }} - {{ casa.logradouro }} - {{ casa.bairro }}

+

{{ casa.cep }} - {{ casa.municipio.nome }}, {{ casa.municipio.uf.sigla }}

+{% endblock %} \ No newline at end of file diff --git a/sigi/apps/eventos/urls.py b/sigi/apps/eventos/urls.py index 65054ee..2e4efa2 100644 --- a/sigi/apps/eventos/urls.py +++ b/sigi/apps/eventos/urls.py @@ -3,6 +3,12 @@ from sigi.apps.eventos import views urlpatterns = [ path("calendario/", views.calendario, name="eventos-calendario"), + path("evento//", views.evento, name="eventos-evento"), + path( + "evento//convite//", + views.convida_casa, + name="eventos-evento-convida", + ), path( "evento//declaracao/", views.declaracao, diff --git a/sigi/apps/eventos/views.py b/sigi/apps/eventos/views.py index 5bc7a38..0365343 100644 --- a/sigi/apps/eventos/views.py +++ b/sigi/apps/eventos/views.py @@ -1,16 +1,26 @@ import calendar import datetime import locale +from django.contrib import messages from django.contrib.admin.sites import site from django.contrib.auth.decorators import login_required from django.http import HttpResponse -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import redirect, render, get_object_or_404 from django.template import Template, Context +from django.utils.text import slugify from django.utils.translation import to_locale, get_language, gettext as _ +from django.urls import reverse from django_weasyprint.utils import django_url_fetcher from weasyprint import HTML -from sigi.apps.eventos.models import Evento, Equipe, Convite, Modulo -from sigi.apps.eventos.forms import SelecionaModeloForm +from sigi.apps.casas.models import Funcionario, Orgao, Presidente +from sigi.apps.convenios.models import Projeto +from sigi.apps.eventos.models import Evento, Equipe, Convite, Modulo, Anexo +from sigi.apps.eventos.forms import ( + SelecionaModeloForm, + ConviteForm, + CasaForm, + FuncionarioForm, +) from sigi.apps.servidores.models import Servidor @@ -46,6 +56,191 @@ def calendario(request): return render(request, "eventos/calendario.html", context) +def evento(request, id): + context = site.each_context(request) + evento = get_object_or_404(Evento, id=id) + anexo_id = request.GET.getlist("anexo_id", None) + if anexo_id: + context["anexos"] = evento.anexo_set.filter(id__in=anexo_id) + context["active"] = "anexos" + else: + context["anexos"] = evento.anexo_set.all() + + context["evento"] = evento + context["fields"] = [ + "tipo_evento", + "descricao", + "virtual", + "publico_alvo", + "data_inicio", + "data_termino", + "carga_horaria", + "casa_anfitria", + "municipio", + "local", + ] + context["convite_fields"] = [ + "casa", + "servidor", + "data_convite", + "aceite", + "participou", + "nomes_participantes", + ] + context["anexo_fields"] = ["descricao", "data_pub", "arquivo"] + + return render(request, "eventos/evento.html", context) + + +def convida_casa(request, evento_id, casa_id): + if not request.user.servidor: + messages.error( + request, _("Você não é servidor, não pode registrar convites") + ) + return redirect(evento) + + evento = get_object_or_404(Evento, id=evento_id) + casa = get_object_or_404(Orgao, id=casa_id) + + projetos = Projeto.objects.exclude(texto_minuta="") + + if evento.convite_set.filter(casa=casa).exists(): + convite = evento.convite_set.get(casa=casa) + else: + convite = Convite( + evento=evento, + casa=casa, + servidor=request.user.servidor, + data_convite=datetime.date.today(), + ) + + presidente = casa.presidente or Funcionario( + casa_legislativa=casa, setor="presidente" + ) + contato = casa.contato_interlegis or Funcionario( + casa_legislativa=casa, setor="contato_interlegis" + ) + + if request.method == "POST": + form_convite = ConviteForm(request.POST, instance=convite) + form_casa = CasaForm(request.POST, request.FILES, instance=casa) + form_presidente = FuncionarioForm( + request.POST, instance=presidente, prefix="presidente" + ) + form_contato = FuncionarioForm( + request.POST, instance=contato, prefix="contato" + ) + + if all( + [ + form_convite.is_valid(), + form_casa.is_valid(), + form_presidente.is_valid(), + form_contato.is_valid(), + ] + ): + contato = form_contato.save() + presidente = form_presidente.save() + casa = form_casa.save() + convite = form_convite.save() + + proj_id = request.POST.get("save", "") + + if proj_id: + query_str = "" + projeto = get_object_or_404(Projeto, id=proj_id) + if projeto.texto_oficio: + oficio = gerar_anexo( + casa, + presidente, + contato, + path=request.build_absolute_uri("/"), + nome=f"Ofício de solicitação de {projeto.sigla}", + modelo="oficio_padrao.html", + texto=projeto.texto_oficio, + ) + oficio.evento = evento + oficio.save() + query_str += f"anexo_id={oficio.id}&" + if projeto.texto_minuta: + minuta = gerar_anexo( + casa, + presidente, + contato, + path=request.build_absolute_uri("/"), + nome=f"Minuta de {projeto.sigla}", + modelo="minuta_pdf.html", + texto=projeto.texto_minuta, + ) + minuta.evento = evento + minuta.save() + query_str += f"anexo_id={minuta.id}" + + return redirect(evento.get_absolute_url() + "?" + query_str) + else: + return redirect(evento.get_absolute_url()) + else: + messages.error(_("Preencha corretamente o convite")) + else: + form_convite = ConviteForm(instance=convite) + form_casa = CasaForm(instance=casa) + form_presidente = FuncionarioForm( + instance=presidente, prefix="presidente" + ) + form_contato = FuncionarioForm(instance=contato, prefix="contato") + + context = site.each_context(request) + context.update( + { + "form_convite": form_convite, + "form_casa": form_casa, + "form_presidente": form_presidente, + "form_contato": form_contato, + "evento": evento, + "convite": convite, + "casa": casa, + "presidente": presidente, + "contato": contato, + "projetos": projetos, + } + ) + + return render(request, "eventos/convida_casa.html", context) + + +def gerar_anexo(casa, presidente, contato, path, modelo, nome, texto): + template_string = ( + f'{{% extends "eventos/{modelo}" %}}' + "{% load pdf %}" + f"{{% block text_body %}}{texto}{{% endblock %}}" + ) + context = Context( + { + "evento": evento, + "casa": casa, + "presidente": presidente, + "contato": contato, + "data": datetime.date.today(), + "doravante": casa.tipo.nome.split(" ")[0], + } + ) + string = Template(template_string).render(context) + pdf = HTML( + string=string, + url_fetcher=django_url_fetcher, + encoding="utf-8", + base_url=path, + ) + nome = (nome + f" da {casa.nome}")[:70] + anexo = Anexo(descricao=nome) + anexo.arquivo.name = slugify(nome) + ".pdf" + f = anexo.arquivo.open("wb") + pdf.write_pdf(target=f) + f.flush() + f.close() + return anexo + + # @login_required # def calendario(request): # mes_pesquisa = int(request.GET.get('mes', datetime.date.today().month)) diff --git a/sigi/apps/home/templates/home/mapfilter.html b/sigi/apps/home/templates/home/mapfilter.html index ea9168b..2d7253e 100644 --- a/sigi/apps/home/templates/home/mapfilter.html +++ b/sigi/apps/home/templates/home/mapfilter.html @@ -4,7 +4,7 @@ {% if not mobile %} {% endif %} -
+ {{ csrftoken }}
    @@ -12,9 +12,9 @@
    {% if 'profile/user_picture.html'|template_exists %} - {% include 'profile/user_picture.html' %} + {% include 'profile/user_picture.html' %} {% else %} - {% include 'material/admin/user_picture.html' %} + {% include 'material/admin/user_picture.html' %} {% endif %}
    @@ -25,151 +25,165 @@
    search - -
    + +
    -
    - Total de Órgãos selecionados: - - -
  • -
    {% trans "Por Tipo de órgão" %}
    -
    - {% for o in tipos_orgao %} -

    - -

    - {% endfor %} -
    -
  • -
  • -
    {% trans "Por Tipo de serviço" %}
    -
    -

    - -

    -

    - -

    - {% for s in tipos_servico %} -

    - -

    - {% endfor %} -
    -
  • + +Total de Órgãos selecionados: - + +
  • +
    {% trans "Por Tipo de órgão" %}
    +
    + {% for o in tipos_orgao %} +

    + +

    + {% endfor %} +
    +
  • +
  • +
    {% trans "Por Tipo de serviço" %}
    +
    +

    + +

    +

    + +

    + {% for s in tipos_servico %} +

    + +

    + {% endfor %} +
    +
  • -
  • -
    {% trans "Por convênio" %}
    -
    -

    - -

    -

    - -

    - {% for c in tipos_convenio %} -

    - -

    - {% endfor %} -
    -
  • -
  • -
    {% trans "Por região/estado" %}
    -
    - {% for s, n, ufs in regioes %} -

    - -

    -
    - {% for uf in ufs %} -

    - -

    - {% endfor %} -
    - {% endfor %} -
    -
  • +
  • +
    {% trans "Por convênio" %}
    +
    +

    + +

    +

    + +

    + {% for c in tipos_convenio %} +

    + +

    + {% endfor %} +
    +
  • +
  • +
    {% trans "Por região/estado" %}
    +
    + {% for s, n, ufs in regioes %} +

    + +

    +
    + {% for uf in ufs %} +

    + +

    + {% endfor %} +
    + {% endfor %} +
    +
  • -
  • -
    {% trans "Por gerente Interlegis" %}
    -
    -

    - -

    -

    - -

    - {% for g in gerentes %} -

    - -

    - {% endfor %} -
    -
  • - {% if not user.is_anonymous %} -
  • -
    {% trans "Exportação de dados" %}
    -
    - - - - - -
    -
  • - {% endif %} +
  • +
    {% trans "Por gerente Interlegis" %}
    +
    +

    + +

    +

    + +

    + {% for g in gerentes %} +

    + +

    + {% endfor %} +
    +
  • +{% if not user.is_anonymous %} +
  • +
    {% trans "Exportação de dados" %}
    +
    + + + + + +
    +
  • +{% endif %} -
+ \ No newline at end of file diff --git a/sigi/apps/home/templates/home/openmap.html b/sigi/apps/home/templates/home/openmap.html index 2def88a..e2c62ba 100644 --- a/sigi/apps/home/templates/home/openmap.html +++ b/sigi/apps/home/templates/home/openmap.html @@ -3,44 +3,49 @@ {% load i18n %} {% block extrastyle %} - {{ block.super }} - - - - +{{ block.super }} + + + + {% endblock %} {% block extrahead %} - {{ block.super }} - - - - - - - - + + + + + {% endblock %} {% block usertools %} - + {% endblock %} {% block side_nav %} - {% if not nav_bar_minimized %} - - {% endif %} -
+{% if not nav_bar_minimized %} + +{% endif %} +
{% include 'home/mapfilter.html' with mobile=True %} -
+
{% endblock %} {% block content %} @@ -53,61 +58,16 @@ {% block footer %} {{ block.super }} + {% endblock %} {% comment %} - - + + + {% trans 'SIGI' %} - - -
-