From ef366238db299dde710290da8ca832a44b5bb89c Mon Sep 17 00:00:00 2001 From: Gilson Filho Date: Tue, 29 Nov 2011 13:59:07 +0000 Subject: [PATCH] =?UTF-8?q?Inserindo=20a=C3=A7=C3=B5es=20para=20definir=20?= =?UTF-8?q?o=20status=20de=20um=20ou=20mais=20diagn=C3=B3sticos=20como=20p?= =?UTF-8?q?ublicado=20ou=20n=C3=A3o=20publicado.=20Ao=20publicar=20o=20mes?= =?UTF-8?q?mo,=20ser=C3=A1=20enviado=20um=20email=20para=20o=20respons?= =?UTF-8?q?=C3=A1vel=20que=20criou=20e=20editou=20esse=20registro,=20notif?= =?UTF-8?q?icando=20o=20que=20foi=20feito=20com=20esses=20dados.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/diagnosticos/admin.py | 45 ++++++++++++++---- sigi/apps/diagnosticos/models.py | 46 ++++++++++++++++++- sigi/apps/diagnosticos/views.py | 2 +- sigi/settings.py | 8 ++++ .../email_diagnostico_atualizado.txt | 8 ++++ .../email_diagnostico_publicado.txt | 10 ++++ 6 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 sigi/templates/diagnosticos/email_diagnostico_atualizado.txt create mode 100644 sigi/templates/diagnosticos/email_diagnostico_publicado.txt diff --git a/sigi/apps/diagnosticos/admin.py b/sigi/apps/diagnosticos/admin.py index 2f56d3a..3f7b070 100644 --- a/sigi/apps/diagnosticos/admin.py +++ b/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,8 +83,9 @@ class PerguntaAdmin (BaseSchemaAdmin): list_display = ('title', 'categoria', 'datatype', 'help_text', 'required') list_filter = ('datatype', 'categoria', 'required') + class EscolhaAdmin(admin.ModelAdmin): - search_fields = ('title',) + search_fields = ('title',) list_display = ('title', 'schema', 'schema_to_open') raw_id_fields = ('schema', 'schema_to_open') ordering = ('schema', 'title') diff --git a/sigi/apps/diagnosticos/models.py b/sigi/apps/diagnosticos/models.py index 311773f..033c886 100644 --- a/sigi/apps/diagnosticos/models.py +++ b/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 diff --git a/sigi/apps/diagnosticos/views.py b/sigi/apps/diagnosticos/views.py index 8a02a1b..96b0771 100644 --- a/sigi/apps/diagnosticos/views.py +++ b/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) diff --git a/sigi/settings.py b/sigi/settings.py index 263ab90..68e2d91 100644 --- a/sigi/settings.py +++ b/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' diff --git a/sigi/templates/diagnosticos/email_diagnostico_atualizado.txt b/sigi/templates/diagnosticos/email_diagnostico_atualizado.txt new file mode 100644 index 0000000..f917c67 --- /dev/null +++ b/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 }} diff --git a/sigi/templates/diagnosticos/email_diagnostico_publicado.txt b/sigi/templates/diagnosticos/email_diagnostico_publicado.txt new file mode 100644 index 0000000..00cb012 --- /dev/null +++ b/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 }}