mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
2 years ago
8 changed files with 654 additions and 23 deletions
@ -0,0 +1,58 @@ |
|||
# Generated by Django 4.0.6 on 2022-07-16 02:40 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('eventos', '0022_alter_anexo_data_pub'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Cronograma', |
|||
fields=[ |
|||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('etapa', models.CharField(max_length=10, verbose_name='sigla da etapa')), |
|||
('nome', models.CharField(max_length=100, verbose_name='nome da etapa')), |
|||
('descricao', models.TextField(help_text='Descrição detalhada das atividades realizadas na etapa', verbose_name='descrição da etapa')), |
|||
('duracao', models.PositiveBigIntegerField(verbose_name='duração (em dias)')), |
|||
('data_prevista_inicio', models.DateField(blank=True, null=True, verbose_name='data prevista de início')), |
|||
('data_prevista_termino', models.DateField(blank=True, null=True, verbose_name='data prevista de término')), |
|||
('data_inicio', models.DateField(blank=True, null=True, verbose_name='data de início')), |
|||
('data_termino', models.DateField(blank=True, null=True, verbose_name='data de término')), |
|||
('dependencia', models.CharField(blank=True, help_text='Sigla da etapa que precisa ser concluída para que esta seja iniciada', max_length=200, verbose_name='depende da etapa')), |
|||
('responsaveis', models.TextField(blank=True, help_text='Pessoas, setores, órgãos.', verbose_name='responsáveis pela tarefa')), |
|||
('comunicar_inicio', models.TextField(blank=True, help_text='Lista de pessoas/órgãos para comunicar quando a tarefa for iniciada. Coloque um por linha.', verbose_name='comunicar inicio para')), |
|||
('comunicar_termino', models.TextField(blank=True, help_text='Lista de pessoas/órgãos para comunicar quando a tarefa for concluída. Coloque um por linha.', verbose_name='comunicar término para')), |
|||
('recursos', models.TextField(help_text='Lista de recursos necessários para desenvolver a tarefa', verbose_name='recursos necessários')), |
|||
('evento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='eventos.evento')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'cronograma', |
|||
'verbose_name_plural': 'cronogramas', |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Checklist', |
|||
fields=[ |
|||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('etapa', models.CharField(max_length=10, verbose_name='sigla da etapa')), |
|||
('nome', models.CharField(max_length=100, verbose_name='nome da etapa')), |
|||
('descricao', models.TextField(help_text='Descrição detalhada das atividades realizadas na etapa', verbose_name='descrição da etapa')), |
|||
('duracao', models.PositiveBigIntegerField(verbose_name='duração (em dias)')), |
|||
('dependencia', models.CharField(blank=True, help_text='Siglas das etapas que precisam ser concluídas para que esta seja iniciada. Separe cada uma com um espaço.', max_length=200, verbose_name='depende da etapa')), |
|||
('responsaveis', models.TextField(blank=True, help_text='Pessoas, setores, órgãos.', verbose_name='responsáveis pela tarefa')), |
|||
('comunicar_inicio', models.TextField(blank=True, help_text='Lista de e-mails para comunicar quando a tarefa for iniciada', verbose_name='comunicar inicio para')), |
|||
('comunicar_termino', models.TextField(blank=True, help_text='Lista de e-mails para comunicar quando a tarefa for concluída', verbose_name='comunicar término para')), |
|||
('recursos', models.TextField(help_text='Lista de recursos necessários para desenvolver a tarefa', verbose_name='recursos necessários')), |
|||
('tipo_evento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='eventos.tipoevento')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'checklist', |
|||
'verbose_name_plural': 'checklists', |
|||
}, |
|||
), |
|||
] |
@ -0,0 +1,61 @@ |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load static i18n %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock %} |
|||
|
|||
{% block main_content %} |
|||
<h3>{% trans 'Check list' %}</h3> |
|||
<table repeat="1"> |
|||
<thead> |
|||
<tr> |
|||
<th rowspan="2">{% trans 'Etapa' %}</th> |
|||
<th rowspan="2">{% trans 'Descrição' %}</th> |
|||
<th rowspan="2">{% trans 'Duração (dias)' %}</th> |
|||
<th colspan="2">{% trans 'Previsão' %}</th> |
|||
<th colspan="2">{% trans 'Realizado' %}</th> |
|||
<th rowspan="2">{% trans 'Depende de' %}</th> |
|||
<th rowspan="2">{% trans 'Dependentes' %}</th> |
|||
<th rowspan="2">{% trans 'Responsáveis' %}</th> |
|||
<th colspan="2">{% trans 'Comunicar' %}</th> |
|||
<th rowspan="2">{% trans 'Recursos necessários' %}</th> |
|||
</tr> |
|||
<tr> |
|||
<th>{% trans 'Início' %}</th> |
|||
<th>{% trans 'Término' %}</th> |
|||
<th>{% trans 'Início' %}</th> |
|||
<th>{% trans 'Término' %}</th> |
|||
<th>{% trans 'Início' %}</th> |
|||
<th>{% trans 'Término' %}</th> |
|||
</tr> |
|||
</thead> |
|||
{% for etapa in cronograma %} |
|||
<tr> |
|||
<td>{{ etapa }}</td> |
|||
<td>{{ etapa.descricao }}</td> |
|||
<td class="center-align">{{ etapa.duracao }}</td> |
|||
<td class="center-align">{{ etapa.data_prevista_inicio|date:"SHORT_DATE_FORMAT" }}</td> |
|||
<td class="center-align">{{ etapa.data_prevista_termino|date:"SHORT_DATE_FORMAT" }}</td> |
|||
<td class="center-align">{{ etapa.data_inicio|date:"SHORT_DATE_FORMAT" }}</td> |
|||
<td class="center-align">{{ etapa.data_termino|date:"SHORT_DATE_FORMAT" }}</td> |
|||
<td> |
|||
<ul> |
|||
{% for e in etapa.get_dependencias %} |
|||
<li>{{ e }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</td> |
|||
<td> |
|||
<ul> |
|||
{% for e in etapa.get_dependentes %} |
|||
<li>{{ e }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</td> |
|||
<td>{{ etapa.responsaveis }}</td> |
|||
<td>{{ etapa.comunicar_inicio }}</td> |
|||
<td>{{ etapa.comunicar_termino }}</td> |
|||
<td>{{ etapa.recursos }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endblock %} |
@ -0,0 +1,125 @@ |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load static i18n %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock %} |
|||
|
|||
{% block extra_style %} |
|||
{{ block.super }} |
|||
.rotate { |
|||
text-align: center; |
|||
white-space: nowrap; |
|||
vertical-align: middle; |
|||
min-width: 5px; |
|||
width: 5px; |
|||
height: 6em; |
|||
} |
|||
.rotate div { |
|||
transform: rotate(-90.0deg); |
|||
margin-left: -10em; |
|||
margin-right: -10em; |
|||
#padding: 5px; |
|||
} |
|||
table, th, td { |
|||
border: 1px solid white; |
|||
width: 100%; |
|||
border-collapse: collapse; |
|||
} |
|||
th,td { |
|||
border-bottom: 1px solid #808080; |
|||
padding: 4px; |
|||
} |
|||
tr:nth-child(even) { |
|||
background-color: white; |
|||
} |
|||
|
|||
.atrasado { |
|||
background-color: #f44336; # red |
|||
} |
|||
.iniciou-atrasado { |
|||
background-color: #ff9800; # orange |
|||
} |
|||
.iniciar-hoje { |
|||
background-color: #ffe0b2; # orange-lighten-4 |
|||
} |
|||
.iniciado { |
|||
background-color: #4caf50; # green |
|||
} |
|||
.concluido-com-atraso { |
|||
background-color: #ffee58; # yellow-lighten-1 |
|||
} |
|||
.concluido-no-prazo { |
|||
background-color: #2196f3; # blue |
|||
} |
|||
.previsao { |
|||
background-color: #b0bec5; # blue-grey-lighten-2 |
|||
} |
|||
.hoje { |
|||
border: 1px solid black; |
|||
} |
|||
.inicio-previsto { |
|||
border-left: 3px solid #ffb74d; # orange lighten-2 |
|||
} |
|||
.inicio-real { |
|||
border-left: 3px solid #1b5e20; # green darken-4 |
|||
} |
|||
.inicio-previsto.inicio-real { |
|||
border-left: 3px solid #4caf50; # green |
|||
} |
|||
.termino-previsto { |
|||
border-right: 3px solid #0d47a1; # blue darken-4 |
|||
} |
|||
.termino-real { |
|||
border-right: 3px solid #1a237e; # indigo darken-4 |
|||
} |
|||
.termino-previsto.termino-real { |
|||
border-right: 3px solid #2196f3; # blue |
|||
} |
|||
.legenda { |
|||
display: flex; |
|||
} |
|||
.legenda, .legenda>div { |
|||
padding: 8px; |
|||
font-weight: bolder; |
|||
} |
|||
.legenda>div { |
|||
text-align: center; |
|||
margin-right: 24px; |
|||
} |
|||
{% endblock %} |
|||
{% block main_content %} |
|||
<div class="legenda"> |
|||
<div>Legenda:</div> |
|||
<div class="previsao">{% trans "Planejado" %}</div> |
|||
<div class="iniciar-hoje">{% trans "Iniciar hoje" %}</div> |
|||
<div class="iniciado">{% trans "Iniciado" %}</div> |
|||
<div class="iniciou-atrasado">{% trans "Iniciou atrasado" %}</div> |
|||
<div class="atrasado">{% trans "Atrasado" %}</div> |
|||
<div class="concluido-no-prazo">{% trans "Concluído no prazo" %}</div> |
|||
<div class="concluido-com-atraso">{% trans "Concluído com atraso" %}</div> |
|||
</div> |
|||
<div class="legenda"> |
|||
<div>Marcadores:</div> |
|||
<div class="inicio-previsto">{% trans "Início planejado" %}</div> |
|||
<div class="inicio-real">{% trans "Início real" %}</div> |
|||
<div class="termino-previsto">{% trans "Término planejado" %}</div> |
|||
<div class="termino-real">{% trans "Término real" %}</div> |
|||
</div> |
|||
<table repeat="1"> |
|||
<thead> |
|||
<tr> |
|||
<th>{% trans 'Etapa' %}</th> |
|||
{% for data in datas %} |
|||
<th class="rotate{% if data == hoje %} hoje{% endif %}"><div>{{ data|date:"SHORT_DATE_FORMAT" }}</div></th> |
|||
{% endfor %} |
|||
</tr> |
|||
</thead> |
|||
{% for etapa in cronograma %} |
|||
<tr> |
|||
<td>{{ etapa }}</td> |
|||
{% for data in datas %} |
|||
<td class="{% include 'admin/eventos/evento/gant_report_classes.html' %}"></td> |
|||
{% endfor %} |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endblock main_content %} |
@ -0,0 +1,27 @@ |
|||
{% spaceless %} |
|||
{% if data == hoje %} hoje{% endif %} |
|||
|
|||
{% if data >= etapa.data_prevista_inicio and data <= etapa.data_prevista_termino or data >= etapa.data_inicio and data <= etapa.data_termino %} |
|||
{% if not etapa.data_inicio and etapa.data_prevista_inicio == hoje %} |
|||
iniciar-hoje |
|||
{% elif not etapa.data_inicio and etapa.data_prevista_inicio < hoje %} |
|||
atrasado |
|||
{% elif etapa.data_termino and etapa.data_termino <= etapa.data_prevista_termino %} |
|||
concluido-no-prazo |
|||
{% elif etapa.data_termino and etapa.data_termino > etapa.data_prevista_termino %} |
|||
concluido-com-atraso |
|||
{% elif not etapa.data_termino and etapa.data_prevista_termino < hoje %} |
|||
atrasado |
|||
{% elif etapa.data_inicio and not etapa.data_termino and etapa.data_inicio <= etapa.data_prevista_inicio and etapa.data_prevista_termino <= hoje %} |
|||
iniciado |
|||
{% elif etapa.data_inicio and not etapa.data_termino and etapa.data_inicio > etapa.data_prevista_inicio and etapa.data_prevista_termino <= hoje %} |
|||
iniciou-atrasado |
|||
{% else %} |
|||
previsao |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if data == etapa.data_prevista_inicio %} inicio-previsto{% endif %} |
|||
{% if data == etapa.data_prevista_termino %} termino-previsto{% endif %} |
|||
{% if data == etapa.data_inicio %} inicio-real{% endif %} |
|||
{% if data == etapa.data_termino %} termino-real{% endif %} |
|||
{% endspaceless %} |
@ -0,0 +1,35 @@ |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load static i18n %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock %} |
|||
|
|||
{% block main_content %} |
|||
<h3>{% trans 'Plano de comunicação' %}</h3> |
|||
<table repeat="1"> |
|||
<thead> |
|||
<tr> |
|||
<th rowspan="2">{% trans 'Responsável' %}</th> |
|||
<th colspan="{{ destinatarios|length }}">{% trans 'Destinatários' %}</th> |
|||
</tr> |
|||
<tr> |
|||
{% for d in destinatarios %} |
|||
<th>{{ d }}</th> |
|||
{% endfor %} |
|||
</tr> |
|||
</thead> |
|||
{% for resp, com in matrix.items %} |
|||
<tr> |
|||
<td>{{ resp }}</td> |
|||
{% for d, lista in com.items %} |
|||
<td> |
|||
<ul> |
|||
{% for item in lista %} |
|||
<li>{{ item }}</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</td> |
|||
{% endfor %} |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endblock %} |
Loading…
Reference in new issue