Пример #1
0
class ServicoInterno(Servico):
    procedimentos_realizados = models.TextField(
        verbose_name='Procedimentos a Serem Realizados',
        max_length=300,
        null=True,
        blank=True)
    materiais_utilizados = models.ManyToManyFieldPlus(
        'systi.Material',
        verbose_name='Materiais Utilizados',
        blank=True,
        null=True)
    data_realizacao = models.DateFieldPlus(u'Data da Realização',
                                           null=True,
                                           blank=True)
    data_prevista_conclusao = models.DateFieldPlus(
        u'Data Prevista da Conclusão')
    data_conclusao = models.DateFieldPlus(u'Data da Conclusão',
                                          blank=True,
                                          null=True)

    class Meta:
        verbose_name = u'Serviço Interno'
        verbose_name_plural = u'Serviços Internos'

    def get_absolute_url(self):
        return '/systi/servicointerno/{}/'.format(self.id)

    def __str__(self):
        return self.ordem_servico
Пример #2
0
class Emprestimo(ModelPlus):
    ativo = models.ForeignKeyPlus('systi.Ativo', verbose_name='Ativos')
    motivo = models.TextField(verbose_name=u'Justificativa', max_length=40)
    data_emprestimo = models.DateFieldPlus(u'Data do Empréstimo')
    data_devolucao = models.DateFieldPlus(u'Data de Devolução')
    estado = models.CharFieldPlus(
        verbose_name=u'Estado do Empréstimo',
        max_length=25,
        choices=SysTIChoices.ESTADO_EMPRESTIMOS.items(),
        default=SysTIChoices.EM_ABERTO)
    setor_origem = models.ForeignKeyPlus('comum.Sala',
                                         verbose_name='Setor de Origem',
                                         related_name='setor_origem')
    setor_destino = models.ForeignKeyPlus('comum.Sala',
                                          verbose_name='Setor de Destino',
                                          related_name='setor_destino')

    class Meta:
        verbose_name = u'Empréstimo'
        verbose_name_plural = u'Empréstimos'

    def get_absolute_url(self):
        return '/systi/emprestimo/{}/'.format(self.id)

    def __str__(self):
        return self.data_emprestimo
Пример #3
0
class Material(ModelPlus):
    nome_material = models.CharFieldPlus(verbose_name=u'Nome do Material',
                                         max_length=30)
    tipo_material = models.CharFieldPlus(verbose_name=u'Tipo do Material',
                                         max_length=20)
    local_guardado = models.ForeignKeyPlus('systi.Compartimento',
                                           verbose_name='Local Guardado')
    descricao = models.TextField(verbose_name=u'Descrição', max_length=30)
    unidade_de_medida = models.CharFieldPlus(verbose_name=u'Unidade de Medida',
                                             max_length=25,
                                             choices=UNIDADE_MEDIDA.items(),
                                             default=UNIDADE_MEDIDA.get('Und'))
    quantidade = models.CharFieldPlus(verbose_name=u'Quantidade',
                                      max_length=30)
    fornecedor = models.ForeignKeyPlus('systi.Fornecedor',
                                       verbose_name='Fornecedor')

    class Meta:
        verbose_name = u'Material'
        verbose_name_plural = u'Materiais'

    def get_absolute_url(self):
        return '/systi/material/{}/'.format(self.id)

    def __str__(self):
        return self.nome_material
Пример #4
0
class Avaliacao(models.ModelPlus):
    avaliador = models.ForeignKey('rh.Servidor',
                                  verbose_name='Avaliador',
                                  related_name='avaliacoes',
                                  on_delete=models.PROTECT)
    submissao = models.ForeignKey(Submissao,
                                  verbose_name='Submissão',
                                  related_name='avaliacoes',
                                  on_delete=models.PROTECT)
    cadastrada_em = models.DateTimeField(verbose_name='Data da avaliação',
                                         auto_now_add=True)
    situacao = models.ForeignKey(SituacaoPPC,
                                 verbose_name='Situação',
                                 related_name='avaliacoes',
                                 on_delete=models.PROTECT,
                                 blank=False)
    justificativa = models.TextField(verbose_name='Justificativa', blank=True)

    objects = querysets.AvaliacaoQuerySet.as_manager()

    class Meta:
        verbose_name = u'Avaliação'
        verbose_name_plural = u'Avaliações'
        unique_together = ['avaliador', 'submissao']

    def __str__(self):
        return '{self.avaliador} - {self.submissao}'.format(self=self)
Пример #5
0
class Transferencia(ModelPlus):
    motivo_transferencia = models.CharFieldPlus(
        verbose_name=u'Motivo da Transferência',
        max_length=30,
        choices=SysTIChoices.TIPOS_SOLICITACAO.items(),
        default=SysTIChoices.CHAMADO)
    anexo_motivo = models.FileField(upload_to='systi/anexosMotivos/',
                                    verbose_name=u'Anexo do Motivo')
    descricao = models.TextField(verbose_name=u'Descrição', max_length=225)
    setor_origem = models.ForeignKeyPlus('comum.Sala',
                                         verbose_name=u'Setor de Origem',
                                         related_name='sala_origem',
                                         blank=True,
                                         null=True)
    setor_destino = models.ForeignKeyPlus('comum.Sala',
                                          verbose_name=u'Setor de Destino',
                                          related_name='sala_destino')
    ativos_transferidos = models.ManyToManyFieldPlus(
        Ativo, verbose_name=u'Ativos a Serem Transferidos')
    termo_recebimento = models.FileField(
        upload_to='systi/anexosTermosRecebimentos/',
        verbose_name=u'Anexo do Termo de Recebimento')
    data_solicitacao = models.DateFieldPlus(
        verbose_name=u'Data da Solicitação')
    altorizada = models.CharFieldPlus(
        verbose_name=u'Altorizada',
        max_length=30,
        null=True,
        blank=True,
        choices=SysTIChoices.TRANSFERENCIA_ALTORIZACAO.items(),
        default=SysTIChoices.AGUARDANDO_ALTORIZACAO)
    transferida = models.CharFieldPlus(
        verbose_name=u'Transferida',
        max_length=30,
        null=True,
        blank=True,
        choices=SysTIChoices.TRANSFERENCIAS.items(),
        default=SysTIChoices.AGUARDANDO_ALTORIZACAO)
    data_altorizada = models.DateFieldPlus(
        verbose_name=u'Data que foi Altorizada', null=True, blank=True)
    data_transferencia = models.DateFieldPlus(
        verbose_name=u'Data da Transferencia', null=True, blank=True)


    anexo_motivo.help_text = help_text = HELP_TEXT = u'Será aceito arquivo com tamanho máximo 3MB e que seja do tipo: ' + \
                                                     u', '.join(DOCUMENT_EXTENSIONS + IMAGE_EXTENSIONS[0:-1]) + ' ou ' + \
                                                     IMAGE_EXTENSIONS[-1] + '.'
    termo_recebimento.help_text = help_text = HELP_TEXT = u'Será aceito arquivo com tamanho máximo 3MB e que seja do tipo: ' + \
                                                     u', '.join(DOCUMENT_EXTENSIONS + IMAGE_EXTENSIONS[0:-1]) + ' ou ' + \
                                                     IMAGE_EXTENSIONS[-1] + '.'

    class Meta:
        verbose_name = u'Transferência'
        verbose_name_plural = u'Transferências'

    def get_absolute_url(self):
        return '/systi/transferencia/{}/'.format(self.id)
Пример #6
0
class Categoria(ModelPlus):
    nome = models.CharFieldPlus(verbose_name=u'Nome da Categoria',
                                max_length=30,
                                help_text=u'Ex: Hardware, Software, Rede ...')
    descricao = models.TextField(verbose_name=u'Descrição', max_length=30)

    class Meta:
        verbose_name = u'Categoria'
        verbose_name_plural = u'Categorias'

    def get_absolute_url(self):
        return '/systi/categoria/{}/'.format(self.id)
Пример #7
0
class Servico(ModelPlus):
    class Meta:
        abstract = True

    motivo_servico = models.CharFieldPlus(
        verbose_name=u'Motivo do Serviço',
        max_length=30,
        choices=SysTIChoices.TIPOS_SOLICITACAO.items(),
        default=SysTIChoices.CHAMADO)
    chamado = models.ForeignKeyPlus('centralservicos.Chamado',
                                    verbose_name=u'Chamado',
                                    blank=True,
                                    null=True)
    anexo_motivo = models.FileField(upload_to='systi/anexosMotivos/',
                                    verbose_name=u'Anexo do Motivo',
                                    blank=True,
                                    null=True)
    equipamentos_enviados = models.ManyToManyFieldPlus(
        Ativo, verbose_name=u'Equipamentos a serem Consertados')
    data_diagnostico = models.DateFieldPlus(u'Data do Diagnóstico')
    diagnostico = models.TextField(verbose_name=u'Defeitos Apresentados',
                                   max_length=300)
    tipo_servico = models.CharFieldPlus(verbose_name=u'Tipo do Serviço',
                                        max_length=25,
                                        choices=TIPO_SERVICO.items(),
                                        default=TIPO_SERVICO.get('Manutenção'))
    estado_servico = models.CharFieldPlus(
        verbose_name=u'Estado',
        max_length=25,
        choices=SysTIChoices.ESTADOS_SERVICO.items(),
        default=SysTIChoices.AGUARDANDO_DIAGNOSTICO,
        blank=True,
        null=True)
    ordem_servico = models.CharFieldPlus(
        verbose_name='Número da Ordem do Serviço', max_length=25)
    motivo_cancel_ou_suspen = models.TextField(
        verbose_name='Motivo da Suspenção ou Cacelamento',
        blank=True,
        null=True)
Пример #8
0
class SolicitacaoCorrecao(models.ModelPlus):
    ADICAO = 1
    ALTERACAO = 2
    EXCLUSAO = 3
    TIPO_CHOICES = ((ADICAO, 'Adição'), (ALTERACAO, 'Alteração'), (EXCLUSAO,
                                                                   'Exclusão'))
    cadastrada_em = models.DateTimeField(verbose_name='Data',
                                         auto_now_add=True)
    avaliacao = models.ForeignKey(Avaliacao,
                                  verbose_name='Avaliação',
                                  related_name='solicitacoes',
                                  on_delete=models.CASCADE)
    tipo = models.PositiveSmallIntegerField(verbose_name='Tipo de Solicitação',
                                            choices=TIPO_CHOICES)
    comentario = models.TextField(verbose_name='Comentário')

    def __str__(self):
        return '{self.avaliacao.avaliador} - {self.tipo} - {self.data}'.format(
            self=self)

    class Meta:
        verbose_name = u'Solicitação Correção'
        verbose_name_plural = u'Solicitação Correções'

    def is_adicao(self):
        return self.tipo == self.ADICAO

    def is_alteracao(self):
        return self.tipo == self.ALTERACAO

    def is_exclusao(self):
        return self.tipo == self.EXCLUSAO

    def tipo_css_class(self):
        classes = {
            self.ADICAO: 'success',
            self.ALTERACAO: 'alert',
            self.EXCLUSAO: 'error',
        }
        return classes.get(self.tipo)