mudança brusca na modelagem do banco, principalmente no que se remete a gerenciamento...
authorLincoln de Sousa <pythonwarrior@pidinti.localdomain>
Tue, 14 Aug 2007 18:38:56 +0000 (15:38 -0300)
committerLincoln de Sousa <pythonwarrior@pidinti.localdomain>
Tue, 14 Aug 2007 18:38:56 +0000 (15:38 -0300)
__init__.py
eventos/models.py
forms.py
templates/base.html
views.py

index fe58f80..fc9c155 100644 (file)
@@ -15,11 +15,7 @@ def initialize():
     emsl.uf = 'MG'
     emsl.save()
 
-    from eventos.models import AreaDeInteresse
-    AreaDeInteresse(nome='Hurd').save()
-    AreaDeInteresse(nome='VoIP').save()
-
-    from eventos.models import CategoriaPalestra
-    CategoriaPalestra(nome='Admin').save()
-    CategoriaPalestra(nome='Filosofia').save()
-    CategoriaPalestra(nome='Desenvolvimento').save()
+    from eventos.models import CategoriaTrabalho
+    #CategoriaTrabalho(nome='Admin').save()
+    #CategoriaTrabalho(nome='Filosofia').save()
+    #CategoriaTrabalho(nome='Desenvolvimento').save()
index 2a73e6e..d28bb95 100644 (file)
@@ -50,27 +50,12 @@ class Evento(models.Model):
         return self.nome
 
 
-class AreaDeInteresse(models.Model):
-    nome = models.CharField(maxlength=100)
-
-    class Meta:
-        verbose_name = 'area de interesse'
-        verbose_name_plural = 'areas de interesse'
-
-    class Admin:
-        pass
-
-    def __str__(self):
-        return self.nome
-
-
 class Palestrante(models.Model):
     nome = models.CharField(maxlength=100)
     email = models.CharField(maxlength=100)
 
-    telefone_residencial = models.CharField(maxlength=11, blank=True)
-    telefone_celular = models.CharField(maxlength=11, blank=True)
-    telefone_comercial = models.CharField(maxlength=11, blank=True)
+    telefone = models.CharField(maxlength=11, blank=True)
+    celular = models.CharField(maxlength=11, blank=True)
 
     rua = models.CharField(maxlength=100)
     numero = models.CharField(maxlength=10)
@@ -79,15 +64,14 @@ class Palestrante(models.Model):
     uf = models.CharField(maxlength=3)
 
     minicurriculo = models.TextField('Mini currículo')
-    area_interesse = models.ManyToManyField(AreaDeInteresse)
+    curriculo = models.TextField('Currículo')
 
     usuario = models.ForeignKey(User)
 
     class Admin:
         fields = (
             (None, {'fields': ('nome', 'email', 'minicurriculo', 'usuario')}),
-            ('Telefones', {'fields': ('telefone_residencial',
-                'telefone_celular', 'telefone_comercial')}),
+            ('Telefones', {'fields': ('telefone', 'celular')}),
             ('Endereço', {'fields': ('rua', 'numero',
                 'bairro', 'cidade', 'uf')}),
             (None, {'fields': ('area_interesse',)}),
@@ -107,45 +91,65 @@ class Participante(models.Model):
         return self.nome
 
 
-class CategoriaPalestra(models.Model):
+class CategoriaTrabalho(models.Model):
+    nome = models.CharField(maxlength=100)
+
+    class Admin:
+        pass
+
+    class Meta:
+        verbose_name = 'Categoria de trabalho'
+        verbose_name_plural = 'Categorias de trabalhos'
+
+    def __str__(self):
+        return self.nome
+
+
+class TipoTrabalho(models.Model):
     nome = models.CharField(maxlength=100)
 
     class Admin:
         pass
 
     class Meta:
-        verbose_name = 'Categoria de palestra'
-        verbose_name_plural = 'Categorias de palestra'
+        verbose_name = 'Tipo de trabalho'
+        verbose_name_plural = 'Tipos de trabalho'
 
     def __str__(self):
         return self.nome
 
 
-class Palestra(models.Model):
+class Trabalho(models.Model):
     titulo = models.CharField(maxlength=100)
-    tema = models.CharField(maxlength=100)
     evento = models.ForeignKey(Evento)
-    categoria = models.ForeignKey(CategoriaPalestra)
+    categoria = models.ForeignKey(CategoriaTrabalho)
     palestrante = models.ManyToManyField(Palestrante)
     descricao_curta = models.TextField()
     descricao_longa = models.TextField()
+    recursos = models.TextField()
 
     class Admin:
         fields = (
-            (None, {'fields': ('titulo', 'tema', 'evento', 'categoria',
-                'palestrante', 'descricao_curta', 'descricao_longa')}),
+            (None, {'fields': ('titulo', 'evento', 'categoria',
+                'palestrante', 'descricao_curta', 'descricao_longa',
+                'recursos')}),
         )
 
-
     def __str__(self):
         return self.titulo
 
 
-class MiniCurso(models.Model):
-    titulo = models.CharField(maxlength=100)
+class Avaliacao(models.Model):
+    avaliador = models.ManyToManyField(User)
+    comentario = models.TextField()
+    trabalho = models.ForeignKey(Trabalho)
 
     class Admin:
         pass
 
+    class Meta:
+        verbose_name = 'Avaliação'
+        verbose_name_plural = 'Avaliações'
+
     def __str__(self):
-        return self.titulo
+        return self.nome
index f317a0a..7543de1 100644 (file)
--- a/forms.py
+++ b/forms.py
@@ -20,49 +20,53 @@ Boston, MA 02111-1307, USA.
 from django import newforms as forms
 from django.newforms.widgets import Textarea, PasswordInput
 from eventmanager.eventos.models import \
-        AreaDeInteresse, CategoriaPalestra, Palestrante, STATE_CHOICES
+        TipoTrabalho, CategoriaTrabalho, Palestrante, STATE_CHOICES
 
 MKCHOICES = lambda K:[(x.id, str(x)) for x in K.objects.all()]
 
-class InscreverPalestra(forms.Form):
+class SubmeterTrabalho(forms.Form):
     def __init__(self, *args, **kwargs):
-        super(InscreverPalestra, self).__init__(*args, **kwargs)
+        super(SubmeterTrabalho, self).__init__(*args, **kwargs)
 
-        newchoices = MKCHOICES(CategoriaPalestra)
+        newchoices = MKCHOICES(CategoriaTrabalho)
         self.fields['categoria'].choices = newchoices
 
+        newchoices = MKCHOICES(TipoTrabalho)
+        self.fields['tipo'].choices = newchoices
+
         newchoices = MKCHOICES(Palestrante)
         self.fields['outros_palestrantes'].choices = newchoices
 
-    titulo = forms.CharField(max_length=100)
-    tema = forms.CharField(max_length=100)
+    titulo = forms.CharField(max_length=100, label='Título do trabalho')
+    tipo = forms.ChoiceField()
     categoria = forms.ChoiceField()
     descricao_curta = forms.CharField(widget=Textarea(),
-        label='Descrição curta')
+        label='Descrição curta', max_length=250,
+        help_text='Esta descrição será utilizada para exibição no '
+                  'material de divulgação (máximo 250 caracteres).')
     descricao_longa = forms.CharField(widget=Textarea(),
-        label='Descrição longa')
-
+        max_length=1500, label='Descrição longa',
+        help_text='Esta descrição será utilizada para avaliação do seu '
+                  'trabalho. Insira também referências '
+                  '(máximo 1500 caracteres).')
+    recursos = forms.CharField(widget=Textarea(), max_length=300, required=0,
+        help_text='Liste os recursos que seu trabalho irá necessitar, '
+                  'ex.: Computadores, softwares, etc.')
     outros_palestrantes = forms.MultipleChoiceField(required=0)
 
 
 class CadastroPalestrante(forms.Form):
-    def __init__(self, *args, **kwargs):
-        super(CadastroPalestrante, self).__init__(*args, **kwargs)
-
-        newchoices = MKCHOICES(AreaDeInteresse)
-        self.fields['area_interesse'].choices = newchoices
-
     nome_completo = forms.CharField(max_length=100)
     nome_usuario = forms.CharField(max_length=100)
     senha = forms.CharField(max_length=100, widget=PasswordInput())
     email = forms.CharField(max_length=100)
 
-    telefone_comercial = forms.CharField(max_length=11, required=False)
-    telefone_residencial = forms.CharField(max_length=11, required=False)
-    telefone_celular = forms.CharField(max_length=11, required=False)
+    telefone = forms.CharField(max_length=11, required=False)
+    celular = forms.CharField(max_length=11, required=False)
 
     instituicao = forms.CharField(max_length=100, label='Instituição')
     minicurriculo = forms.CharField(widget=Textarea(), label='Mini Currículo')
+    curriculo = forms.CharField(widget=Textarea(), label='Currículo')
 
     rua = forms.CharField(max_length=100)
     numero = forms.CharField(max_length=10, label='Número')
@@ -70,9 +74,6 @@ class CadastroPalestrante(forms.Form):
     cidade = forms.CharField(max_length=100)
     uf = forms.ChoiceField(choices=STATE_CHOICES)
 
-    area_interesse = forms.MultipleChoiceField(label='Áreas de Interesse',
-                required=0)
-
 
 class Inscricao(forms.Form):
     nome_completo = forms.CharField(max_length=100)
index d53f90c..b0814d8 100644 (file)
@@ -17,9 +17,8 @@
                 <div id="menu-palestrante">
                     <h3>Menu do palestrante</h3>
                     <ul>
-                        <li><a href="/meus_trabalhos">Meus trabalhos inscritos</a></li>
-                        <li><a href="/inscrever_palestra">Inscreva uma palestra</a></li>
-                        <li><a href="/inscrever_minicurso">Inscreva um minicurso</a></li>
+                        <li><a href="/submeter_trabalho">Submeter Trabalho</a></li>
+                        <li><a href="/meus_trabalhos">Trabalhos inscritos</a></li>
                         <li><a href="/logout">Sair ({{ user }})</a></li>
                     </ul>
                 </div>
index 3acdc8b..0842afc 100644 (file)
--- a/views.py
+++ b/views.py
@@ -59,7 +59,7 @@ def index(request):
 
 
 @enable_login_form
-def cadastro(request):
+def cadastro_palestrante(request):
     c = {}
     if request.POST:
         # django's newforms lib requires a new instance of a form to be bounded
@@ -70,9 +70,7 @@ def cadastro(request):
             badattr = form.errors
             wrong = False
 
-            if not cd['telefone_comercial'] and \
-               not cd['telefone_residencial'] and \
-               not cd['telefone_celular']:
+            if not cd['telefone'] and not cd['celular']:
                 badattr['telefone_comercial'] = ['Algum número de telefone '
                                                  'precisa ser informado']
                 wrong = True
@@ -98,9 +96,8 @@ def cadastro(request):
 
                 p.nome = cd['nome_completo']
                 p.email = cd['email']
-                p.telefone_comercial = cd['telefone_comercial']
-                p.telefone_residencial = cd['telefone_residencial']
-                p.telefone_celular = cd['telefone_celular']
+                p.telefone = cd['telefone']
+                p.celular = cd['celular']
                 p.rua = cd['rua']
                 p.numero = cd['numero']
                 p.bairro = cd['bairro']
@@ -139,18 +136,19 @@ def inscricao(request):
 
 @login_required
 @user_passes_test(lambda u:u.palestrante_set.count() == 1, login_url='/')
-def inscrever_palestra(request):
+def submeter_trabalho(request):
     c = {}
     if request.POST:
-        form = InscreverPalestra(request.POST)
+        form = SubmeterTrabalho(request.POST)
         if form.is_valid():
             cd = form.cleaned_data
-            p = Palestra()
+            p = Trabalho()
             p.titulo = cd['titulo']
-            p.tema = cd['tema']
-            p.categoria = CategoriaPalestra.objects.get(pk=cd['categoria'])
+            p.tipo = TipoTrabalho.objects.get(pk=cd['tipo'])
+            p.categoria = CategoriaTrabalho.objects.get(pk=cd['categoria'])
             p.descricao_curta = cd['descricao_curta']
             p.descricao_longa = cd['descricao_longa']
+            p.recursos = cd['recursos']
             p.evento = Evento.objects.get(pk=1) # let the hammer play arround!
             p.save()
 
@@ -161,7 +159,7 @@ def inscrever_palestra(request):
                 p.palestrante.add(up)
             c.update({'ok': 1})
     else:
-        form = InscreverPalestra()
+        form = SubmeterTrabalho()
     c.update({'form': form})
     return build_response(request, 'inscrever_palestra.html', c)
 
@@ -176,9 +174,8 @@ def meus_trabalhos(request):
         c = {'palestrante': 0}
         return build_response(request, 'meus_trabalhos.html', c)
 
-    palestras = Palestra.objects.filter(palestrante=p)
-    minicursos = MiniCurso.objects.filter()
-    c = {'palestras': palestras, 'minicursos': minicursos, 'palestrante': 1}
+    t = Trabalho.objects.filter(palestrante=p)
+    c = {'trabalhos': t, 'palestrante': 1}
     return build_response(request, 'meus_trabalhos.html', c)