Browse Source

Inserindo ações para definir o status de um ou mais diagnósticos como publicado ou não publicado. Ao publicar o mesmo, será enviado um email para o responsável que criou e editou esse registro, notificando o que foi feito com esses dados.

diagnosticos
Gilson Filho 13 years ago
parent
commit
ef366238db
  1. 43
      sigi/apps/diagnosticos/admin.py
  2. 46
      sigi/apps/diagnosticos/models.py
  3. 2
      sigi/apps/diagnosticos/views.py
  4. 8
      sigi/settings.py
  5. 8
      sigi/templates/diagnosticos/email_diagnostico_atualizado.txt
  6. 10
      sigi/templates/diagnosticos/email_diagnostico_publicado.txt

43
sigi/apps/diagnosticos/admin.py

@ -4,35 +4,59 @@ from eav.admin import BaseEntityAdmin, BaseSchemaAdmin
from sigi.apps.diagnosticos.models import Diagnostico, Pergunta, Escolha, Equipe, Anexo, Categoria
from sigi.apps.diagnosticos.forms import DiagnosticoForm
"""
Actions do Admin
"""
# Ação de alterar o status das publicações no modo Draft para Publicado.
def alterar_status_publicacao(self, request, queryset):
for registro in queryset:
diagnostico = Diagnostico.objects.get(pk=registro.id)
diagnostico.status = True
diagnostico.save()
# Enviando o email avisando que o diagnóstico foi publicado
diagnostico.email_diagnostico_publicado(diagnostico.responsavel.email_pessoal, request.get_host())
self.message_user(request, "Diagnóstico(s) publicado(s) com sucesso!")
alterar_status_publicacao.short_description = u"""
Definir diagnósticos como publicado"""
# Ação de alterar o status das publicações no modo Publicado para Draft.
def alterar_status_draft(self, request, queryset):
queryset.update(status=False)
alterar_status_draft.short_description = u"""
Definir diagnósticos como não publicado"""
class EquipeInline(admin.TabularInline):
model = Equipe
extra = 4
class AnexosInline(admin.TabularInline):
model = Anexo
extra = 2
exclude = ['data_pub',]
exclude = ['data_pub', ]
class AnexoAdmin(admin.ModelAdmin):
date_hierarchy = 'data_pub'
exclude = ['data_pub',]
exclude = ['data_pub', ]
list_display = ('arquivo', 'descricao', 'data_pub', 'diagnostico')
raw_id_fields = ('diagnostico',)
search_fields = ('descricao', 'diagnostico__id', 'arquivo',
'diagnostico__casa_legislativa__nome')
# Ação de alterar o status das publicações no modo Draft.
def alterar_status_publicacao(modeladmin, request, queryset):
queryset.update(status=True)
alterar_status_publicacao.short_description = u"""
Publicar diagnósticos selecionados"""
class DiagnosticoAdmin(BaseEntityAdmin):
form = DiagnosticoForm
date_hierarchy = 'data_questionario'
actions = [alterar_status_publicacao]
actions = [alterar_status_publicacao, alterar_status_draft]
inlines = (EquipeInline, AnexosInline)
list_display = ('casa_legislativa', 'data_questionario', 'status')
raw_id_fields = ('casa_legislativa', 'responsavel')
eav_fieldsets = [
@ -59,6 +83,7 @@ class PerguntaAdmin (BaseSchemaAdmin):
list_display = ('title', 'categoria', 'datatype', 'help_text', 'required')
list_filter = ('datatype', 'categoria', 'required')
class EscolhaAdmin(admin.ModelAdmin):
search_fields = ('title',)
list_display = ('title', 'schema', 'schema_to_open')

46
sigi/apps/diagnosticos/models.py

@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from django.db import models
from sigi.apps.utils import SearchField
from sigi.apps.utils.email import enviar_email
from eav.models import BaseChoice, BaseEntity, BaseSchema, BaseAttribute
@ -23,7 +25,7 @@ class Diagnostico(BaseEntity):
blank=True,
)
data_questionario = models.DateField(
'data do questionario',
u'data do questionário',
null=True,
blank=True,
)
@ -35,9 +37,48 @@ class Diagnostico(BaseEntity):
status = models.BooleanField(u'status do diagnóstico', default=False)
responsavel = models.ForeignKey('servidores.Servidor', verbose_name=u'responsável')
class Meta:
verbose_name, verbose_name_plural = u'diagnóstico', u'diagnósticos'
def email_diagnostico_publicado(self, from_email, host):
"""Enviando email quando o diagnóstico for publicado. Os
argumentos acima são:
* from_email - Email de remetente
* host - O Host do sistema, para ser usado na
construção do endereço do diagnóstico
"""
enviar_email(from_email, u"Diagnóstico publicado",
'diagnosticos/email_diagnostico_publicado.txt',
{
'responsavel': self.responsavel.nome_completo,
'casa_legislativa': self.casa_legislativa,
'data_diagnostico': self.data_questionario,
'host': host,
'url_diagnostico': self.get_absolute_url(),
'status': u"Publicado"
}
)
def email_diagnostico_alterado(self, from_email, host):
"""Enviando email quando o status do diagnóstico
for alterado. Os argumentos acima são:
* from_email - Email do destinatário
* host - O Host do sistema, para ser usado na
construção do endereço do diagnóstico
"""
enviar_email(from_email, u"Diagnóstico alterado",
'diagnosticos/email_diagnostico_alterado.txt',
{
'servidor': self.responsavel.nome_completo,
'casa_legislativa': self.casa_legislativa,
'data_diagnostico': self.data_questionario,
'host': host,
'url_diagnostico': self.get_absolute_url,
'status': "Alterado"
}
)
@classmethod
def get_schemata_for_model(self):
return Pergunta.objects.all()
@ -45,6 +86,9 @@ class Diagnostico(BaseEntity):
def __unicode__(self):
return str(self.casa_legislativa)
def get_absolute_url(self):
return "/diagnosticos/diagnostico/%i/" % (self.id, )
class Categoria(models.Model):
""" Modelo para representar a categoria de uma pergunta

2
sigi/apps/diagnosticos/views.py

@ -14,7 +14,7 @@ def lista(request):
# TODO Implementar pesquisa de diagnosticos, em que esses registros
# devem ser criado pelo servidor logado.
diagnosticos = Diagnostico.objects.all()
diagnosticos = Diagnostico.objects.filter(status=False)
context = RequestContext(request, {'diagnosticos': diagnosticos})
return render_to_response('diagnosticos/diagnosticos_list.html', context)

8
sigi/settings.py

@ -29,6 +29,14 @@ DEFAULT_FROM_EMAIL = 'noreply@localhost'
INTERNAL_IPS = ('127.0.0.1',)
DEFAULT_FROM_EMAIL = ''
EMAIL_SUBJECT_PREFIX = u'[SIGI]'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = True
#DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'devel.db'

8
sigi/templates/diagnosticos/email_diagnostico_atualizado.txt

@ -0,0 +1,8 @@
Foi atualizado um diagnóstico no SIGI. Os dados do diagnóstico são:
Criador do Diagnóstico: {{ servidor }}
Dados do Diagnóstico: {{ casa_legislativa }}
Data do Diagnóstico: {{ data_diagnostico }}
Data do Relatório do Diagnóstico: {{ data_relatorio_diagnostico }}
O seu status está como {{ status }}

10
sigi/templates/diagnosticos/email_diagnostico_publicado.txt

@ -0,0 +1,10 @@
Olá {{ responsavel }}
Foi publicado um diagnóstico no SIGI.
Os dados do diagnóstico são:
Dados do Diagnóstico: {{ casa_legislativa }}
Data do Diagnóstico: {{ data_diagnostico }}
Para mais detalhes, acesse:
http://{{ host }}{{ url_diagnostico }}
Loading…
Cancel
Save