|
@ -9,6 +9,7 @@ from django.http import HttpResponse |
|
|
from django.shortcuts import get_object_or_404, render, redirect |
|
|
from django.shortcuts import get_object_or_404, render, redirect |
|
|
from django.template import Template, Context |
|
|
from django.template import Template, Context |
|
|
from django.urls import path, reverse |
|
|
from django.urls import path, reverse |
|
|
|
|
|
from django.utils import timezone |
|
|
from django.utils.safestring import mark_safe |
|
|
from django.utils.safestring import mark_safe |
|
|
from django.utils.translation import gettext as _ |
|
|
from django.utils.translation import gettext as _ |
|
|
from django_weasyprint.utils import django_url_fetcher |
|
|
from django_weasyprint.utils import django_url_fetcher |
|
@ -109,8 +110,6 @@ class EventoResource(ValueLabeledResource): |
|
|
"casa_anfitria__cep", |
|
|
"casa_anfitria__cep", |
|
|
"casa_anfitria__email", |
|
|
"casa_anfitria__email", |
|
|
"local", |
|
|
"local", |
|
|
"municipio__nome", |
|
|
|
|
|
"municipio__uf__sigla", |
|
|
|
|
|
"observacao", |
|
|
"observacao", |
|
|
"publico_alvo", |
|
|
"publico_alvo", |
|
|
"total_participantes", |
|
|
"total_participantes", |
|
@ -183,6 +182,7 @@ class ItemSolicitadoInline(admin.StackedInline): |
|
|
) |
|
|
) |
|
|
readonly_fields = ("servidor", "evento") |
|
|
readonly_fields = ("servidor", "evento") |
|
|
extra = 1 |
|
|
extra = 1 |
|
|
|
|
|
autocomplete_fields = ("tipo_evento",) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@admin.register(TipoEvento) |
|
|
@admin.register(TipoEvento) |
|
@ -200,6 +200,7 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
"casa", |
|
|
"casa", |
|
|
"senador", |
|
|
"senador", |
|
|
"data_pedido", |
|
|
"data_pedido", |
|
|
|
|
|
"data_recebido_coperi", |
|
|
"get_oficinas", |
|
|
"get_oficinas", |
|
|
"get_municipio", |
|
|
"get_municipio", |
|
|
"get_uf", |
|
|
"get_uf", |
|
@ -255,18 +256,24 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
if item.evento is None: |
|
|
if item.evento is None: |
|
|
item.evento = Evento( |
|
|
item.evento = Evento( |
|
|
tipo_evento=item.tipo_evento, |
|
|
tipo_evento=item.tipo_evento, |
|
|
nome=f"{item.tipo_evento} em {item.solicitacao.casa}", |
|
|
nome=_( |
|
|
descricao=f"{item.tipo_evento} em {item.solicitacao.casa}", |
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
|
|
|
), |
|
|
|
|
|
descricao=_( |
|
|
|
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
|
|
|
), |
|
|
virtual=item.virtual, |
|
|
virtual=item.virtual, |
|
|
solicitante=item.solicitacao.senador, |
|
|
solicitante=item.solicitacao.senador, |
|
|
num_processo=item.solicitacao.num_processo, |
|
|
num_processo=item.solicitacao.num_processo, |
|
|
data_pedido=item.solicitacao.data_pedido, |
|
|
data_pedido=item.solicitacao.data_pedido, |
|
|
|
|
|
data_recebido_coperi=item.solicitacao.data_recebido_coperi, |
|
|
data_inicio=item.inicio_desejado, |
|
|
data_inicio=item.inicio_desejado, |
|
|
data_termino=item.inicio_desejado |
|
|
data_termino=item.inicio_desejado |
|
|
+ datetime.timedelta(days=item.tipo_evento.duracao), |
|
|
+ datetime.timedelta(days=item.tipo_evento.duracao), |
|
|
casa_anfitria=item.solicitacao.casa, |
|
|
casa_anfitria=item.solicitacao.casa, |
|
|
municipio=item.solicitacao.casa.municipio, |
|
|
observacao=_( |
|
|
observacao=f"Autorizado por {servidor} com a justificativa '{item.justificativa}", |
|
|
f"Autorizado por {servidor} com a justificativa '{item.justificativa}" |
|
|
|
|
|
), |
|
|
status=Evento.STATUS_CONFIRMADO, |
|
|
status=Evento.STATUS_CONFIRMADO, |
|
|
contato=item.solicitacao.contato, |
|
|
contato=item.solicitacao.contato, |
|
|
telefone=item.solicitacao.telefone_contato, |
|
|
telefone=item.solicitacao.telefone_contato, |
|
@ -278,6 +285,11 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
) |
|
|
) |
|
|
else: |
|
|
else: |
|
|
item.evento.status = Evento.STATUS_CONFIRMADO |
|
|
item.evento.status = Evento.STATUS_CONFIRMADO |
|
|
|
|
|
item.evento.observacao += _( |
|
|
|
|
|
f"\nConfirmado por {servidor} com a justificativa: {item.justificativa}" |
|
|
|
|
|
) |
|
|
|
|
|
item.evento.data_cancelamento = None |
|
|
|
|
|
item.evento.motivo_cancelamento = "" |
|
|
self.message_user( |
|
|
self.message_user( |
|
|
request, |
|
|
request, |
|
|
_( |
|
|
_( |
|
@ -288,7 +300,13 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
) |
|
|
) |
|
|
elif ItemSolicitado.STATUS_REJEITADO and item.evento is not None: |
|
|
elif ItemSolicitado.STATUS_REJEITADO and item.evento is not None: |
|
|
item.evento.status = Evento.STATUS_CANCELADO |
|
|
item.evento.status = Evento.STATUS_CANCELADO |
|
|
item.evento.save() |
|
|
item.evento.observacao += _( |
|
|
|
|
|
f"\nCancelado por {servidor} com a justificativa: {item.justificativa}" |
|
|
|
|
|
) |
|
|
|
|
|
item.evento.data_cancelamento = timezone.localdate() |
|
|
|
|
|
item.evento.motivo_cancelamento = _( |
|
|
|
|
|
f"\nCancelado por {servidor} com a justificativa: {item.justificativa}" |
|
|
|
|
|
) |
|
|
self.message_user( |
|
|
self.message_user( |
|
|
request, |
|
|
request, |
|
|
_( |
|
|
_( |
|
@ -299,24 +317,25 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
) |
|
|
) |
|
|
if item.evento: |
|
|
if item.evento: |
|
|
item.evento.tipo_evento = item.tipo_evento |
|
|
item.evento.tipo_evento = item.tipo_evento |
|
|
item.evento.nome = ( |
|
|
item.evento.nome = _( |
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
) |
|
|
) |
|
|
item.evento.descricao = ( |
|
|
item.evento.descricao = _( |
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
f"{item.tipo_evento} em {item.solicitacao.casa}" |
|
|
) |
|
|
) |
|
|
item.evento.virtual = item.virtual |
|
|
item.evento.virtual = item.virtual |
|
|
item.evento.solicitante = item.solicitacao.senador |
|
|
item.evento.solicitante = item.solicitacao.senador |
|
|
item.evento.num_processo = item.solicitacao.num_processo |
|
|
item.evento.num_processo = item.solicitacao.num_processo |
|
|
item.evento.data_pedido = item.solicitacao.data_pedido |
|
|
item.evento.data_pedido = item.solicitacao.data_pedido |
|
|
|
|
|
item.evento.data_recebido_coperi = ( |
|
|
|
|
|
item.solicitacao.data_recebido_coperi |
|
|
|
|
|
) |
|
|
item.evento.data_inicio = item.inicio_desejado |
|
|
item.evento.data_inicio = item.inicio_desejado |
|
|
item.evento.data_termino = ( |
|
|
item.evento.data_termino = ( |
|
|
item.inicio_desejado |
|
|
item.inicio_desejado |
|
|
+ datetime.timedelta(days=item.tipo_evento.duracao) |
|
|
+ datetime.timedelta(days=item.tipo_evento.duracao) |
|
|
) |
|
|
) |
|
|
item.evento.casa_anfitria = item.solicitacao.casa |
|
|
item.evento.casa_anfitria = item.solicitacao.casa |
|
|
item.evento.municipio = item.solicitacao.casa.municipio |
|
|
|
|
|
item.evento.observacao = f"Autorizado por {servidor} com a justificativa '{item.justificativa}" |
|
|
|
|
|
item.evento.contato = item.solicitacao.contato |
|
|
item.evento.contato = item.solicitacao.contato |
|
|
item.evento.telefone = item.solicitacao.telefone_contato |
|
|
item.evento.telefone = item.solicitacao.telefone_contato |
|
|
item.evento.save() |
|
|
item.evento.save() |
|
@ -359,7 +378,7 @@ class SolicitacaoAdmin(admin.ModelAdmin): |
|
|
def get_oficinas_uf(self, obj): |
|
|
def get_oficinas_uf(self, obj): |
|
|
return Evento.objects.filter( |
|
|
return Evento.objects.filter( |
|
|
status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], |
|
|
status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], |
|
|
municipio__uf=obj.casa.municipio.uf, |
|
|
casa_anfitria__municipio__uf=obj.casa.municipio.uf, |
|
|
).count() |
|
|
).count() |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -396,7 +415,7 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin): |
|
|
"link_sigad", |
|
|
"link_sigad", |
|
|
"data_inicio", |
|
|
"data_inicio", |
|
|
"data_termino", |
|
|
"data_termino", |
|
|
"municipio", |
|
|
"get_municipio", |
|
|
"solicitante", |
|
|
"solicitante", |
|
|
"total_participantes", |
|
|
"total_participantes", |
|
|
) |
|
|
) |
|
@ -409,20 +428,17 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin): |
|
|
"tipo_evento__categoria", |
|
|
"tipo_evento__categoria", |
|
|
("data_inicio", DateRangeFilter), |
|
|
("data_inicio", DateRangeFilter), |
|
|
"virtual", |
|
|
"virtual", |
|
|
"municipio__uf", |
|
|
|
|
|
"solicitante", |
|
|
"solicitante", |
|
|
) |
|
|
) |
|
|
autocomplete_fields = ( |
|
|
autocomplete_fields = ( |
|
|
"tipo_evento", |
|
|
"tipo_evento", |
|
|
"solicitacao", |
|
|
|
|
|
"casa_anfitria", |
|
|
"casa_anfitria", |
|
|
"municipio", |
|
|
|
|
|
) |
|
|
) |
|
|
search_fields = ( |
|
|
search_fields = ( |
|
|
"nome", |
|
|
"nome", |
|
|
"tipo_evento__nome", |
|
|
"tipo_evento__nome", |
|
|
"casa_anfitria__search_text", |
|
|
"casa_anfitria__search_text", |
|
|
"municipio__search_text", |
|
|
"casa_anfitria__municipio__search_text", |
|
|
"solicitante", |
|
|
"solicitante", |
|
|
"num_processo", |
|
|
"num_processo", |
|
|
) |
|
|
) |
|
@ -435,11 +451,22 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin): |
|
|
) |
|
|
) |
|
|
save_as = True |
|
|
save_as = True |
|
|
|
|
|
|
|
|
@admin.display(description=_("Tipo Evento")) |
|
|
@admin.display(description=_("Tipo Evento"), ordering="tipo_evento__nome") |
|
|
def get_tipo_evento(self, obj): |
|
|
def get_tipo_evento(self, obj): |
|
|
return obj.tipo_evento.nome |
|
|
return obj.tipo_evento.nome |
|
|
|
|
|
|
|
|
@admin.display(description=_("número do processo SIGAD")) |
|
|
@admin.display( |
|
|
|
|
|
description=_("Município"), ordering="casa_anfitria__municipio" |
|
|
|
|
|
) |
|
|
|
|
|
def get_municipio(self, obj): |
|
|
|
|
|
if obj.casa_anfitria: |
|
|
|
|
|
return str(obj.casa_anfitria.municipio) |
|
|
|
|
|
else: |
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
@admin.display( |
|
|
|
|
|
description=_("número do processo SIGAD"), ordering="num_processo" |
|
|
|
|
|
) |
|
|
def link_sigad(self, obj): |
|
|
def link_sigad(self, obj): |
|
|
if obj.pk is None: |
|
|
if obj.pk is None: |
|
|
return "" |
|
|
return "" |
|
@ -776,7 +803,7 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin): |
|
|
|
|
|
|
|
|
api_url = f"{settings.MOODLE_BASE_URL}/webservice/rest/server.php" |
|
|
api_url = f"{settings.MOODLE_BASE_URL}/webservice/rest/server.php" |
|
|
mws = Moodle(api_url, settings.MOODLE_API_TOKEN) |
|
|
mws = Moodle(api_url, settings.MOODLE_API_TOKEN) |
|
|
fullname = f"{evento.tipo_evento.nome} - {evento.municipio.nome}/{evento.municipio.uf.sigla} - {evento.tipo_evento.prefixo_turma}{evento.turma}" |
|
|
fullname = f"{evento.tipo_evento.nome} - {evento.casa_anfitria.municipio.nome}/{evento.casa_anfitria.municipio.uf.sigla} - {evento.tipo_evento.prefixo_turma}{evento.turma}" |
|
|
shortname = f"{abreviatura(evento.tipo_evento.nome)} - {evento.tipo_evento.prefixo_turma}{evento.turma}" |
|
|
shortname = f"{abreviatura(evento.tipo_evento.nome)} - {evento.tipo_evento.prefixo_turma}{evento.turma}" |
|
|
inicio = int(time.mktime(evento.data_inicio.astimezone().timetuple())) |
|
|
inicio = int(time.mktime(evento.data_inicio.astimezone().timetuple())) |
|
|
fim = int(time.mktime(evento.data_termino.astimezone().timetuple())) |
|
|
fim = int(time.mktime(evento.data_termino.astimezone().timetuple())) |
|
|