Browse Source

Declaração de participação nos eventos

pull/159/head
Sesostris Vieira 3 years ago
parent
commit
9ab04ec203
  1. 9
      sigi/apps/eventos/admin.py
  2. 36
      sigi/apps/eventos/templates/eventos/declaracao_pdf.html
  3. 55
      sigi/apps/eventos/templates/eventos/seleciona_modelo.html
  4. 2
      sigi/apps/eventos/urls.py
  5. 79
      sigi/apps/eventos/views.py
  6. 83
      sigi/templates/pdf/base.html

9
sigi/apps/eventos/admin.py

@ -21,18 +21,17 @@ class ModeloDeclaracaoAdmin(admin.ModelAdmin):
list_display = ('nome', 'formato')
formfield_overrides = {HTMLField: {'widget': AdminTinyMCE}}
class EquipeInline(admin.TabularInline):
class EquipeInline(admin.StackedInline):
model = Equipe
class ConviteInline(admin.TabularInline):
class ConviteInline(admin.StackedInline):
model = Convite
raw_id_fields = ('casa',)
class ModuloInline(admin.TabularInline):
class ModuloInline(admin.StackedInline):
model = Modulo
class AnexoInline(admin.TabularInline):
class AnexoInline(admin.StackedInline):
model = Anexo
exclude = ('data_pub',)

36
sigi/apps/eventos/templates/eventos/declaracao_pdf.html

@ -1,24 +1,18 @@
{% extends 'base_report.html' %}
{% extends 'pdf/base_report.html' %}
{% load i18n %}
{% block pagesize %}{{ pagesize }}{% endblock pagesize %}
{% block pagemargin %}4cm {{ pagemargin }}cm {{ pagemargin }}cm 2cm{% endblock pagemargin %}
{% block page_size %}{{ pagesize }}{% endblock page_size %}
{% block page_margin %}4cm {{ pagemargin }}cm {{ pagemargin }}cm 2cm{% endblock page_margin %}
{% block report %}
{% for convite in evento.convite_set.all %}
{% with convite.casa as casa %}
{% for nome in convite.nomes_participantes.splitlines %}
{% block text_body %}{% endblock %}
<pdf:nextpage />
{% endfor %}
{% endwith %}
{% endfor %}
{% endblock %}
{%block page_foot%}
<table>
<tr>
<td class="footer-left">{% trans 'Emissão:' %} {% now "d/m/Y H:i:s" %}</td>
</tr>
</table>
{% endblock %}
{% block main_content %}
{% for convite in evento.convite_set.all %}
{% with convite.casa as casa %}
{% for nome in convite.nomes_participantes.splitlines %}
{% block text_body %}{% endblock %}
{% if not forloop.last %}
<div class="new-page"/>
{% endif %}
{% endfor %}
{% endwith %}
{% endfor %}
{% endblock %}

55
sigi/apps/eventos/templates/eventos/seleciona_modelo.html

@ -1,25 +1,48 @@
{% extends "admin/base_site.html" %}
{% load i18n bootstrap3 %}
{% load i18n static %}
{% block content_title %}
<h1 class="pull-left">{% trans 'Emitir declaração de comparecimento' %}</h1>
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" href="{% static 'material/admin/css/submit_line.min.css' %}">
{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block messages %}
{% if error %}
<ul class="messagelist">
<li class="error">{{ error|capfirst }}</li>
</ul>
{% endif %}
{% endblock messages %}
{% block content %}
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
<div id="content-main">
<form action="" method="post">{% csrf_token %}
{% csrf_token %}
<div class="form-group">
{% bootstrap_form form %}
<div class="container">
<div class="card">
<div class="card-content">
<span class="card-title">{% trans 'Emitir declaração de comparecimento' %}</span>
<form id="select-form" name="select-form" action="" method="post" novalidate>
{% csrf_token %}
<div class="form-group">
{{ form }}
</div>
</form>
</div>
<div class="card-action">
<div class="submit-row">
<div class="open-actions">
<button class="default waves-effect waves-light btn" type="submit" form="select-form" name="submit" value="print">
<i class="material-icons">picture_as_pdf</i>
{% trans "Imprimir" %}
</button>
<a class="default waves-effect waves-light btn" role="button" href="{% url 'admin:eventos_evento_change' evento_id %}">
<i class="material-icons">undo</i>
{% trans "Voltar" %}
</a>
</div>
</div>
</div>
<input type="submit" value="Imprimir" class="btn btn-primary"/>
<a class="btn btn-danger" role="button" href="{% url 'admin:eventos_evento_change' evento_id %}">{% trans "Voltar" %}</a>
</form>
</div>
</div>
{% endblock %}

2
sigi/apps/eventos/urls.py

@ -3,6 +3,8 @@ from sigi.apps.eventos import views
urlpatterns = [
path('calendario/', views.calendario, name='eventos-calendario'),
path('evento/<int:id>/declaracao/', views.declaracao,
name='evento-declaracao'),
]
# from django.conf.urls import patterns, url

79
sigi/apps/eventos/views.py

@ -1,9 +1,14 @@
import calendar
import datetime
import locale
from django.contrib.admin.sites import site
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render, get_object_or_404
from django.template import Template, Context
from django.utils.translation import to_locale, get_language, gettext as _
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.servidores.models import Servidor
@ -400,36 +405,42 @@ def calendario(request):
# return response
# @login_required
# def declaracao(request, id):
# if request.method == 'POST':
# form = SelecionaModeloForm(request.POST)
# if form.is_valid():
# evento = get_object_or_404(Evento, id=id)
# modelo = form.cleaned_data['modelo']
# template_string = (
# """
# {% extends "eventos/declaracao_pdf.html" %}
# {% block text_body %}""" +
# modelo.texto + """
# {% endblock %}
# """
# )
# context = Context(
# {'pagesize': modelo.formato,
# 'pagemargin': modelo.margem,
# 'evento': evento,
# 'data': datetime.date.today(),
# }
# )
# template = Template(template_string)
# # return HttpResponse(template.render(context))
# return pdf_renderer(template, context, 'declaracao.pdf')
# else:
# form = SelecionaModeloForm()
# return render(
# request,
# 'eventos/seleciona_modelo.html',
# {'form': form, 'evento_id': id}
# )
@login_required
def declaracao(request, id):
if request.method == 'POST':
form = SelecionaModeloForm(request.POST)
if form.is_valid():
evento = get_object_or_404(Evento, id=id)
modelo = form.cleaned_data['modelo']
template_string = (
"""
{% extends "eventos/declaracao_pdf.html" %}
{% block text_body %}""" +
modelo.texto + """
{% endblock %}
"""
)
context = Context({
'pagesize': modelo.formato,
'pagemargin': modelo.margem,
'evento': evento,
'data': datetime.date.today(),
})
string = Template(template_string).render(context)
# return HttpResponse(string)
response = HttpResponse(headers={
'Content-Type': "application/pdf",
'Content-Disposition': 'attachment; filename="declaração.pdf"'
})
pdf = HTML(string=string, url_fetcher=django_url_fetcher,
encoding="utf-8", base_url=request.build_absolute_uri('/'))
pdf.write_pdf(target=response)
return response
else:
form = SelecionaModeloForm()
context = site.each_context(request)
context['form'] = form
context['evento_id'] = id
return render(request, 'eventos/seleciona_modelo.html', context)

83
sigi/templates/pdf/base.html

@ -1,45 +1,46 @@
{% load static i18n %}
<!DOCTYPE HTML>
<html lang="pt-BR">
<head>
<meta charset="utf-8"/>
<meta name="description" content="SIGI reports">
<meta name="author" content="Interlegis">
<style type="text/css">
@page {
size: {% block page_size %}A4 portrait{% endblock page_size %};
margin: {% block page_margin %}3cm 2cm 2cm 2cm{% endblock page_margin %};
font-family: "Helvetica, Arial, sans-serif";
font-size: 10px;
@top-right { content: url("{% static 'img/logo-interlegis.png' %}");}
@top-left {content: url("{% static 'img/logo-senado.png' %}");}
@top-center { content: element(header); }
@bottom-center { content: element(footer); }
@bottom-right { content: "{% trans "Página: " %}" counter(page); }
{% block extra_page_settings %}{% endblock extra_page_settings %}
}
h1 { bookmark-level: 1 }
h2 { bookmark-level: 2 }
h3 { bookmark-level: 3 }
h4 { bookmark-level: 4 }
h5 { bookmark-level: 5 }
h6 { bookmark-level: 6 }
@media print {
header {position: running(header);}
footer {position: running(footer);}
}
@media print {
}
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 10px;
}
{% block extra_style %}{% endblock extra_style %}
</style>
{% block extra_head %}{% endblock extra_head %}
<title>{% block title %}{% endblock title %}</title>
</head>
<body class="{% block body_class %}{% endblock body_class %}">
{% block body_content %}{% endblock body_content %}
</body>
<head>
<meta charset="utf-8"/>
<meta name="description" content="SIGI reports">
<meta name="author" content="Interlegis">
<style type="text/css">
@page {
size: {% block page_size %}A4 portrait{% endblock page_size %};
margin: {% block page_margin %}3cm 2cm 2cm 2cm{% endblock page_margin %};
font-family: "Helvetica, Arial, sans-serif";
font-size: 10px;
@top-right { content: url("{% static 'img/logo-interlegis.png' %}");}
@top-left {content: url("{% static 'img/logo-senado.png' %}");}
@top-center { content: element(header); }
@bottom-center { content: element(footer); }
@bottom-right { content: "{% trans "Página: " %}" counter(page); }
{% block extra_page_settings %}{% endblock extra_page_settings %}
}
h1 { bookmark-level: 1 }
h2 { bookmark-level: 2 }
h3 { bookmark-level: 3 }
h4 { bookmark-level: 4 }
h5 { bookmark-level: 5 }
h6 { bookmark-level: 6 }
@media print {
header {position: running(header);}
footer {position: running(footer);}
}
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 10px;
}
div.new-page {
break-before: always;
}
{% block extra_style %}{% endblock extra_style %}
</style>
{% block extra_head %}{% endblock extra_head %}
<title>{% block title %}{% endblock title %}</title>
</head>
<body class="{% block body_class %}{% endblock body_class %}">
{% block body_content %}{% endblock body_content %}
</body>
</html>

Loading…
Cancel
Save