unificating address in a single and big field (cascardo's idea =)
[cascardo/ema.git] / eventos / models.py
index 0ed2119..85e3243 100644 (file)
@@ -27,10 +27,9 @@ class Evento(models.Model):
     local = models.CharField(max_length=100)
     nome_contato = models.CharField(u'Nome do contato', max_length=100)
     telefone = models.CharField(max_length=100)
     local = models.CharField(max_length=100)
     nome_contato = models.CharField(u'Nome do contato', max_length=100)
     telefone = models.CharField(max_length=100)
+    endereco = models.TextField()
     cidade = models.CharField(max_length=100)
     estado = models.CharField(max_length=2, choices=STATE_CHOICES)
     cidade = models.CharField(max_length=100)
     estado = models.CharField(max_length=2, choices=STATE_CHOICES)
-    rua = models.CharField(max_length=100)
-    numero = models.CharField(u'Número', max_length=10)
     info_adicional = models.TextField(blank=True)
 
     class Admin:
     info_adicional = models.TextField(blank=True)
 
     class Admin:
@@ -39,10 +38,12 @@ class Evento(models.Model):
              {'fields': ('nome', 'data_inicio', 'data_final')}),
 
             (u'Informações da sede',
              {'fields': ('nome', 'data_inicio', 'data_final')}),
 
             (u'Informações da sede',
-             {'fields': ('local', 'nome_contato', 'rua', 'numero', 'cidade',
+             {'fields': ('local', 'nome_contato', 'endereco', 'cidade',
                          'estado', 'telefone', 'info_adicional')}),
         )
 
                          'estado', 'telefone', 'info_adicional')}),
         )
 
+        search_fields = list_display = 'nome', 'local'
+
     def __str__(self):
         return self.nome
 
     def __str__(self):
         return self.nome
 
@@ -53,27 +54,69 @@ class Palestrante(models.Model):
     telefone = models.CharField(max_length=100, blank=True)
     celular = models.CharField(max_length=100, blank=True)
 
     telefone = models.CharField(max_length=100, blank=True)
     celular = models.CharField(max_length=100, blank=True)
 
-    instituicao = models.CharField(max_length=250, blank=True)
+    instituicao = models.CharField(u'Instituição', max_length=250, blank=True)
 
 
-    rua = models.CharField(max_length=100)
-    numero = models.CharField(max_length=10)
-    bairro = models.CharField(max_length=100)
+    endereco = models.TextField()
+    cep = models.CharField(max_length=5)
     cidade = models.CharField(max_length=100)
     cidade = models.CharField(max_length=100)
-    uf = models.CharField(max_length=3)
+    estado = models.CharField(max_length=2, choices=STATE_CHOICES)
 
 
-    minicurriculo = models.TextField('Mini currículo')
-    curriculo = models.TextField('Currículo')
+    minicurriculo = models.TextField(u'Mini currículo')
+    curriculo = models.TextField(u'Currículo')
 
 
-    usuario = models.ForeignKey(User)
+    usuario = models.ForeignKey(User, help_text=u'Este campo associa o '
+                                'palestrante a uma conta no sistema para '
+                                'que ele possa enviar trabalhos e alterar '
+                                'dados pessoais.')
 
     class Admin:
         fields = (
             (None, {'fields': ('nome', 'email', 'instituicao',
 
     class Admin:
         fields = (
             (None, {'fields': ('nome', 'email', 'instituicao',
-                'minicurriculo', 'curriculo')}),
-            ('Telefones', {'fields': ('telefone', 'celular')}),
-            ('Endereço', {'fields': ('rua', 'numero',
-                'bairro', 'cidade', 'uf')}),
+                               'minicurriculo', 'curriculo')}),
+
+            (u'Telefones', {'fields': ('telefone', 'celular')}),
+
+            (u'Endereço', {'fields': ('endereco', 'cep', 'cidade', 'estado')}),
+
+            (u'Avançado', {'fields': ('usuario',),
+                           'classes': 'collapse'}),
         )
 
         )
 
+        search_fields = list_display = 'nome', 'instituicao', 'email', 'celular'
+
     def __str__(self):
         return self.nome
     def __str__(self):
         return self.nome
+
+class TipoTrabalho(models.Model):
+    nome = models.CharField(max_length=100)
+
+    class Admin:
+        search_fields = 'nome',
+
+    class Meta:
+        verbose_name = u'Tipo de trabalho'
+        verbose_name_plural = u'Tipos de trabalho'
+
+    def __str__(self):
+        return self.nome
+
+class Trabalho(models.Model):
+    titulo = models.CharField(max_length=100)
+    evento = models.ForeignKey(Evento)
+    tipo = models.ForeignKey(TipoTrabalho)
+    palestrante = models.ForeignKey(Palestrante)
+    descricao_curta = models.TextField(u'Descrição curta')
+    descricao_longa = models.TextField(u'Descrição longa')
+    recursos = models.TextField(blank=True)
+    outros_palestrantes = \
+        models.ManyToManyField(Palestrante,
+                               related_name='outros_palestrantes',
+                               blank=True,
+                               null=True)
+
+    class Admin:
+        list_filter = 'evento', 'tipo'
+        search_fields = list_display = 'titulo', 'evento', 'tipo'
+
+    def __str__(self):
+        return self.titulo