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
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
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
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)
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)
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)
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)
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)