1 # -*- coding: utf-8; -*-
3 Copyright (C) 2007 Lincoln de Sousa <lincoln@archlinux-br.org>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License as
7 published by the Free Software Foundation; either version 2 of the
8 License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public
16 License along with this program; if not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
20 from django.db import models
21 from django.contrib.localflavor.br.br_states import STATE_CHOICES as _states
22 from django.contrib.auth.models import User
25 STATE_CHOICES = [(x, unicode(y).encode('utf8')) for x, y in _states]
28 class Evento(models.Model):
29 nome = models.CharField(maxlength=100)
30 data_inicio = models.DateTimeField()
31 data_final = models.DateTimeField()
33 nome_local = models.CharField('Nome do local', maxlength=100)
34 nome_contato = models.CharField('Nome do contato', maxlength=100)
35 telefone = models.CharField(maxlength=100)
36 cidade = models.CharField(maxlength=100)
37 uf = models.CharField(maxlength=2, choices=STATE_CHOICES)
38 rua = models.CharField(maxlength=100)
39 numero = models.CharField('Número', maxlength=10)
40 info_adicional = models.TextField()
44 ('Informações do evento', {'fields': ('nome', 'data_inicio', 'data_final')}),
45 ('Informações da sede', {'fields': ('nome_local', 'nome_contato',
46 'cidade', 'uf', 'rua', 'numero','telefone', 'info_adicional')}),
53 class Palestrante(models.Model):
54 nome = models.CharField(maxlength=100)
55 email = models.CharField(maxlength=100)
57 telefone = models.CharField(maxlength=100, blank=True)
58 celular = models.CharField(maxlength=100, blank=True)
60 instituicao = models.CharField(maxlength=250, blank=True)
62 rua = models.CharField(maxlength=100)
63 numero = models.CharField(maxlength=10)
64 bairro = models.CharField(maxlength=100)
65 cidade = models.CharField(maxlength=100)
66 uf = models.CharField(maxlength=3)
68 minicurriculo = models.TextField('Mini currículo')
69 curriculo = models.TextField('Currículo')
71 usuario = models.ForeignKey(User)
75 (None, {'fields': ('nome', 'email', 'instituicao',
76 'minicurriculo', 'curriculo', 'usuario')}),
77 ('Telefones', {'fields': ('telefone', 'celular')}),
78 ('Endereço', {'fields': ('rua', 'numero',
79 'bairro', 'cidade', 'uf')}),
86 class Participante(models.Model):
87 nome = models.CharField(maxlength=100)
88 email = models.CharField(maxlength=100)
89 rg = models.CharField(maxlength=100)
90 home_page = models.CharField(maxlength=100, blank=True)
92 telefone = models.CharField(maxlength=100, blank=True)
93 rua = models.CharField(maxlength=100)
94 numero = models.CharField(maxlength=10)
95 bairro = models.CharField(maxlength=100)
96 cidade = models.CharField(maxlength=100)
97 uf = models.CharField(maxlength=3)
98 cep = models.CharField(maxlength=8)
99 cpf_cnpj = models.CharField(maxlength=20, blank=True)
101 comercial = models.BooleanField(default=False)
102 usuario = models.ForeignKey(User)
103 refbanco = models.IntegerField(editable=False)
112 class Caravana(models.Model):
113 coordenador = models.ForeignKey(Participante)
114 participantes = models.TextField()
120 return str(self.coordenador)
122 def parsed_participantes(self):
124 for i in self.participantes.split('\n'):
126 nome, email = i.rsplit(' ', 1)
127 real_data.append({'nome': nome, 'email': email})
130 class CategoriaTrabalho(models.Model):
131 nome = models.CharField(maxlength=100)
137 verbose_name = 'Categoria de trabalho'
138 verbose_name_plural = 'Categorias de trabalhos'
144 class TipoTrabalho(models.Model):
145 nome = models.CharField(maxlength=100)
151 verbose_name = 'Tipo de trabalho'
152 verbose_name_plural = 'Tipos de trabalho'
158 class Trabalho(models.Model):
159 titulo = models.CharField(maxlength=100)
160 evento = models.ForeignKey(Evento)
161 tipo = models.ForeignKey(TipoTrabalho)
162 categoria = models.ForeignKey(CategoriaTrabalho)
163 palestrante = models.ManyToManyField(Palestrante)
164 descricao_curta = models.TextField()
165 descricao_longa = models.TextField()
166 recursos = models.TextField()
167 aprovado = models.BooleanField()
168 dia = models.DateField()
169 time_start = models.TimeField()
170 time_end = models.TimeField()
174 (None, {'fields': ('titulo', 'evento', 'categoria', 'tipo',
175 'palestrante', 'descricao_curta', 'descricao_longa',
176 'recursos', 'aprovado', 'dia', 'time_start', 'time_end')}),
183 class Avaliacao(models.Model):
184 avaliador = models.ManyToManyField(User)
185 comentario = models.TextField()
186 trabalho = models.ForeignKey(Trabalho)
192 verbose_name = 'Avaliação'
193 verbose_name_plural = 'Avaliações'