From: Lincoln de Sousa Date: Tue, 14 Aug 2007 18:38:56 +0000 (-0300) Subject: mudança brusca na modelagem do banco, principalmente no que se remete a gerenciamento... X-Git-Url: http://git.cascardo.info/?p=cascardo%2Feventmanager.git;a=commitdiff_plain;h=f9e9a9887e50844d6cf999a7232cb999583782f1 mudança brusca na modelagem do banco, principalmente no que se remete a gerenciamento de trabalhos, o tipo minicurso foi unificado ao tipo palestra, gerando o tipo trabalho, o tipo area de interesse também foi removido. Foi criada uma entidade chamada avaliacao, que conterá avaliações de cada trabalho. E outras várias modificações para compatibilizar o que já estava pronto com esta nova mudança. --- diff --git a/__init__.py b/__init__.py index fe58f80..fc9c155 100644 --- a/__init__.py +++ b/__init__.py @@ -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() diff --git a/eventos/models.py b/eventos/models.py index 2a73e6e..d28bb95 100644 --- a/eventos/models.py +++ b/eventos/models.py @@ -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 diff --git a/forms.py b/forms.py index f317a0a..7543de1 100644 --- 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) diff --git a/templates/base.html b/templates/base.html index d53f90c..b0814d8 100644 --- a/templates/base.html +++ b/templates/base.html @@ -17,9 +17,8 @@ diff --git a/views.py b/views.py index 3acdc8b..0842afc 100644 --- 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)