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 # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # 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 import admin
from django.contrib.admin import register 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 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) @register(TipoEvento)
class TipoEventAdmin(admin.ModelAdmin): class TipoEventAdmin(admin.ModelAdmin):
search_fields = ('nome',) search_fields = ('nome',)
@ -41,9 +54,11 @@ class ConviteInline(admin.TabularInline):
@register(Evento) @register(Evento)
class EventoAdmin(admin.ModelAdmin): class EventoAdmin(admin.ModelAdmin):
form = EventoAdminForm
date_hierarchy = 'data_inicio' date_hierarchy = 'data_inicio'
list_display = ('nome', 'tipo_evento', 'data_inicio', 'data_termino', 'municipio', 'solicitante') list_display = ('nome', 'tipo_evento', 'status', 'data_inicio', 'data_termino', 'municipio',
list_filter = ('tipo_evento', 'municipio__uf', 'solicitante') 'solicitante')
list_filter = ('status', 'tipo_evento', 'municipio__uf', 'solicitante')
raw_id_fields = ('casa_anfitria', 'municipio',) raw_id_fields = ('casa_anfitria', 'municipio',)
search_fields = ('nome', 'tipo_evento__nome', 'casa_anfitria__search_text', search_fields = ('nome', 'tipo_evento__nome', 'casa_anfitria__search_text',
'municipio__search_text', 'solicitante') '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.contatos.models import Municipio
from sigi.apps.servidores.models import Servidor from sigi.apps.servidores.models import Servidor
from sigi.apps.mdl.models import Course from sigi.apps.mdl.models import Course
from django.core.exceptions import ValidationError
class TipoEvento(models.Model): class TipoEvento(models.Model):
nome = models.CharField(_(u"Nome"), max_length=100) nome = models.CharField(_(u"Nome"), max_length=100)
@ -37,14 +38,26 @@ class TipoEvento(models.Model):
return self.nome return self.nome
class Evento(models.Model): class Evento(models.Model):
STATUS_CHOICES = (
('P', _(u"Programado")),
('A', _(u"Autorizado")),
('R', _(u"Realizado")),
('C', _(u"Cancelado"))
)
tipo_evento = models.ForeignKey(TipoEvento) tipo_evento = models.ForeignKey(TipoEvento)
nome = models.CharField(_(u"Nome do evento"), max_length=100) 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) solicitante = models.CharField(_(u"Solicitante"), max_length=100)
data_inicio = models.DateField(_(u"Data de início")) data_inicio = models.DateField(_(u"Data de início"))
data_termino = models.DateField(_(u"Data de término")) data_termino = models.DateField(_(u"Data de término"))
casa_anfitria = models.ForeignKey(CasaLegislativa, verbose_name=_(u"Casa anfitriã"), blank=True, null=True) casa_anfitria = models.ForeignKey(CasaLegislativa, verbose_name=_(u"Casa anfitriã"), blank=True, null=True)
municipio = models.ForeignKey(Municipio) municipio = models.ForeignKey(Municipio)
local = models.TextField(_(u"Local do evento"), blank=True) 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) curso_moodle_id = models.IntegerField(_(u"Curso saberes"), blank=True, null=True)
class Meta: class Meta:
@ -58,6 +71,14 @@ class Evento(models.Model):
data_inicio=self.data_inicio, data_inicio=self.data_inicio,
data_termino=self.data_termino) 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 @property
def curso_moodle(self): def curso_moodle(self):
if self.curso_moodle_id: if self.curso_moodle_id:

Loading…
Cancel
Save