Browse Source

Mudança emergencial app de eventos

pull/157/head
Sesostris Vieira 3 years ago
parent
commit
4df83c0149
  1. 35
      sigi/apps/eventos/admin.py
  2. 8
      sigi/apps/eventos/forms.py
  3. 38
      sigi/apps/eventos/migrations/0016_auto_20220407_0955.py
  4. 30
      sigi/apps/eventos/models.py

35
sigi/apps/eventos/admin.py

@ -28,6 +28,25 @@ from sigi.apps.eventos.models import (ModeloDeclaracao, Modulo, TipoEvento,
from sigi.apps.eventos.views import adicionar_eventos_carrinho
from sigi.apps.eventos.forms import EventoAdminForm
class SigadFilter(admin.SimpleListFilter):
title = _(u"Processo SIGAD")
parameter_name = 'num_processo'
def lookups(self, request, model_admin):
return (
('empty', _(u"Sem proceesso SIGAD")),
('not_empty', _(u"Com processo SIGAD")),
)
def queryset(self, request, queryset):
if self.value() is not None:
if self.value() == 'empty':
queryset = queryset.filter(num_processo="")
elif self.value() == 'not_empty':
queryset = queryset.exclude(num_processo="")
return queryset
@admin.register(TipoEvento)
class TipoEventAdmin(admin.ModelAdmin):
search_fields = ('nome',)
@ -59,17 +78,25 @@ class AnexoInline(admin.TabularInline):
class EventoAdmin(admin.ModelAdmin):
form = EventoAdminForm
date_hierarchy = 'data_inicio'
list_display = ('nome', 'tipo_evento', 'status', 'data_inicio',
'data_termino', 'municipio', 'solicitante',
list_display = ('nome', 'tipo_evento', 'status', 'link_sigad',
'data_inicio', 'data_termino', 'municipio', 'solicitante',
'total_participantes',)
list_filter = ('status', 'tipo_evento', 'tipo_evento__categoria', 'virtual',
'municipio__uf', 'solicitante')
list_filter = ('status', SigadFilter, 'tipo_evento',
'tipo_evento__categoria', 'virtual', 'municipio__uf',
'solicitante')
raw_id_fields = ('casa_anfitria', 'municipio',)
search_fields = ('nome', 'tipo_evento__nome', 'casa_anfitria__search_text',
'municipio__search_text', 'solicitante')
inlines = (EquipeInline, ConviteInline, ModuloInline, AnexoInline)
actions = ['adicionar_eventos', ]
def link_sigad(self, obj):
if obj.pk is None:
return ""
return obj.get_sigad_url()
link_sigad.short_description = _(u"número do processo SIGAD")
link_sigad.allow_tags = True
def adicionar_eventos(self, request, queryset):
if 'carrinho_eventos' in request.session:
q1 = len(request.session['carrinho_eventos'])

8
sigi/apps/eventos/forms.py

@ -8,10 +8,10 @@ class EventoAdminForm(forms.ModelForm):
class Meta:
model = Evento
fields = ('tipo_evento', 'nome', 'descricao', 'virtual', 'solicitante',
'data_inicio', 'data_termino', 'carga_horaria',
'casa_anfitria', 'municipio', 'local', 'publico_alvo',
'total_participantes', 'status', 'data_cancelamento',
'motivo_cancelamento', )
'num_processo', 'data_pedido', 'data_inicio', 'data_termino',
'carga_horaria', 'casa_anfitria', 'municipio', 'observacao',
'local', 'publico_alvo', 'total_participantes', 'status',
'data_cancelamento', 'motivo_cancelamento', )
def clean(self):
cleaned_data = super(EventoAdminForm, self).clean()

38
sigi/apps/eventos/migrations/0016_auto_20220407_0955.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('eventos', '0015_anexo'),
]
operations = [
migrations.AddField(
model_name='evento',
name='data_pedido',
field=models.DateField(help_text='Data em que o pedido do Gabinete chegou \xe0 COPERI', null=True, verbose_name='Data do pedido', blank=True),
preserve_default=True,
),
migrations.AddField(
model_name='evento',
name='num_processo',
field=models.CharField(help_text='Formato:<em>XXXXX.XXXXXX/XXXX-XX</em>', max_length=20, verbose_name='n\xfamero do processo SIGAD', blank=True),
preserve_default=True,
),
migrations.AddField(
model_name='evento',
name='observacao',
field=models.TextField(verbose_name='Observa\xe7\xf5es e anota\xe7\xf5es', blank=True),
preserve_default=True,
),
migrations.AlterField(
model_name='evento',
name='status',
field=models.CharField(max_length=1, verbose_name='Status', choices=[(b'E', 'Em planejamento'), (b'G', 'Aguardando abertura SIGAD'), (b'P', 'Previs\xe3o'), (b'A', 'A confirmar'), (b'O', 'Confirmado'), (b'R', 'Realizado'), (b'C', 'Cancelado')]),
preserve_default=True,
),
]

30
sigi/apps/eventos/models.py

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import re
from datetime import datetime
import random
from django.db import models
@ -36,6 +37,8 @@ class TipoEvento(models.Model):
class Evento(models.Model):
STATUS_CHOICES = (
('E', _(u"Em planejamento")),
('G', _(u"Aguardando abertura SIGAD")),
('P', _(u"Previsão")),
('A', _(u"A confirmar")),
('O', _(u"Confirmado")),
@ -51,6 +54,18 @@ class Evento(models.Model):
descricao = models.TextField(_(u"Descrição do evento"))
virtual = models.BooleanField(_("Virtual"), default=False)
solicitante = models.CharField(_(u"Solicitante"), max_length=100)
num_processo = models.CharField(
_(u'número do processo SIGAD'),
max_length=20,
blank=True,
help_text=_(u'Formato:<em>XXXXX.XXXXXX/XXXX-XX</em>')
)
data_pedido = models.DateField(
_(u"Data do pedido"),
null=True,
blank=True,
help_text=_(u"Data em que o pedido do Gabinete chegou à COPERI")
)
data_inicio = models.DateTimeField(
_(u"Data/hora do Início"),
null=True,
@ -77,6 +92,7 @@ class Evento(models.Model):
on_delete=models.PROTECT
)
local = models.TextField(_(u"Local do evento"), blank=True)
observacao = models.TextField(_(u"Observações e anotações"), blank=True)
publico_alvo = models.TextField(_(u"Público alvo"), blank=True)
total_participantes = models.PositiveIntegerField(
_(u"Total de participantes"),
@ -100,6 +116,20 @@ class Evento(models.Model):
data_inicio=self.data_inicio,
data_termino=self.data_termino)
def get_sigad_url(self):
m = re.match(
r'(?P<orgao>00100|00200)\.(?P<sequencial>\d{6})/(?P<ano>\d{4})-\d{2}',
self.num_processo
)
if m:
return (r'<a href="https://intra.senado.leg.br/'
r'sigad/novo/protocolo/impressao.asp?area=processo'
r'&txt_numero_orgao={orgao}'
r'&txt_numero_sequencial={sequencial}'
r'&txt_numero_ano={ano}"'
r' target="_blank">{processo}</a>').format(processo=self.num_processo,**m.groupdict())
return self.num_processo
def save(self, *args, **kwargs):
if self.status != 'C':
self.data_cancelamento = None

Loading…
Cancel
Save