Ejemplo n.º 1
0
class SaapAuditoriaModelMixin(SaapModelMixin):

    owner = models.ForeignKey(get_settings_auth_user_model(),
                              verbose_name=_('owner'),
                              related_name='+',
                              on_delete=PROTECT)
    modifier = models.ForeignKey(get_settings_auth_user_model(),
                                 verbose_name=_('modifier'),
                                 related_name='+',
                                 on_delete=PROTECT)

    class Meta:
        abstract = True
Ejemplo n.º 2
0
class OperadorAreaTrabalho(SaapAuditoriaModelMixin):

    user = models.ForeignKey(get_settings_auth_user_model(),
                             verbose_name=_('Operador da Área de Trabalho'),
                             related_name='operadorareatrabalho_set',
                             on_delete=CASCADE)

    areatrabalho = models.ForeignKey(AreaTrabalho,
                                     related_name='operadorareatrabalho_set',
                                     verbose_name=_('Área de Trabalho'),
                                     on_delete=CASCADE)

    grupos_associados = models.ManyToManyField(
        Group,
        verbose_name=_('Grupos Associados'),
        related_name='operadorareatrabalho_set')

    @property
    def user_name(self):
        return '%s - %s' % (self.user.get_display_name(), self.user.email)

    class Meta:
        verbose_name = _('Operador')
        verbose_name_plural = _('Operadores')

    def __str__(self):
        return self.user.get_display_name()
Ejemplo n.º 3
0
class AreaTrabalho(SaapAuditoriaModelMixin):

    nome = models.CharField(max_length=100,
                            blank=True,
                            default='',
                            verbose_name=_('Nome'))

    descricao = models.CharField(default='',
                                 max_length=254,
                                 verbose_name=_('Descrição'))

    parlamentar = models.ForeignKey(Parlamentar,
                                    verbose_name=_('Parlamentar'),
                                    related_name='areatrabalho_set',
                                    blank=True,
                                    null=True,
                                    on_delete=CASCADE)

    operadores = models.ManyToManyField(get_settings_auth_user_model(),
                                        through='OperadorAreaTrabalho',
                                        through_fields=('areatrabalho',
                                                        'user'),
                                        symmetrical=False,
                                        related_name='areatrabalho_set')

    class Meta:
        verbose_name = _('Área de Trabalho')
        verbose_name_plural = _('Áreas de Trabalho')

    def __str__(self):
        return self.nome
Ejemplo n.º 4
0
Archivo: models.py Proyecto: lms91/saap
class Contato(SaapSearchMixin, SaapAuditoriaModelMixin):

    nome = models.CharField(max_length=100, verbose_name=_('Nome'))

    nome_social = models.CharField(blank=True,
                                   default='',
                                   max_length=100,
                                   verbose_name=_('Nome social'))

    apelido = models.CharField(blank=True,
                               default='',
                               max_length=100,
                               verbose_name=_('Apelido'))

    data_nascimento = models.DateField(
        blank=True,
        null=True,
        verbose_name=_('Data de nascimento'),
    )

    sexo = models.CharField(max_length=1,
                            blank=False,
                            verbose_name=_('Sexo biológico'),
                            choices=SEXO_CHOICE)

    identidade_genero = models.CharField(blank=True,
                                         default='',
                                         max_length=100,
                                         verbose_name=_('Gênero'))

    tem_filhos = models.NullBooleanField(choices=NONE_YES_NO_CHOICES,
                                         default=None,
                                         verbose_name=_('Tem filhos?'))

    quantos_filhos = models.PositiveSmallIntegerField(
        default=0, blank=True, verbose_name=_('Quantos filhos?'))

    estado_civil = models.ForeignKey(EstadoCivil,
                                     related_name='contato_set',
                                     blank=True,
                                     null=True,
                                     on_delete=SET_NULL,
                                     verbose_name=_('Estado civil'))

    nivel_instrucao = models.ForeignKey(NivelInstrucao,
                                        related_name='contato_set',
                                        blank=True,
                                        null=True,
                                        on_delete=SET_NULL,
                                        verbose_name=_('Nível de instrução'))

    estado = models.ForeignKey(Estado,
                               blank=True,
                               null=True,
                               default=21,
                               related_name='contato_set',
                               verbose_name=_('Estado de nascimento'))

    naturalidade = ChainedForeignKey(Municipio,
                                     chained_field="estado",
                                     chained_model_field="estado",
                                     null=True,
                                     blank=True,
                                     show_all=False,
                                     auto_choose=True,
                                     sort=True,
                                     verbose_name=_('Cidade de nascimento'))

    nome_pai = models.CharField(max_length=100,
                                blank=True,
                                verbose_name=_('Nome do pai'))

    nome_mae = models.CharField(max_length=100,
                                blank=True,
                                verbose_name=_('Nome da mãe'))

    numero_sus = models.CharField(max_length=20,
                                  blank=True,
                                  default='',
                                  verbose_name=_('Número do SUS'))

    cpf = models.CharField(max_length=14,
                           blank=True,
                           verbose_name=_('CPF'),
                           validators=[validate_CPF])

    cnpj = models.CharField(max_length=18,
                            blank=True,
                            verbose_name=_('CNPJ'),
                            validators=[validate_CNPJ])

    ie = models.CharField(max_length=15,
                          blank=True,
                          verbose_name=_('Inscrição estadual'))

    titulo_eleitor = models.CharField(max_length=14,
                                      blank=True,
                                      verbose_name=_('Título de eleitor'))

    rg = models.CharField(max_length=10, blank=True, verbose_name=_('RG'))

    rg_orgao_expedidor = models.CharField(max_length=20,
                                          blank=True,
                                          verbose_name=_('Órgão expedidor'))

    rg_data_expedicao = models.DateField(blank=True,
                                         null=True,
                                         verbose_name=_('Data de expedição'))

    ativo = models.BooleanField(choices=YES_NO_CHOICES,
                                default=True,
                                verbose_name=_('Ativo?'))

    workspace = models.ForeignKey(AreaTrabalho,
                                  verbose_name=_('Área de trabalho'),
                                  related_name='contato_set',
                                  blank=True,
                                  null=True,
                                  on_delete=PROTECT)

    perfil_user = models.ForeignKey(get_settings_auth_user_model(),
                                    verbose_name=_('Perfil do usuário'),
                                    related_name='contato_set',
                                    blank=True,
                                    null=True,
                                    on_delete=CASCADE)

    profissao = models.CharField(max_length=254,
                                 blank=True,
                                 verbose_name=_('Profissão'))

    tipo_autoridade = models.ForeignKey(
        TipoAutoridade,
        verbose_name=TipoAutoridade._meta.verbose_name,
        related_name='contato_set',
        blank=True,
        null=True,
        on_delete=SET_NULL)

    cargo = models.CharField(max_length=254,
                             blank=True,
                             default='',
                             verbose_name=_('Cargo/Função'))

    pronome_tratamento = models.ForeignKey(
        PronomeTratamento,
        verbose_name=PronomeTratamento._meta.verbose_name,
        related_name='contato_set',
        blank=True,
        null=True,
        on_delete=SET_NULL,
        help_text=_('O pronome de tratamento é opcional, mas será \
        obrigatório caso seja selecionado um tipo de autoridade.'))

    observacoes = models.TextField(
        blank=True,
        default='',
        verbose_name=_('Outras observações sobre o contato'))

    @cached_property
    def fields_search(self):
        return ['nome', 'nome_social', 'apelido']

    class Meta:
        verbose_name = _('Contato')
        verbose_name_plural = _('Contatos')
        ordering = ['nome']
        permissions = (
            ('print_impressoenderecamento',
             _('Pode imprimir impressos de endereçamento')),
            ('print_rel_contato_agrupado_por_processo',
             _('Pode imprimir relatório de contatos agrupados por processo')),
            ('print_rel_contato_agrupado_por_grupo',
             _('Pode imprimir relatório de contatos agrupados por grupo')),
        )
        unique_together = (('nome', 'data_nascimento', 'workspace',
                            'perfil_user'), )

    def __str__(self):
        return self.nome