Browse Source

Add some fields and check dates consistency

stable/2.1
Sesostris Vieira 9 years ago
parent
commit
dd0ed3fcef
  1. 21
      sigi/apps/eventos/admin.py
  2. 21
      sigi/apps/eventos/models.py

21
sigi/apps/eventos/admin.py

@ -18,11 +18,24 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from django.utils.translation import ugettext as _
from django.contrib import admin
from django.contrib.admin import register
from django import forms
from django.utils.translation import ugettext as _
from sigi.apps.eventos.models import TipoEvento, Funcao, Evento, Equipe, Convite
class EventoAdminForm(forms.ModelForm):
class Meta:
model = Evento
def clean(self):
cleaned_data = super(EventoAdminForm, self).clean()
data_inicio = cleaned_data.get("data_inicio")
data_termino = cleaned_data.get("data_termino")
if data_inicio > data_termino:
raise forms.ValidationError(_(u"Data término deve ser posterior à data inicio"),
code="invalid_period" )
@register(TipoEvento)
class TipoEventAdmin(admin.ModelAdmin):
search_fields = ('nome',)
@ -41,9 +54,11 @@ class ConviteInline(admin.TabularInline):
@register(Evento)
class EventoAdmin(admin.ModelAdmin):
form = EventoAdminForm
date_hierarchy = 'data_inicio'
list_display = ('nome', 'tipo_evento', 'data_inicio', 'data_termino', 'municipio', 'solicitante')
list_filter = ('tipo_evento', 'municipio__uf', 'solicitante')
list_display = ('nome', 'tipo_evento', 'status', 'data_inicio', 'data_termino', 'municipio',
'solicitante')
list_filter = ('status', 'tipo_evento', 'municipio__uf', 'solicitante')
raw_id_fields = ('casa_anfitria', 'municipio',)
search_fields = ('nome', 'tipo_evento__nome', 'casa_anfitria__search_text',
'municipio__search_text', 'solicitante')

21
sigi/apps/eventos/models.py

@ -25,6 +25,7 @@ from sigi.apps.casas.models import CasaLegislativa
from sigi.apps.contatos.models import Municipio
from sigi.apps.servidores.models import Servidor
from sigi.apps.mdl.models import Course
from django.core.exceptions import ValidationError
class TipoEvento(models.Model):
nome = models.CharField(_(u"Nome"), max_length=100)
@ -37,14 +38,26 @@ class TipoEvento(models.Model):
return self.nome
class Evento(models.Model):
STATUS_CHOICES = (
('P', _(u"Programado")),
('A', _(u"Autorizado")),
('R', _(u"Realizado")),
('C', _(u"Cancelado"))
)
tipo_evento = models.ForeignKey(TipoEvento)
nome = models.CharField(_(u"Nome do evento"), max_length=100)
descricao = models.TextField(_(u"Descrição do evento"))
solicitante = models.CharField(_(u"Solicitante"), max_length=100)
data_inicio = models.DateField(_(u"Data de início"))
data_termino = models.DateField(_(u"Data de término"))
casa_anfitria = models.ForeignKey(CasaLegislativa, verbose_name=_(u"Casa anfitriã"), blank=True, null=True)
municipio = models.ForeignKey(Municipio)
local = models.TextField(_(u"Local do evento"), blank=True)
publico_alvo = models.TextField(_(u"Público alvo"), blank=True)
status = models.CharField(_(u"Status"), max_length=1, choices=STATUS_CHOICES)
data_cancelamento = models.DateField(_(u"Data de cancelamento"), blank=True, null=True)
motivo_cancelamento = models.TextField(_(u"Motivo do cancelamento"), blank=True)
curso_moodle_id = models.IntegerField(_(u"Curso saberes"), blank=True, null=True)
class Meta:
@ -58,6 +71,14 @@ class Evento(models.Model):
data_inicio=self.data_inicio,
data_termino=self.data_termino)
def save(self, *args, **kwargs):
if self.status != 'C':
self.data_cancelamento = None
self.motivo_cancelamento = ""
if self.data_inicio > self.data_termino:
raise ValidationError(_(u"Data de término deve ser posterior à data de início"))
return super(Evento, self).save(*args, **kwargs)
@property
def curso_moodle(self):
if self.curso_moodle_id:

Loading…
Cancel
Save