mirror of https://github.com/interlegis/sigi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.3 KiB
74 lines
2.3 KiB
# -*- coding: utf-8 -*-
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.contenttypes import generic
|
|
from django.db import models
|
|
from django.db.models.signals import post_save
|
|
from django.utils.translation import ugettext as _
|
|
|
|
class Servico(models.Model):
|
|
nome = models.CharField(_(u'Setor'), max_length=250, null=True)
|
|
sigla = models.CharField(max_length=10, null=True)
|
|
subordinado = models.ForeignKey(
|
|
'self',
|
|
on_delete=models.SET_NULL,
|
|
null=True,
|
|
blank=True,
|
|
verbose_name=_(u"subordinado a")
|
|
)
|
|
responsavel = models.ForeignKey(
|
|
'servidores.Servidor',
|
|
on_delete=models.SET_NULL,
|
|
related_name='chefe',
|
|
null=True,
|
|
blank=True
|
|
)
|
|
|
|
class Meta:
|
|
ordering = ('nome',)
|
|
verbose_name = _(u'serviço')
|
|
verbose_name_plural = _(u'serviços')
|
|
|
|
def __unicode__(self):
|
|
return u"{sigla} - {nome}".format(sigla=self.sigla, nome=self.nome)
|
|
|
|
class Servidor(models.Model):
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=True)
|
|
nome_completo = models.CharField(max_length=128)
|
|
apelido = models.CharField(max_length=50, blank=True)
|
|
foto = models.ImageField(
|
|
upload_to='fotos/servidores',
|
|
width_field='foto_largura',
|
|
height_field='foto_altura',
|
|
blank=True
|
|
)
|
|
foto_largura = models.SmallIntegerField(editable=False, null=True)
|
|
foto_altura = models.SmallIntegerField(editable=False, null=True)
|
|
servico = models.ForeignKey(
|
|
Servico,
|
|
on_delete=models.SET_NULL,
|
|
blank=True,
|
|
null=True
|
|
)
|
|
|
|
class Meta:
|
|
ordering = ('nome_completo',)
|
|
verbose_name_plural = 'servidores'
|
|
|
|
def __unicode__(self):
|
|
return self.nome_completo
|
|
|
|
# Soluçao alternativa para extender o usuário do django
|
|
# Acessa do servidor de um objeto user criando um profile
|
|
# baseado nos dados do LDAP
|
|
User.servidor = property(lambda user: Servidor.objects.get(user=user))
|
|
|
|
# Sinal para ao criar um usuário criar um servidor
|
|
# baseado no nome contino no LDAP
|
|
def create_user_profile(sender, instance, created, **kwargs):
|
|
if created:
|
|
Servidor.objects.create(
|
|
user=instance,
|
|
nome_completo="%s %s" % (instance.first_name, instance.last_name)
|
|
)
|
|
|
|
post_save.connect(create_user_profile, sender=User)
|