diff --git a/sigi/apps/casas/models.py b/sigi/apps/casas/models.py index eaf55b0..9b5b58b 100644 --- a/sigi/apps/casas/models.py +++ b/sigi/apps/casas/models.py @@ -17,17 +17,17 @@ class CasaLegislativa(models.Model): logradouro = models.CharField(max_length=100) bairro = models.CharField(max_length=40) - cidade = models.ForeignKey('localidades.Municipio') + cidade = models.ForeignKey('contatos.Municipio') cep = models.CharField( max_length=9, help_text="Formato: XXXXX-XXX." ) email = models.EmailField('e-mail', blank=True) pagina_web = models.URLField('página web', blank=True) - telefones = generic.GenericRelation('telefones.Telefone') + telefones = generic.GenericRelation('contatos.Telefone') foto = models.ImageField( - upload_to='imagens/fotos/casas', + upload_to='imagens/casas', width_field='foto_largura', height_field='foto_altura', blank=True @@ -36,38 +36,15 @@ class CasaLegislativa(models.Model): foto_altura = models.SmallIntegerField(editable=False, null=True) historico = models.TextField('histórico', blank=True) + contatos = generic.GenericRelation('contatos.Contato') + class Meta: ordering = ('nome',) verbose_name = 'Casa Legislativa' verbose_name_plural = 'Casas Legislativas' class Admin: - list_display = ('nome', 'email', 'pagina_web', 'telefones') - list_display_links = ('nome',) - search_fields = ('nome', 'sigla', 'tipo', 'logradouro', 'bairro', - 'cidade', 'cep', 'email', 'pagina_web', 'telefones') - - def __unicode__(self): - return self.nome - -class ContatoInterlegis(models.Model): - nome = models.CharField('nome completo', max_length=60) - casa_legislativa = models.ForeignKey( - CasaLegislativa, - verbose_name='Casa Legislativa' - ) - nota = models.CharField(max_length=70, blank=True) - - email = models.EmailField('e-mail', blank=True) - telefones = generic.GenericRelation('telefones.Telefone') - - class Meta: - ordering = ('nome',) - verbose_name = 'contato Interlegis' - verbose_name_plural = 'contatos Interlegis' - - class Admin: - list_display = ('nome', 'nota', 'casa_legislativa') + list_display = ('nome', 'email', 'pagina_web') list_display_links = ('nome',) def __unicode__(self): diff --git a/sigi/apps/localidades/__init__.py b/sigi/apps/contatos/__init__.py similarity index 100% rename from sigi/apps/localidades/__init__.py rename to sigi/apps/contatos/__init__.py diff --git a/sigi/apps/localidades/models.py b/sigi/apps/contatos/models.py similarity index 55% rename from sigi/apps/localidades/models.py rename to sigi/apps/contatos/models.py index 04034e1..f5e6859 100644 --- a/sigi/apps/localidades/models.py +++ b/sigi/apps/contatos/models.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- from django.db import models +from django.contrib.contenttypes.models import ContentType +from django.contrib.contenttypes import generic class UnidadeFederativa(models.Model): REGIAO_CHOICES = ( @@ -81,3 +83,72 @@ class Municipio(models.Model): def get_google_maps_url(self): return "http://maps.google.com.br/maps/mm?ie=UTF8&hl=pt-BR&t=h&ll=%s,%s&spn=1.61886,1.812744&z=9&source=embed" % \ (self.latitude, self.longitude) + +class Telefone(models.Model): + TELEFONE_CHOICES = ( + ('F', 'Fixo'), + ('M', 'Móvel'), + ('X', 'Fax'), + ) + codigo_ddd = models.CharField( + 'código DDD', + max_length=2, + help_text='Exemplo: 31.' + ) + numero = models.CharField( + 'número', + max_length=9, + help_text='Formato: XXXX-XXXX.' + ) + tipo = models.CharField( + max_length=1, + choices=TELEFONE_CHOICES, + radio_admin=True + ) + nota = models.CharField(max_length=70, blank=True) + content_type = models.ForeignKey(ContentType) + object_id = models.PositiveIntegerField() + content_object = generic.GenericForeignKey('content_type', 'object_id') + + class Meta: + ordering = ('codigo_ddd', 'numero') + unique_together = ('codigo_ddd', 'numero', 'tipo') + + class Admin: + list_display = ('codigo_ddd', 'numero', 'tipo', 'nota') + list_display_links = ('codigo_ddd', 'numero') + list_filter = ('codigo_ddd',) + search_fields = ('codigo_ddd', 'numero', 'tipo', 'nota') + + def __unicode__(self): + return "(%s) %s" % (self.codigo_ddd, self.numero) + +class Contato(models.Model): + nome = models.CharField('nome completo', max_length=60) + nota = models.CharField(max_length=70, blank=True) + + email = models.EmailField('e-mail', blank=True) + telefones = generic.GenericRelation(Telefone) + + municipio = models.ForeignKey( + Municipio, + verbose_name='município', + blank=True, + null=True, + ) + + content_type = models.ForeignKey(ContentType) + object_id = models.PositiveIntegerField() + content_object = generic.GenericForeignKey('content_type', 'object_id') + + class Meta: + ordering = ('nome',) + verbose_name = 'contato Interlegis' + verbose_name_plural = 'contatos Interlegis' + + class Admin: + list_display = ('nome', 'nota', 'casa_legislativa') + list_display_links = ('nome',) + + def __unicode__(self): + return self.nome diff --git a/sigi/apps/inventario/models.py b/sigi/apps/inventario/models.py index d15893a..8ad1322 100644 --- a/sigi/apps/inventario/models.py +++ b/sigi/apps/inventario/models.py @@ -6,7 +6,8 @@ class Fornecedor(models.Model): nome = models.CharField(max_length=40) email = models.EmailField('e-mail', blank=True) pagina_web = models.URLField('página web', blank=True) - telefones = generic.GenericRelation('telefones.Telefone') + telefones = generic.GenericRelation('contatos.Telefone') + contatos = generic.GenericRelation('contatos.Contato') class Meta: ordering = ('nome',) diff --git a/sigi/apps/parlamentares/models.py b/sigi/apps/parlamentares/models.py index 7246e00..3b60592 100644 --- a/sigi/apps/parlamentares/models.py +++ b/sigi/apps/parlamentares/models.py @@ -43,13 +43,13 @@ class Parlamentar(models.Model): ) logradouro = models.CharField(max_length=100) bairro = models.CharField(max_length=40) - cidade = models.ForeignKey('localidades.Municipio') + cidade = models.ForeignKey('contatos.Municipio') cep = models.CharField( 'CEP', max_length=9, help_text="Formato: XXXXX-XXX." ) - telefones = generic.GenericRelation('telefones.Telefone') + telefones = generic.GenericRelation('contatos.Telefone') pagina_web = models.URLField('página web') email = models.EmailField('e-mail') diff --git a/sigi/apps/telefones/__init__.py b/sigi/apps/telefones/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/sigi/apps/telefones/models.py b/sigi/apps/telefones/models.py deleted file mode 100644 index c566914..0000000 --- a/sigi/apps/telefones/models.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -from django.db import models -from django.contrib.contenttypes.models import ContentType -from django.contrib.contenttypes import generic - -class Telefone(models.Model): - TELEFONE_CHOICES = ( - ('F', 'Fixo'), - ('M', 'Móvel'), - ('X', 'Fax'), - ) - codigo_ddd = models.CharField( - 'código DDD', - max_length=2, - help_text='Exemplo: 31.' - ) - numero = models.CharField( - 'número', - max_length=9, - help_text='Formato: XXXX-XXXX.' - ) - tipo = models.CharField( - max_length=1, - choices=TELEFONE_CHOICES, - radio_admin=True - ) - nota = models.CharField(max_length=70, blank=True) - content_type = models.ForeignKey(ContentType) - object_id = models.PositiveIntegerField() - content_object = generic.GenericForeignKey('content_type', 'object_id') - - class Meta: - ordering = ('codigo_ddd', 'numero') - unique_together = ('codigo_ddd', 'numero', 'tipo') - - class Admin: - list_display = ('codigo_ddd', 'numero', 'tipo', 'nota') - list_display_links = ('codigo_ddd', 'numero') - list_filter = ('codigo_ddd',) - search_fields = ('codigo_ddd', 'numero', 'tipo', 'nota') - - def __unicode__(self): - return "(%s) %s" % (self.codigo_ddd, self.numero) diff --git a/sigi/settings.py b/sigi/settings.py index 6db90aa..74d990f 100644 --- a/sigi/settings.py +++ b/sigi/settings.py @@ -80,10 +80,9 @@ INSTALLED_APPS = ( 'django.contrib.admin', 'extensions', # http://django-command-extensions.googlecode.com/ 'sigi.apps.casas', + 'sigi.apps.contatos', 'sigi.apps.convenios', 'sigi.apps.inventario', - 'sigi.apps.localidades', 'sigi.apps.mesas', 'sigi.apps.parlamentares', - 'sigi.apps.telefones', )