diff --git a/sigi/apps/eventos/static/css/calendario.css b/sigi/apps/eventos/static/css/calendario.css new file mode 100644 index 0000000..6e39cde --- /dev/null +++ b/sigi/apps/eventos/static/css/calendario.css @@ -0,0 +1,42 @@ +#content { + display: block; +} + +.data-evento { + font-size: 0.6em; + color: var(--body-quiet-color); + display: block; +} + +.tipo-evento { + font-size: 0.6em; + color: var(--body-quiet-color); + display: block; + margin-bottom: 8px; +} + +.card-title { + font-size: 20px !important; + margin-bottom: -6px !important; +} + +.card .card-content p { + margin: 12px; +} + +a.format-selector .material-icons { + line-height: 48px; +} + +table { + table-layout: fixed; +} + +table td, +table td * { + vertical-align: top; +} + +span.numero-dia { + font-size: 0.5em; +} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/calendario.html b/sigi/apps/eventos/templates/eventos/calendario.html index c392a47..2c5830e 100644 --- a/sigi/apps/eventos/templates/eventos/calendario.html +++ b/sigi/apps/eventos/templates/eventos/calendario.html @@ -2,11 +2,24 @@ {% load i18n %} {% load static %} +{% block extrastyle %} + {{ block.super }} + +{% endblock %} + +{% block breadcrumbs %}{% endblock %} {% block coltype %}colMS{% endblock %} {% block content %}
-
+
+ {% if formato == 'cal' %} + view_list + {% else %} + date_range + {% endif %} +
+
    {% for ano in meses %}
  • {{ ano| safe }}
  • @@ -16,76 +29,25 @@ {% for ano, lista in meses.items %}
    {% for mes, nome in lista.items %} - {{ nome }} + {{ nome }} {% endfor %}
    {% endfor %}
- - {% for evento in eventos %} -
-
-
-
- {{ evento.nome }} -

Os detalhes virão aqui

-
-
-
-
- {% endfor %} - - - + {% if formato == "cal" %} + {% include "eventos/snippets/calendario_cal.html" %} + {% else %} + {% include "eventos/snippets/calendario_lista.html" %} + {% endif %} + {% include "eventos/snippets/calendario_modals.html" %} {% endblock %} {% block footer %} {{ block.super }} {% endblock %} - -{% comment %} -{% block extrastyle %} - - {{ block.super }} -{% endblock %} - -{% block extrahead %} - {{ block.super }} -{% endblock %} - -{% block coltype %}colMS{% endblock %} - -{% block content_title %}

{% blocktrans %}Eventos de {{ mes_pesquisa }}/{{ ano_pesquisa }}{% endblocktrans %}

{% endblock %} - -{% block object-tools-items %} - {% if prev_button %} -
  • {% trans "Mês anterior" %}
  • - {% endif %} - {% if next_button %} -
  • {% trans "Próximo mês" %}
  • - {% endif %} -
  • {% trans "Exportar para PDF" %}
  • -{% endblock %} - -{% block content %} - {% include "eventos/calendario_snippet.html" %} -{% endblock %} -{% endcomment %} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/snippets/calendario_cal.html b/sigi/apps/eventos/templates/eventos/snippets/calendario_cal.html new file mode 100644 index 0000000..36ca3f6 --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/snippets/calendario_cal.html @@ -0,0 +1,28 @@ +{% load i18n %} +{% load static %} + +
    + + + {% for name in day_names %} + + {% endfor %} + + + {% for semana in semanas %} + + {% for dia in semana %} + + {% endfor %} + + {% endfor %} + +
    {{ name }}
    + {{ dia.0 }} + {% for evento in dia.1 %} +

    + {{ evento.nome }} +

    + {% endfor %} +
    +
    \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/snippets/calendario_lista.html b/sigi/apps/eventos/templates/eventos/snippets/calendario_lista.html new file mode 100644 index 0000000..e796fb7 --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/snippets/calendario_lista.html @@ -0,0 +1,34 @@ +{% load i18n %} +{% load static %} + +{% for evento in eventos %} +
    +
    +
    +
    + {{ evento.nome }} + {{ evento.data_inicio }} a {{ evento.data_termino }} + + {{ evento.tipo_evento }} - + {{ evento.tipo_evento.get_categoria_display }} - + {{ evento.get_status_display }} + {% if evento.virtual %} {% trans "na modalidade virtual" %}{% endif %} + {% if evento.casa_anfitria %} {% trans "em" %} {{ evento.casa_anfitria }}{% endif %} + +

    {{ evento.descricao }}

    +

    {% trans "Solicitante" %}: {{ evento.solicitante }}

    + {% if evento.equipe_set.all %} +

    + {% trans "Equipe" %}: + {% for membro in evento.equipe_set.all %} + {{ membro.membro }} ({{ membro.funcao }}) + {% if not forloop.last %} - {% endif %} + {% endfor %} +

    + {% endif %} + {% trans "Ver detalhes" %} +
    +
    +
    +
    +{% endfor %} diff --git a/sigi/apps/eventos/templates/eventos/snippets/calendario_modals.html b/sigi/apps/eventos/templates/eventos/snippets/calendario_modals.html new file mode 100644 index 0000000..f3e603e --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/snippets/calendario_modals.html @@ -0,0 +1,60 @@ +{% load i18n %} + +{% for evento in eventos %} + +{% endfor %} \ No newline at end of file diff --git a/sigi/apps/eventos/templates/eventos/snippets/calendario_status_color.html b/sigi/apps/eventos/templates/eventos/snippets/calendario_status_color.html new file mode 100644 index 0000000..03e65db --- /dev/null +++ b/sigi/apps/eventos/templates/eventos/snippets/calendario_status_color.html @@ -0,0 +1 @@ +{% if status == 'Q' %}brown{% endif %}{% if status == 'C' %}deep-orange{% endif %}{% if status == 'R' %}cyan{% endif %}{% if status == 'O' %}green{% endif %}{% if status == 'A' %}lime{% endif %}{% if status not in "EGP" %} lighten-4{% endif %} \ No newline at end of file diff --git a/sigi/apps/eventos/views.py b/sigi/apps/eventos/views.py index c61396b..ac07484 100644 --- a/sigi/apps/eventos/views.py +++ b/sigi/apps/eventos/views.py @@ -1,3 +1,4 @@ +from datetime import datetime import calendar import locale from django.contrib import messages @@ -30,7 +31,7 @@ from sigi.apps.servidores.models import Servidor def calendario(request): mes_pesquisa = int(request.GET.get("mes", timezone.localdate().month)) ano_pesquisa = int(request.GET.get("ano", timezone.localdate().year)) - formato = request.GET.get("fmt", "html") + formato = request.GET.get("fmt", "cal") meses = {} lang = to_locale(get_language()) + ".UTF-8" @@ -46,14 +47,43 @@ def calendario(request): else: meses[ano] = {mes: calendar.month_name[mes]} - context = { - "ano_pesquisa": ano_pesquisa, - "mes_pesquisa": mes_pesquisa, - "meses": meses, - "eventos": Evento.objects.filter( - data_inicio__year=ano_pesquisa, data_inicio__month=mes_pesquisa - ), - } + eventos = Evento.objects.filter( + data_inicio__year=ano_pesquisa, data_inicio__month=mes_pesquisa + ) + + context = site.each_context(request) or {} + + if formato == "cal": + semanas = calendar.Calendar().monthdatescalendar( + ano_pesquisa, mes_pesquisa + ) + for semana in semanas: + for dia in semana: + if dia.month == mes_pesquisa: + semana[dia.weekday()] = ( + dia.day, + [ + e + for e in eventos + if e.data_inicio.day + <= dia.day + <= e.data_termino.day + ], + ) + else: + semana[dia.weekday()] = ("", []) + context["semanas"] = semanas + + context.update( + { + "ano_pesquisa": ano_pesquisa, + "mes_pesquisa": mes_pesquisa, + "formato": formato, + "meses": meses, + "day_names": calendar.day_abbr, + "eventos": eventos, + } + ) return render(request, "eventos/calendario.html", context) diff --git a/sigi/menu_conf.yaml b/sigi/menu_conf.yaml index d76b6c5..0125cc5 100644 --- a/sigi/menu_conf.yaml +++ b/sigi/menu_conf.yaml @@ -31,6 +31,8 @@ main_menu: - title: Assembléias Legislativas view_name: admin:casas_orgao_changelist querystr: tipo__sigla__exact=AL + # - title: Parlamentares + # view_name: admin:parlamentares_parlamentar_changelist - title: Demais órgãos view_name: admin:casas_orgao_changelist querystr: tipo__legislativo__exact=0 @@ -82,7 +84,7 @@ main_menu: view_name: admin:eventos_evento_changelist querystr: tipo_evento__categoria__exact=V - title: Calendário mensal - view_name: + view_name: eventos-calendario - title: Alocação de equipe view_name: - title: Servidores @@ -113,3 +115,5 @@ main_menu: view_name: admin:eventos_funcao_changelist - title: Modelos de declaração view_name: admin:eventos_modelodeclaracao_changelist + # - title: Partidos políticos + # view_name: admin:parlamentares_partido_changelist