Beispiel #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
Beispiel #2
0
class ServicoExterno(Servico):
    data_do_envio = models.DateFieldPlus(u'Data do Envio',
                                         blank=True,
                                         null=True)
    data_prevista_devolucao = models.DateFieldPlus(
        u'Data Prevista da Devolução', blank=True, null=True)
    anexo_nota_fiscal_recibo = models.FileField(
        upload_to='systi/anexoNotasFiscaisOuRecibos/',
        verbose_name='Anexar Nota Fiscal ou Recibo',
        blank=True,
        null=True)
    anexo_termo = models.FileField(upload_to='systi/anexoTermosServico/',
                                   verbose_name='Anexar Termo',
                                   blank=True,
                                   null=True)
    prestador = models.ForeignKeyPlus('systi.Fornecedor',
                                      verbose_name='Selecionar Prestador',
                                      blank=True,
                                      null=True)
    parecer = models.CharFieldPlus(verbose_name='Parecer',
                                   blank=True,
                                   null=True)

    class Meta:
        verbose_name = u'Serviço Externo'
        verbose_name_plural = u'Serviços Externos'

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

    def __str__(self):
        return self.ordem_servico
Beispiel #3
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
Beispiel #4
0
class AcessoBiometrico(ModelPlus):
    id_usuario_fechadura = models.CharFieldPlus(
        verbose_name=u'Identificação Na Fechadura', max_length=40)
    data_registro = models.DateFieldPlus(verbose_name=u'Data do Registro',
                                         blank=True,
                                         null=True)
    data_des_registro = models.DateFieldPlus(u'Data do des-registro',
                                             blank=True,
                                             null=True)
    local_da_fechadura = models.ForeignKeyPlus(
        'comum.Sala', verbose_name=u'Local do Fechadura')
    tipo_do_usuario = models.CharFieldPlus(verbose_name=u'Tipo do Usuário',
                                           max_length=25,
                                           choices=TIPO_USUARIO.items(),
                                           default=TIPO_USUARIO.get('Aluno'))
    aluno = models.ForeignKeyPlus('edu.Aluno',
                                  verbose_name=u'Aluno',
                                  blank=True,
                                  null=True)
    servidor = models.ForeignKeyPlus('rh.Servidor',
                                     verbose_name=u'Servidor do IF',
                                     blank=True,
                                     null=True)
    servidor_terceirizado = models.CharFieldPlus(
        verbose_name=u'Nome do Servidor ou Visitante', blank=True, null=True)

    class Meta:
        verbose_name = u'Acesso Biometrico'
        verbose_name_plural = u'Acessos Biometricos'

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

    def __str__(self):
        return self.id_usuario_fechadura
Beispiel #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)
Beispiel #6
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)
Beispiel #7
0
class Edital(models.ModelPlus):
    nome = models.CharField(verbose_name='Nome', max_length=1024)
    numero = models.PositiveIntegerField(verbose_name='Número do edital')
    ano = models.PositiveIntegerField(verbose_name='Ano')
    tipo = models.ForeignKey(TipoEdital,
                             verbose_name='Tipo do Edital',
                             related_name='editais',
                             on_delete=models.PROTECT)
    quantidade_avaliadores = models.PositiveIntegerField(
        verbose_name='Quantidade de avaliadores',
        help_text='Quantidade de avaliadores por PPC')
    avaliadores = models.ManyToManyFieldPlus('rh.Servidor',
                                             related_name='editais_ppc')
    arquivo = DocumentFileField(verbose_name='Arquivo do Edital',
                                size=2,
                                format=['pdf'],
                                upload_to=UploadToGenerator(
                                    ['editais_ppc', 'editais']),
                                storage=MinioMediaStorage())
    documentos = models.ManyToManyFieldPlus(Documento,
                                            verbose_name='Documentos',
                                            related_name='editais',
                                            blank=True)
    modelo_ppc = models.ForeignKey(ModeloPPC,
                                   verbose_name='Modelo PPC',
                                   related_name='editais',
                                   on_delete=models.PROTECT)
    inicio_inscricao = models.DateFieldPlus(
        verbose_name='Data inicial para a inscrição no edital')
    fim_inscricao = models.DateFieldPlus(
        verbose_name='Data final para a inscrição no edital')
    inicio_analise = models.DateFieldPlus(
        verbose_name='Data inicial para a análise dos PPCs')
    fim_analise = models.DateFieldPlus(
        verbose_name='Data final para a análise dos PPCs')
    inicio_ajuste = models.DateFieldPlus(
        verbose_name='Data inicial para ajustes nos PPCs')
    fim_ajuste = models.DateFieldPlus(
        verbose_name='Data final para ajustes nos PPCs')
    data_resultado = models.DateFieldPlus(
        verbose_name='Data final para o resultado nos PPCs')

    objects = querysets.EditalQuerySet.as_manager()

    def get_absolute_url(self):
        return reverse('editais_ppc:edital_ppc', args=[self.pk])

    def em_periodo_inscricao(self):
        today = datetime.date.today()
        return self.inicio_inscricao <= today <= self.fim_inscricao

    def em_periodo_analise(self):
        today = datetime.date.today()
        return self.inicio_analise <= today <= self.fim_analise

    def em_periodo_ajuste(self):
        today = datetime.date.today()
        return self.inicio_ajuste <= today <= self.fim_ajuste

    def em_periodo_pre_ajuste(self):
        today = datetime.date.today()
        return self.fim_analise < today < self.inicio_ajuste

    def em_periodo_pos_ajuste(self):
        today = datetime.date.today()
        return self.fim_ajuste < today

    def em_data_resultado(self):
        today = datetime.date.today()
        return self.data_resultado == today

    class Meta:
        verbose_name = u'Edital'
        verbose_name_plural = u'Editais'

    def __str__(self):
        return '{self.nome} - {self.numero}/{self.ano}'.format(self=self)