Created
May 8, 2013 21:23
-
-
Save george-silva/5543771 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Requerimento(UserDateAdd, UserDateUpd): | |
""" | |
BaseRequerimento | |
""" | |
tipo = models.CharField(max_length=16, | |
verbose_name=u"Tipo", | |
help_text=u"Tipo de requerimento", | |
choices=TIPO_REQUERIMENTO_CHOICES) | |
requerente = models.ForeignKey(User, | |
verbose_name=u"Requerente", | |
help_text=u"Usuário que iniciou o requerimento.", | |
editable=False, | |
related_name="%(app_label)s_%(class)s+") | |
justificativa = models.TextField(verbose_name=u"Justificativa", | |
help_text=u"Justificativa para procedência do requerimento.") | |
analisado_por = models.ForeignKey(User, | |
verbose_name=u"Analista", | |
help_text=u"Usuário que analisou o requerimento.", | |
null=True, | |
blank=True, | |
editable=False) | |
data_inicio_analise = models.DateTimeField(verbose_name=u"Data Início Análise", | |
help_text=u"Data em que o requerimento começou a ser analisado.", | |
null=True, | |
blank=True, | |
editable=False) | |
data_fim_analise = models.DateTimeField(verbose_name=u"Data Fim Análise", | |
help_text=u"Data em que o requerimento terminou de ser analisado e foi deferido ou indeferido.", | |
null=True, | |
blank=True, | |
editable=False) | |
status = models.CharField(max_length=32, | |
verbose_name=u"Status", | |
help_text=u"Status do requerimento.", | |
choices=STATUS_REQUERIMENTO_CHOICES, | |
editable=False) | |
deferido = models.NullBooleanField(verbose_name=u"Deferido?", | |
help_text=u"Indica se o requerimento foi deferido ou indeferido.", | |
editable=False) | |
protocolo = models.CharField(max_length=36, | |
verbose_name=u"Protocolo", | |
help_text=u"Número do protocolo", | |
editable=False) | |
laudo = models.TextField(verbose_name=u"Laudo", | |
help_text=u"Laudo final da análise do requerimento.", | |
null=True, | |
blank=True, | |
editable=False) | |
anexos = generic.GenericRelation(Anexo) | |
objects = RequerimentoManager() | |
def get_absolute_url(self): | |
return reverse("detalhe_requerimento", kwargs={"protocolo": self.protocolo}) | |
def analisar(self, analista): | |
""" | |
marca a entrada do documento no processo de análise | |
""" | |
if self.status == STATUS_REQUERIMENTO_PROTOCOLADO: | |
self.analisado_por_id = analista.pk | |
self.status = STATUS_REQUERIMENTO_EM_ANALISE | |
self.data_inicio_analise = now() | |
self.date_upd = now() | |
self.user_upd_id = analista.pk | |
self.save() | |
titulo = u"BaseRequerimento %s entrou em análise" % self.protocolo | |
msg = u"O requerimento %s entrou em análise pelo analista %s. Assim que a análise for concluída o sistema automaticamente lhe enviará outro email com o status de seu requerimento." % ( | |
self.protocolo, self.analisado_por) | |
enviar_notificacao(self.analisado_por, self.user_add, titulo, msg) | |
def deferir(self): | |
if self.status == STATUS_REQUERIMENTO_EM_ANALISE: | |
self.data_fim_analise = now() | |
self.date_upd = now() | |
self.status = STATUS_REQUERIMENTO_FINALIZADO | |
self.deferido = True | |
self.save() | |
titulo = u"Requerimento %s foi deferido" % self.protocolo | |
msg = u"O requerimento %s foi deferido. As alterações do requerimento já foram processadas pelo SIGEF automaticamente." % self.protocolo | |
enviar_notificacao(self.analisado_por, self.user_add, titulo, msg) | |
def indeferir(self): | |
if self.status == STATUS_REQUERIMENTO_EM_ANALISE: | |
self.data_fim_analise = now() | |
self.date_upd = now() | |
self.status = STATUS_REQUERIMENTO_FINALIZADO | |
self.deferido = False | |
self.save() | |
titulo = u"Requerimento %s foi indeferido" % self.protocolo | |
msg = u"O requerimento %s foi indeferido." % self.protocolo | |
enviar_notificacao(self.analisado_por, self.user_add, titulo, msg) | |
def save(self, *args, **kwargs): | |
if not self.pk: | |
self.protocolo = str(uuid.uuid4()) | |
titulo = u"Requerimento %s criado" % self.protocolo | |
msg = u"O requerimento %s foi criado com sucesso na base de dados. Ele entrará na fila de análise e assim que a análise for iniciada lhe avisaremos denovo." % self.protocolo | |
enviar_notificacao(self, self.user_add, titulo, msg) | |
super(Requerimento, self).save(*args, **kwargs) | |
class Meta: | |
ordering = ["-date_add", ] | |
verbose_name = u"Requerimento" | |
verbose_name_plural = u"Requerimentos" | |
class RequerimentoParcela(models.Model): | |
requerimento = models.ForeignKey(Requerimento, related_name='parcelas') | |
object_id = models.PositiveIntegerField() | |
content_type = models.ForeignKey(ContentType) | |
parcela = generic.GenericForeignKey() | |
@property | |
def parcela_historica(self): | |
return False |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@login_required | |
def dashboard(request): | |
usuario = request.user | |
perfil_analista = None | |
try: | |
perfil_analista = PerfilAnalistaFundiario.objects.get(user_id=usuario.id) | |
except: | |
raise PermissionDenied | |
orgao = perfil_analista.orgao_publico | |
municipios = orgao.municipios.all() | |
ufs = [uf.uf for uf in orgao.estados.all()] | |
municipios = municipios | Municipio.objects.filter(uf_sigla__in=ufs) | |
ids = municipios.values_list("id_ibge", flat=True) | |
content_type_id = ContentType.objects.get_for_model(Parcela) | |
object_ids = RequerimentoParcela.objects.filter(content_type_id=content_type_id).values_list("object_id", flat=True) | |
parcelas = Parcela.objects.filter(pk__in=object_ids) | |
parcelas_analise = RequerimentoParcela.objects.filter(parcela__municipios__id_ibge__in=ids).values_list("requerimento_id", flat=True) | |
requerimentos_analise = Requerimento.objects.filter(parcelas__in=parcelas_analise, | |
status=STATUS_REQUERIMENTO_PROTOCOLADO) | |
requerimentos_pendentes = Requerimento.objects.filter(analisado_por_id=request.user.pk, | |
status=STATUS_REQUERIMENTO_EM_ANALISE) | |
return render(request, "requerimentos/dashboard.html", {"cancelamentos_analise": requerimentos_analise, | |
"cancelamentos": requerimentos_pendentes}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment