Ejemplo n.º 1
0
class Departamento(models.Model):
    cod_facultad = models.CharField(max_length=2)
    cod_departamento = models.CharField(max_length=2)
    nombre = models.CharField(max_length=120)
    activo = models.BooleanField(default=True)
    facultad = models.ForeignKey(Facultad,
                                 limit_choices_to=Q(tipo='FA'),
                                 blank=True,
                                 null=True,
                                 on_delete=models.SET_NULL)

    fecha_creacion = models.DateField(auto_now_add=True)
    fecha_actualizacion = models.DateField(auto_now=True)
    history = AuditlogHistoryField()

    class Meta:
        unique_together = ('cod_facultad', 'cod_departamento')
        verbose_name_plural = 'Departamentos'

    def __str__(self):
        return '{} - {}'.format(self.cod_facultad, self.cod_departamento)

    def save(self, *args, **kwargs):
        try:
            self.facultad = Facultad.objects.get(
                cod_facultad=self.cod_facultad)
        except ObjectDoesNotExist:
            pass
        return super(Departamento, self).save()
Ejemplo n.º 2
0
class ClassificationAnswer(models.Model):
    """
	Model to store the user's selected answer (True, False) and the selected strength for each \
	ClassificationQuestion in a Classification.

	"""

    STRENGTH_CHOICES = (('PV', 'PATH_VERY_STRONG'), ('PS', 'PATH_STRONG'),
                        ('PM', 'PATH_MODERATE'), (
                            'PP',
                            'PATH_SUPPORTING',
                        ), ('BA', 'BENIGN_STAND_ALONE'),
                        ('BS', 'BENIGN_STRONG'), ('BP', 'BENIGN_SUPPORTING'))

    history = AuditlogHistoryField()

    classification = models.ForeignKey(Classification,
                                       on_delete=models.CASCADE)
    classification_question = models.ForeignKey(ClassificationQuestion,
                                                on_delete=models.CASCADE)
    selected_first = models.BooleanField()
    strength_first = models.CharField(max_length=2, choices=STRENGTH_CHOICES)
    selected_second = models.BooleanField()
    strength_second = models.CharField(max_length=2, choices=STRENGTH_CHOICES)
    comment = models.TextField()

    def __str__(self):
        return f'{self.id}'
Ejemplo n.º 3
0
class Sede(models.Model):
    CAMPUS = 'CU'
    CENTRO_REGIONAL = 'CR'
    EXTENSION = 'EX'
    PROYECTO_ANEXO = 'PA'

    TIPOS = (
        (CAMPUS, 'Campus'),
        (CENTRO_REGIONAL, 'Centro Regional'),
        (EXTENSION, 'Extension'),
        (PROYECTO_ANEXO, 'Proyecto Anexo'),
    )
    objects = SedeManager()

    cod_sede = models.CharField(max_length=2, unique=True)
    nombre = models.CharField(max_length=120, unique=True)
    tipo = models.CharField(max_length=2, choices=TIPOS, default='PA')
    activo = models.BooleanField(default=True)

    fecha_creacion = models.DateField(auto_now_add=True)
    fecha_actualizacion = models.DateField(auto_now=True)
    history = AuditlogHistoryField()

    class Meta:
        verbose_name_plural = 'Sedes'

    def __str__(self):
        return '{} - {}'.format(self.cod_sede, self.nombre)

    def get_absolute_url(self):
        return reverse('ubicacion:sede', kwargs={'cod_sede': self.cod_sede})
Ejemplo n.º 4
0
class Usuario(AbstractUser):
    """
    Se crea la clase Usuario que hereda del modelo User de django, para agregarle mas atributos.
    cedula = numero de cedula del usuario.
    direccion = direccion del usuario.
    """
    cedula = models.PositiveIntegerField(default=0)
    direccion = models.TextField(max_length=50, blank=True, null=False)

    # Configuraciones de usuario
    hora_notificaciones = models.TimeField(null=True, default="00:00:00")
    formato = (('htm', 'HTML'), ('txt', 'Texto Plano'))
    formato_notificaciones = models.CharField(max_length=3,
                                              choices=formato,
                                              default='htm',
                                              help_text='Formato')
    noti_creacion_proyecto = models.BooleanField(default=False)
    noti_creacion_usuario = models.BooleanField(default=False)
    noti_creacion_equipos = models.BooleanField(default=False)
    noti_cambio_estado_actividades = models.BooleanField(default=False)
    noti_us_asignado = models.BooleanField(default=False)
    noti_cambio_actividades = models.BooleanField(default=False)

    history = AuditlogHistoryField()

    def __unicode__(self):
        return self.username
Ejemplo n.º 5
0
class EmployeeAppraisalMeasure(models.Model):
    employee_appraisal = models.ForeignKey(EmployeeAppraisal,
                                           related_name='measures',
                                           blank=True)
    measure = models.ForeignKey(AppraisalMeasure,
                                related_name='reviews',
                                blank=True)
    rating = models.IntegerField(null=True)
    comment = models.TextField(blank=True)
    reviewer = models.ForeignKey(EmployeeProfile, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def get_self_appraisal(self):

        return self.employee_appraisal.measures.filter(
            employee_appraisal=self.employee_appraisal,
            measure=self.measure).order_by('id')[0]

    def get_supervisor_appraisal(self):

        measures = self.employee_appraisal.measures.filter(
            employee_appraisal=self.employee_appraisal, measure=self.measure)

        if measures.count() > 1:
            return measures.order_by('-id')[0]
        return None

    history = AuditlogHistoryField()
Ejemplo n.º 6
0
class ModeloCarga(ModeloBase):
    history = AuditlogHistoryField()

    tipo_carga = models.CharField(
        'tipo de carga',
        max_length=35,
        choices=CARGA_CHOICES,
        default=CARGA_ASSOCIACOES,
        unique=True,
    )
    arquivo = models.FileField(blank=True, null=True)

    class Meta:
        verbose_name = "modelo de carga"
        verbose_name_plural = "02.1) Modelos de carga"

    def __str__(self):
        return CARGA_NOMES[self.tipo_carga] if self.tipo_carga else ""

    @classmethod
    def tipos_cargas_to_json(cls):
        return [{
            'id': choice[0],
            'nome': choice[1]
        } for choice in CARGA_CHOICES]
Ejemplo n.º 7
0
class CargaHorária(utils.CalculadoraTempoMixin, TimeStampedModel):
    """Carga horária contendo os meses de trabalho anuais."""

    ponto = models.ForeignKey(Ponto, related_name='carga_horária')
    ano = models.IntegerField()
    histórico = AuditlogHistoryField()

    class Meta:
        """Meta opções do modelo."""

        ordering = ['ano']

    @property
    def horas_trabalhadas(self):
        """Horas trabalhadas totais dessa carga horária."""
        total = datetime.timedelta()
        for mês in self.meses.all():
            total += mês.horas_trabalhadas

        return total

    def __str__(self):
        """toString."""
        return f'Carga horária referente ao ano {self.ano} do servidor siape nº {self.ponto.siape}'

    __repr__ = __str__
Ejemplo n.º 8
0
class ContratoUnidade(ModeloBase):
    historico = AuditlogHistoryField()

    contrato = models.ForeignKey(Contrato,
                                 on_delete=models.CASCADE,
                                 related_name="unidades")
    unidade = models.ForeignKey(Unidade,
                                on_delete=models.PROTECT,
                                related_name="contratos",
                                to_field="codigo_eol")
    valor_mensal = models.DecimalField(max_digits=9,
                                       decimal_places=2,
                                       default=0.00)
    valor_total = models.DecimalField(max_digits=9,
                                      decimal_places=2,
                                      default=0.00)
    lote = models.CharField(max_length=20, blank=True, default='')

    def __str__(self):
        return f'TC:{self.contrato.termo_contrato} - Unidade: {self.unidade.nome}'

    @property
    def numero_lote(self):
        return f'Lote {self.lote}'

    @property
    def fiscais(self):
        return self.fiscais

    class Meta:
        verbose_name = 'Unidade de Contrato'
        verbose_name_plural = 'Unidades de Contratos'
Ejemplo n.º 9
0
class Sprint(models.Model):
    """
    Clase Sprint que hereda de models.Model
    nombre = Nombre del Sprint.
    duracion = Duracion calculada del Sprint en dias.
    proyecto = Proyecto al que pertenece el Sprint.
    """

    nombre = models.TextField(default='')
    duracion = models.IntegerField(default=0)
    proyecto = models.ForeignKey(Proyecto, null=True, related_name='sprints')

    options_estado_sprint = (
        ('PEN', 'Pendiente'),
        ('INI', 'Iniciado'),
        ('FIN', 'Finalizado')
    )
    estado_sprint = models.CharField(max_length=3, choices=options_estado_sprint, default='PEN')

    fecha_inicio = models.DateField()
    fecha_fin = models.DateField(null=True)

    history = AuditlogHistoryField()

    class Meta:
        permissions = (
            ("view_sprint", "Puede ver Sprint"),
            ("asignar_us", "Puede asignar US al Sprint"),
            ("iniciar_sprint", "Puede iniciar el Sprint"),
        )

    def __unicode__(self):
        return self.nombre
Ejemplo n.º 10
0
class FiscaisUnidade(ModeloBase):
    # Tipos de Fiscal
    FISCAL_TITULAR = 'TITULAR'
    FISCAL_SUPLENTE = 'SUPLENTE'

    FISCAL_NOMES = {
        FISCAL_TITULAR: 'Titular',
        FISCAL_SUPLENTE: 'Suplente',
    }

    FISCAL_CHOICES = (
        (FISCAL_TITULAR, FISCAL_NOMES[FISCAL_TITULAR]),
        (FISCAL_SUPLENTE, FISCAL_NOMES[FISCAL_SUPLENTE]),
    )

    historico = AuditlogHistoryField()

    contrato_unidade = models.ForeignKey(ContratoUnidade, on_delete=models.CASCADE, related_name="fiscais", blank=True,
                                         null=True)
    fiscal = models.ForeignKey(User, on_delete=models.PROTECT, related_name='contratos_fiscalizados')
    tipo_fiscal = models.CharField(max_length=15, choices=FISCAL_CHOICES, default=FISCAL_SUPLENTE)

    def __str__(self):
        contrato = ''
        unidade = ''
        fiscal = f'Fiscal ({self.tipo_fiscal}): {self.fiscal.nome}'
        if self.contrato_unidade:
            contrato = f'TC:{self.contrato_unidade.contrato.termo_contrato}'
            unidade = f'unidade: {self.contrato_unidade.unidade.nome}'
        return f'{fiscal} do {contrato} na {unidade}'

    class Meta:
        verbose_name = 'Fiscal da Unidade de Contrato'
        verbose_name_plural = 'Fiscais das Unidades de Contratos'
Ejemplo n.º 11
0
class ModelBase(models.Model):
    created = models.DateTimeField('Criado em', auto_now_add=True)
    modified = models.DateTimeField('Modificado em', auto_now=True)
    history = AuditlogHistoryField()

    class Meta:
        abstract = True
Ejemplo n.º 12
0
class Facultad(models.Model):
    '''
        Define la informacion de una facultad, estas pueden ser
        Facultades, vicerrectorias, institutos, asociaciones o coordinaciones.
        Para este sistema solo se utilizara Facultades y Coordinaciones.
    '''
    FACULTAD = 'FA'
    VICERRECTORIA = 'VI'

    TIPOS = (
        (FACULTAD, 'Facultad'),
        (VICERRECTORIA, 'Vicerrectoria'),
    )
    objects = UnidadManager()

    cod_facultad = models.CharField(max_length=2, unique=True)
    nombre = models.CharField(max_length=120, unique=True)
    tipo = models.CharField(max_length=2, choices=TIPOS, default=FACULTAD)
    activo = models.BooleanField(default=True)

    fecha_creacion = models.DateField(auto_now_add=True)
    fecha_actualizacion = models.DateField(auto_now=True)
    history = AuditlogHistoryField()

    class Meta:
        verbose_name_plural = 'Facultades'

    def __str__(self):
        return '{} - {}'.format(self.cod_facultad, self.nombre)

    def get_absolute_url(self):
        pass
class CoadAssessor(ModeloBase):
    historico = AuditlogHistoryField()
    coad = models.ForeignKey(Coad,
                             on_delete=models.CASCADE,
                             related_name='assessores')
    assessor = models.OneToOneField(User,
                                    on_delete=models.PROTECT,
                                    related_name='assessor_coad')

    def __str__(self):
        return f"{self.assessor.nome}"

    @classmethod
    def limpa_assessores(cls):
        cls.objects.all().delete()

    @classmethod
    def append_assessores(cls, assessores):
        coad = Coad.objects.get(id=1)
        for assessor in assessores:
            usuario = User.objects.get(
                username=assessor["assessor"]["username"])
            cls.objects.create(coad=coad, assessor=usuario)

    class Meta:
        verbose_name = "Assessor COAD"
        verbose_name_plural = "Assessores COAD"
Ejemplo n.º 14
0
class Tesis(models.Model):
    history = AuditlogHistoryField()
    especialidad_doctorado = models.OneToOneField(EspecialidadDoctorado,
                                                  on_delete=models.CASCADE,
                                                  null=True,
                                                  blank=True,
                                                  default='')
    titulo_tesis = models.CharField(max_length=255,
                                    null=False,
                                    blank=False,
                                    unique=True)
    archivo = models.FileField(upload_to="tesis/", null=True, blank=True)
    created_at = models.DateTimeField("Fecha de Creado", auto_now_add=True)
    updated_at = models.DateTimeField("Fecha de actualización",
                                      auto_now=True,
                                      auto_now_add=False)

    class Meta:
        db_table = 'tesis'
        verbose_name = 'Tesis'
        verbose_name_plural = 'Tesis'
        ordering = ['-titulo_tesis']

    def __str__(self):
        return self.titulo_tesis
Ejemplo n.º 15
0
class AbstractBaseModel(models.Model):
    class Meta:
        abstract = True

    history = AuditlogHistoryField()
    uuid = models.UUIDField(verbose_name='UUID',
                            default=uuid4,
                            editable=False,
                            unique=True)
    created_at = models.DateTimeField(verbose_name=_('Created at'),
                                      auto_now_add=True)
    updated_at = models.DateTimeField(verbose_name=_('Updated at'),
                                      auto_now=True)
    deleted_at = models.DateTimeField(verbose_name=_('Deleted at'),
                                      null=True,
                                      blank=True)
    objects = Manager()
    objects_all = models.Manager()

    def delete(self):
        self.deleted_at = timezone.now()
        self.save()
        post_soft_delete.send(sender=type(self),
                              instance=self,
                              using=self._state.db)

    def __str__(self):
        if hasattr(self, 'name'):
            return self.name
        if hasattr(self, 'title'):
            return self.title
        return str(self.pk)
Ejemplo n.º 16
0
class FiscalLote(ModeloBase):
    # Tipos de Fiscal
    FISCAL_TITULAR = 'TITULAR'
    FISCAL_SUPLENTE = 'SUPLENTE'

    FISCAL_NOMES = {
        FISCAL_TITULAR: 'Titular',
        FISCAL_SUPLENTE: 'Suplente',
    }

    FISCAL_CHOICES = (
        (FISCAL_TITULAR, FISCAL_NOMES[FISCAL_TITULAR]),
        (FISCAL_SUPLENTE, FISCAL_NOMES[FISCAL_SUPLENTE]),
    )

    historico = AuditlogHistoryField()

    lote = models.ForeignKey(Lote, on_delete=models.CASCADE, related_name="fiscais_lote", blank=True,
                             null=True)
    fiscal = models.ForeignKey(User, on_delete=models.PROTECT, related_name='fiscais')
    tipo_fiscal = models.CharField(max_length=15, choices=FISCAL_CHOICES, default=FISCAL_SUPLENTE)

    def __str__(self):
        return f'{self.fiscal.nome} do {self.lote.nome}'

    class Meta:
        verbose_name = 'Fiscal do Lote de Contrato'
        verbose_name_plural = 'Fiscais dos Lotes de Contratos'
Ejemplo n.º 17
0
class Solicitud(models.Model):
    usuario = models.ForeignKey(User,
                                on_delete=models.SET_NULL,
                                null=True,
                                blank=True)
    titulo = models.CharField(max_length=120)

    fecha_creacion = models.DateField(blank=True, null=True, auto_now_add=True)
    fecha_actualizacion = models.DateTimeField(blank=True,
                                               null=True,
                                               auto_now=True)
    resumen = models.TextField(max_length=500, blank=True)
    resuelto = models.BooleanField(default=False)

    history = AuditlogHistoryField()

    class Meta:
        verbose_name_plural = 'Solicitudes'

    def __str__(self):
        return self.titulo

    def save(self, *args, **kwargs):
        return super(Solicitud, self).save()

    def get_absolute_url(self):
        return reverse('solicitud:detalle', kwargs={'pk': self.pk})

    def resolver(self):
        self.resuelto = True
        self.save()
Ejemplo n.º 18
0
class Objection(models.Model):
    complaint_id = models.CharField(max_length=10)
    complaint_language = models.ForeignKey(to=ComplaintLanguage,
                                           on_delete=models.SET_NULL,
                                           null=True,
                                           blank=True)
    service_provider = models.ForeignKey(to=ServiceProvider,
                                         on_delete=models.SET_NULL,
                                         null=True,
                                         blank=True)
    agent = models.ForeignKey(to=Agent,
                              on_delete=models.SET_NULL,
                              null=True,
                              blank=True)
    date_submitted = models.DateTimeField()
    date_processing_start = models.DateTimeField(null=True, blank=True)
    due_date = models.DateTimeField(null=True, blank=True)
    date_processing_end = models.DateTimeField(null=True, blank=True)
    status_note = models.ForeignKey(to=StatusNote,
                                    on_delete=models.SET_NULL,
                                    null=True,
                                    blank=True)
    psp_objection_referenced_code_section = models.ForeignKey(
        to=ReferencedCodeSection,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ReferencedCodeSectionPSP')
    ccts_determination_referenced_code_section = models.ForeignKey(
        to=ReferencedCodeSection,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ReferencedCodeSectionCCTS')
    objection_status = models.ForeignKey(to=ObjectionStatus,
                                         on_delete=models.SET_NULL,
                                         null=True,
                                         blank=True)
    ccts_assessment = models.ForeignKey(to=ObjectionAssessment,
                                        on_delete=models.SET_NULL,
                                        null=True,
                                        blank=True)
    closing_level = models.ForeignKey(to=ClosingLevel,
                                      on_delete=models.SET_NULL,
                                      null=True,
                                      blank=True)
    ccts_assistance_required = models.ForeignKey(to=CCTSAssistanceRequired,
                                                 on_delete=models.SET_NULL,
                                                 null=True,
                                                 blank=True)
    customer_assistance_required = models.ForeignKey(
        to=CustomerAssistanceRequired,
        on_delete=models.SET_NULL,
        null=True,
        blank=True)
    history = AuditlogHistoryField()

    def __str__(self):
        return self.complaint_id
Ejemplo n.º 19
0
class RelatedModel(models.Model):
    """
    A model with a foreign key.
    """

    related = models.ForeignKey(to='self', on_delete=models.CASCADE)

    history = AuditlogHistoryField()
Ejemplo n.º 20
0
class RelatedModel(models.Model):
    """
    A model with a foreign key.
    """

    related = models.ForeignKey('self')

    history = AuditlogHistoryField()
Ejemplo n.º 21
0
class BaseModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    history = AuditlogHistoryField(pk_indexable=False)

    class Meta:
        abstract = True
Ejemplo n.º 22
0
class ManyRelatedModel(models.Model):
    """
    A model with a many to many relation.
    """

    related = models.ManyToManyField('self')

    history = AuditlogHistoryField()
Ejemplo n.º 23
0
class Proyecto(models.Model):
    """
    Se crea la clase Proyecto, que hereda de Model de django, con los siguientes atributos:
    nombre : El nombre del proyecto.
    fechaCreacion : La fecha en la cual se creo el proyecto.
    fechaInicio : La fecha en la cual se inicia el proyecto.
    fechaFin : La fecha en la cual se termino el proyecto.
    liderProyecto : Usuario lider del proyecto.
    descripcion : breve descripcion del proyecto.
    estado : Estado actual del proyecto, puede ser Pendiente, Anulado, Activo o Finalizado.
    Obvservaciones : Ciertas observaciones del proyecto.
    cliente : Cliente que solicito el proyecto.
    activo : variable que determina un estado de "eliminado" para el Proyecto.


    Metodos:
    hacerLider : Establece un Usuario como lider del proyecto.
    """
    opciones_estado = (
        ('PEN', 'Pendiente'),
        ('ANU', 'Anulado'),
        ('ACT', 'Activo'),
        ('FIN', 'Finalizado'),
    )
    nombre = models.CharField(max_length=50, null=False)
    fecha_creacion = models.DateField(auto_now=True)
    fecha_inicio = models.DateField()
    fecha_fin = models.DateField()
    lider_proyecto = models.ForeignKey(Usuario, related_name='lider')
    descripcion = models.TextField(
        max_length=140,
        help_text='Introduzca una breve reseña del proyecto',
        null=True)
    estado = models.CharField(max_length=3,
                              choices=opciones_estado,
                              default='PEN',
                              help_text='Estado del proyecto')
    observaciones = models.TextField(max_length=140,
                                     null=True,
                                     default='No hay observaciones')
    cliente = models.ForeignKey(Cliente, on_delete=models.DO_NOTHING)
    activo = models.BooleanField(default=True)

    history = AuditlogHistoryField()

    class Meta:
        permissions = (
            ("view_proyecto", "Puede ver proyecto"),
            ("change_estado", "Puede cambiar el estado del proyecto"),
            ("view_log", "Puede cambiar el estado del proyecto"),
        )

    def hacerLider(self, lider):
        self.lider_proyecto = lider
        self.save()

    def __unicode__(self):
        return self.nombre
Ejemplo n.º 24
0
class FacultadInstancia(models.Model):
    sede = models.ForeignKey(Sede,
                             on_delete=models.CASCADE,
                             related_name='facultades',
                             blank=True,
                             null=True)
    facultad = models.ForeignKey(Facultad,
                                 on_delete=models.CASCADE,
                                 related_name='instancias',
                                 blank=True,
                                 null=True)
    activo = models.BooleanField(default=True)

    cod_sede = models.CharField(max_length=2)
    cod_facultad = models.CharField(max_length=2)

    decano = models.ForeignKey(User,
                               on_delete=models.SET_NULL,
                               null=True,
                               blank=True)

    fecha_creacion = models.DateField(auto_now_add=True)
    fecha_actualizacion = models.DateField(auto_now=True)
    history = AuditlogHistoryField()
    objects = UnidadInstanciaManager()

    class Meta:
        permissions = (
            ('ver_facultad', 'Ver Facultad'),
            ('ver_profesores_facultad', 'Ver Profesores'),
            ('ver_estudiantes_facultad', 'Ver Estudiantes'),
            ('ver_actividades_facultad', 'Ver Actividades'),
            ('ver_trabajos_facultad', 'Ver Trabajos'),
        )
        unique_together = ('cod_sede', 'cod_facultad')
        verbose_name_plural = 'Instancias Facultades'

    def __str__(self):
        return '{}-{}'.format(self.cod_sede, self.cod_facultad)

    def save(self, *args, **kwargs):
        try:
            self.sede = Sede.objects.get(cod_sede=self.cod_sede)
        except ObjectDoesNotExist:
            pass
        try:
            self.facultad = Facultad.objects.get(
                cod_facultad=self.cod_facultad)
        except ObjectDoesNotExist:
            pass
        return super(FacultadInstancia, self).save()

    def get_absolute_url(self):
        return reverse('ubicacion:facultad',
                       kwargs={
                           'cod_sede': self.cod_sede,
                           'cod_facultad': self.cod_facultad
                       })
Ejemplo n.º 25
0
class DateTimeFieldModel(models.Model):
    """
    A model with a DateTimeField, used to test DateTimeField
    changes are detected properly.
    """
    label = models.CharField(max_length=100)
    timestamp = models.DateTimeField()

    history = AuditlogHistoryField()
Ejemplo n.º 26
0
class FirstManyRelatedModel(models.Model):
    """
    A model with a many to many relation to another model similar.
    """

    related = models.ManyToManyField('OtherManyRelatedModel',
                                     related_name='related')

    history = AuditlogHistoryField()
Ejemplo n.º 27
0
class OtherManyRelatedModel(models.Model):
    """
    A model that 'receives' the other side of the many to many relation from 'FirstManyRelatedModel'.
    """

    history = AuditlogHistoryField()

    def __str__(self):
        return f'{self.id}'
Ejemplo n.º 28
0
class EmployeeAppraisal(models.Model):
    class Meta:
        ordering = ('-id', )

    STATUS_CHOICES = (('0', 'Complete'), ('1', 'Pending'), ('2', 'Canceled'),
                      ('3', 'In progress'))

    appraisal = models.ForeignKey(Appraisal,
                                  related_name='employee_appraisals',
                                  on_delete=models.CASCADE)
    employee_profile = models.ForeignKey(EmployeeProfile,
                                         related_name='appraisals')
    status = models.CharField(max_length=1,
                              choices=STATUS_CHOICES,
                              default=STATUS_CHOICES[1][0],
                              blank=True)
    on_open_remarks = models.TextField(null=True, blank=True)
    on_close_remarks = models.TextField(null=True, blank=True)
    closed_on = models.DateTimeField(null=True, blank=True)

    objects = models.Manager()
    pending_appraisals = EmployeePendingAppraisalManager()

    history = AuditlogHistoryField()

    @property
    def is_complete(self):
        if self.status in ['0', '2']:
            return True
        return False

    def get_has_appraisal(self):
        if self.is_complete:
            return None
        return self.flows.order_by('-id')[0].to_reviewer

    def get_total_answered(self, **kwargs):
        return self.measures.filter(rating__isnull=False,
                                    comment__isnull=False,
                                    reviewer=kwargs.get('reviewer')).count()

    def get_average_rating(self, reviewer=None):
        sum_ratios = 0
        count = 0
        q = models.Q()
        if reviewer is not None:
            q = models.Q(reviewer=reviewer)

        measures = self.measures.filter(q)
        for measure in measures:
            if measure.rating is not None:
                sum_ratios += float(
                    measure.rating) / measure.measure.max_rating
                count += 1
        avg_rating = sum_ratios / count * 100

        return round(avg_rating)
Ejemplo n.º 29
0
class Notificacion(models.Model):
    history = AuditlogHistoryField()
    usuario = models.ForeignKey(User, on_delete=models.CASCADE)
    titulo = models.CharField(blank=True, max_length=120)
    texto = models.CharField(max_length=120)
    url = models.URLField(blank=True)

    def __str__(self):
        return '{}-{}'.format(self.usuario.username, self.titulo)
Ejemplo n.º 30
0
class SimpleExcludeModel(models.Model):
    """
    A simple model used for register's exclude_fields kwarg
    """

    label = models.CharField(max_length=100)
    text = models.TextField(blank=True)

    history = AuditlogHistoryField()