Ticket #19845: models.2.py

File models.2.py, 10.3 KB (added by eltonplima@…, 11 years ago)

I've sent the wrong file.

Line 
1# -*- coding: utf-8 -*-
2from __future__ import unicode_literals
3
4from django.db import models
5
6from ci.consts import VERBOSE_GRUPO_PLURAL
7from ci.fields import CharTitleField
8from ci.fields import CharLowerCaseField
9from ci.models import Base
10
11from ..consts import VERBOSE_OPERADORA_TELEFONIA
12from ..endereco.consts import VERBOSE_LOGRADOURO
13from ..endereco.models import Logradouro
14from ..models import Email
15from ..models import Telefone
16from ..tipo.consts import VERBOSE_TIPO_ENDERECO
17from ..tipo.consts import VERBOSE_TIPO_EMAIL
18from ..tipo.consts import VERBOSE_TIPO_PAGINAWEB
19from ..tipo.consts import VERBOSE_TIPO_TELEFONE
20from ..tipo.models import TipoEmail
21from ..tipo.models import TipoEndereco
22from ..tipo.models import TipoPaginaWeb
23from ..tipo.models import TipoTelefone
24from ..models import OperadoraTelefonia
25
26from .consts import VERBOSE_CARGO
27from .consts import VERBOSE_CARGO_PLURAL
28from .consts import VERBOSE_EMAIL_PESSOA
29from .consts import VERBOSE_EMAIL_PESSOA_PLURAL
30from .consts import VERBOSE_ENDERECO_PESSOA
31from .consts import VERBOSE_ENDERECO_PESSOA_PLURAL
32from .consts import VERBOSE_ENDERECO_ELETRONICO
33from .consts import VERBOSE_NOME
34from .consts import VERBOSE_PAGINA_WEB_PESSOA
35from .consts import VERBOSE_PAGINA_WEB_PESSOA_PLURAL
36from .consts import VERBOSE_PESSOA_BASE
37from .consts import VERBOSE_PESSOA_BASE_PLURAL
38from .consts import VERBOSE_RESPONSAVEL_FINANCEIRO
39from .consts import VERBOSE_RESPONSAVEL_FINANCEIRO_PLURAL
40from .consts import VERBOSE_TELEFONE_PESSOA
41from .consts import VERBOSE_TELEFONE_PESSOA_PLURAL
42from .consts import VERBOSE_USUARIO
43from .consts import VERBOSE_USUARIO_PLURAL
44from .consts import VERBOSE_USUARIO_TERMINAL_SERVICE
45from .consts import VERBOSE_USUARIO_TERMINAL_SERVICE_PLURAL
46from .consts import VERBOSE_USUARIO_TERMINAL_SERVICE_ATIVO
47from .consts import VERBOSE_PESSOA_BASE_TIPO_PESSOA
48from .consts import VERBOSE_NUMERO
49from .consts import VERBOSE_COMPLEMENTO
50from .consts import VERBOSE_EMAIL_PESSOA_PADRAO
51from .consts import VERBOSE_ENDERECO_PESSOA_PADRAO
52from .consts import VERBOSE_TELEFONE_PESSOA_PADRAO
53from django.contrib.auth.models import AbstractBaseUser
54
55
56class PessoaBase(Base):
57 nome = CharTitleField(db_index = True,
58 max_length = 255,
59 verbose_name = VERBOSE_NOME,)
60 observacao = models.TextField(null=True, blank=True)
61
62 class Meta:
63 db_table = 'cadastro_pessoa'
64 ordering = ['nome',]
65 verbose_name = VERBOSE_PESSOA_BASE
66 verbose_name_plural = VERBOSE_PESSOA_BASE_PLURAL
67
68 def get_tipo_pessoa(self):
69 try:
70 retorno = self.pessoafisica.cpf
71 except:
72 try:
73 retorno = self.pessoajuridica.cnpj
74 except:
75 retorno = ''
76 return '%s (%s)' % (self.nome,
77 retorno,)
78 get_tipo_pessoa.short_description = VERBOSE_PESSOA_BASE_TIPO_PESSOA
79
80 def get_endereco_padrao(self):
81 """ Retorna o endereço padrão da pessoa.
82 """
83 endereco = None
84
85 try:
86 endereco = self.enderecopessoa_set.get(padrao=True)
87 except:
88 pass
89
90 return endereco
91 get_endereco_padrao.short_description = VERBOSE_ENDERECO_PESSOA
92
93 def get_municipio(self):
94 return self.get_endereco_padrao().logradouro.bairro.municipio
95
96 def get_estado(self):
97 return self.get_municipio().estado
98
99 def get_telefone_padrao(self):
100 """ Retorna o telefone padrão da pessoa.
101 """
102 telefone = "Nenhum"
103
104 try:
105 telefone = self.telefonepessoa_set.get(padrao=True)
106 except:
107 pass
108
109 return telefone
110 get_telefone_padrao.short_description = VERBOSE_TELEFONE_PESSOA
111
112 def get_email_padrao(self):
113 """ Retorna o email padrão da pessoa.
114 """
115 email = "Nenhum"
116
117 try:
118 email = self.emailpessoa_set.get(padrao=True)
119 except:
120 pass
121
122 return email
123 get_email_padrao.short_description = VERBOSE_EMAIL_PESSOA
124
125 def get_paginaweb_padrao(self):
126 """ Retorna a página web padrão da pessoa.
127 """
128 paginaweb = "Nenhum"
129
130 try:
131 paginaweb = self.paginawebpessoa_set.get(padrao=True)
132 except:
133 pass
134
135 return paginaweb
136 get_paginaweb_padrao.short_description = VERBOSE_PAGINA_WEB_PESSOA
137
138 def __unicode__(self):
139 return self.get_tipo_pessoa()
140
141
142class Cargo(Base):
143 nome = CharTitleField(max_length = 128,
144 unique = True,
145 verbose_name = VERBOSE_CARGO,)
146
147 class Meta:
148 db_table = 'cadastro_pessoa_cargo'
149 ordering = ['nome',]
150 verbose_name = VERBOSE_CARGO
151 verbose_name_plural = VERBOSE_CARGO_PLURAL
152
153 def __unicode__(self):
154 return self.nome
155
156
157class EmailPessoa(Email):
158 tipo_email = models.ForeignKey(TipoEmail,
159 verbose_name = VERBOSE_TIPO_EMAIL,)
160 padrao = models.BooleanField(unique = True,
161 verbose_name = VERBOSE_EMAIL_PESSOA_PADRAO,)
162 pessoa_base = models.ForeignKey(PessoaBase,
163 verbose_name = VERBOSE_PESSOA_BASE,)
164
165 class Meta:
166 db_table = 'cadastro_pessoa_email'
167 ordering = ['tipo_email',]
168 verbose_name = VERBOSE_EMAIL_PESSOA
169 verbose_name_plural = VERBOSE_EMAIL_PESSOA_PLURAL
170
171 def __unicode__(self):
172 return self.endereco
173
174
175class TelefonePessoa(Telefone):
176 tipo_telefone = models.ForeignKey(TipoTelefone,
177 verbose_name = VERBOSE_TIPO_TELEFONE,)
178 operadora_telefonia = models.ForeignKey(OperadoraTelefonia,
179 verbose_name = VERBOSE_OPERADORA_TELEFONIA,)
180 pessoa_base = models.ForeignKey(PessoaBase,
181 verbose_name = VERBOSE_PESSOA_BASE,)
182 padrao = models.BooleanField(unique = True,
183 verbose_name = VERBOSE_TELEFONE_PESSOA_PADRAO,)
184
185 class Meta:
186 db_table = 'cadastro_pessoa_telefone'
187 ordering = ['tipo_telefone',]
188 verbose_name = VERBOSE_TELEFONE_PESSOA
189 verbose_name_plural = VERBOSE_TELEFONE_PESSOA_PLURAL
190
191 def __unicode__(self):
192 return self.numero
193
194
195class EnderecoPessoa(Base):
196 tipo_endereco = models.ForeignKey(TipoEndereco,
197 verbose_name = VERBOSE_TIPO_ENDERECO,)
198 pessoa_base = models.ForeignKey(PessoaBase,
199 verbose_name = VERBOSE_PESSOA_BASE,)
200 numero = models.CharField(default = "S/N",
201 max_length = 64,
202 verbose_name = VERBOSE_NUMERO,)
203 complemento = models.TextField(blank = True,
204 null = True,
205 verbose_name = VERBOSE_COMPLEMENTO,)
206 logradouro = models.ForeignKey(Logradouro,
207 verbose_name = VERBOSE_LOGRADOURO)
208 padrao = models.BooleanField(verbose_name = VERBOSE_ENDERECO_PESSOA_PADRAO)
209
210 class Meta:
211 db_table = 'cadastro_pessoa_endereco'
212 ordering = ['logradouro',]
213 verbose_name = VERBOSE_ENDERECO_PESSOA
214 verbose_name_plural = VERBOSE_ENDERECO_PESSOA_PLURAL
215
216 def __unicode__(self):
217 return self.logradouro.nome
218
219
220class PaginaWEBPessoa(Base):
221 tipo_pagina_web = models.ForeignKey(TipoPaginaWeb,
222 verbose_name = VERBOSE_TIPO_PAGINAWEB,)
223 pessoa_base = models.ForeignKey(PessoaBase,
224 verbose_name = VERBOSE_PESSOA_BASE,)
225 endereco_eletronico = CharLowerCaseField(db_index = True,
226 max_length = 255,
227 verbose_name = VERBOSE_ENDERECO_ELETRONICO,)
228
229 class Meta:
230 db_table = 'cadastro_pessoa_paginaweb'
231 ordering = ['endereco_eletronico',]
232 verbose_name = VERBOSE_PAGINA_WEB_PESSOA
233 verbose_name_plural = VERBOSE_PAGINA_WEB_PESSOA_PLURAL
234
235 def __unicode__(self):
236 return self.endereco_eletronico
237
238
239class Usuario(AbstractBaseUser):
240 """ Víncula uma pessoa como sendo do tipo usuário.
241 """
242 pessoa_base = models.ForeignKey(PessoaBase,
243 unique = True,
244 verbose_name = VERBOSE_PESSOA_BASE,)
245
246 class Meta:
247 db_table = 'cadastro_pessoa_usuario'
248 ordering = ['pessoa_base',]
249 verbose_name = VERBOSE_USUARIO
250 verbose_name_plural = VERBOSE_USUARIO_PLURAL
251
252 def __unicode__(self):
253 return self.pessoa_base.get_tipo_pessoa()
254
255 def get_grupos(self):
256 return ', '.join([grupo.name for grupo in self.groups.all()])
257 get_grupos.short_description=VERBOSE_GRUPO_PLURAL
258
259
260class UsuarioTerminalService(Base):
261 """ Víncula uma pessoa como usuário do terminal service.
262
263 Além de víncular uma pessoa como usuário do serviço de terminal service,
264 ainda pode ser controlado se a mesma está ou não ativa no serviço.
265 """
266 pessoa_base = models.ForeignKey(PessoaBase,
267 unique = True,
268 verbose_name = VERBOSE_USUARIO_TERMINAL_SERVICE,)
269 ativo = models.BooleanField(default = True,
270 verbose_name = VERBOSE_USUARIO_TERMINAL_SERVICE_ATIVO,)
271
272 class Meta:
273 db_table = 'cadastro_pessoa_usuarioterminalservice'
274 ordering = ['pessoa_base',]
275 verbose_name = VERBOSE_USUARIO_TERMINAL_SERVICE
276 verbose_name_plural = VERBOSE_USUARIO_TERMINAL_SERVICE_PLURAL
277
278 def __unicode__(self):
279 return self.pessoa_base.get_tipo_pessoa()
280
281
282class ResponsavelFinanceiro(Base):
283 """ Pessoa responsável por pagar as licenças dos sistemas.
284 """
285 pessoa_base = models.ForeignKey(PessoaBase,
286 unique = True,
287 verbose_name = VERBOSE_RESPONSAVEL_FINANCEIRO,)
288
289 class Meta:
290 db_table = 'cadastro_pessoa_responsavelfinanceiro'
291 ordering = ['pessoa_base',]
292 verbose_name = VERBOSE_RESPONSAVEL_FINANCEIRO
293 verbose_name_plural = VERBOSE_RESPONSAVEL_FINANCEIRO_PLURAL
294
295 def __unicode__(self):
296 return self.pessoa_base.get_tipo_pessoa()
Back to Top