From: hernani
Date: Tue, 1 Jun 2010 14:42:17 +0000 (+0000)
Subject: Converted the new question notification template.
X-Git-Tag: live~781
X-Git-Url: https://git.openstreetmap.org./osqa.git/commitdiff_plain/5f47561def34f5a8a807e6e0cca5ccc4ca6a87a2
Converted the new question notification template.
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@351 0cfe37f9-358a-4d5e-be75-b63607b5c754
---
diff --git a/forum/models/user.py b/forum/models/user.py
index 62eeac3..339c02d 100644
--- a/forum/models/user.py
+++ b/forum/models/user.py
@@ -158,7 +158,7 @@ class User(BaseModel, DjangoUser):
def get_vote_count_today(self):
today = datetime.date.today()
return self.actions.filter(canceled=False, action_type__in=("voteup", "votedown"),
- action_date__range=(today - datetime.timedelta(days=1), today)).count()
+ action_date__gte=(today - datetime.timedelta(days=1))).count()
def get_reputation_by_upvoted_today(self):
today = datetime.datetime.now()
@@ -170,7 +170,7 @@ class User(BaseModel, DjangoUser):
def get_flagged_items_count_today(self):
today = datetime.date.today()
return self.actions.filter(canceled=False, action_type="flag",
- action_date__range=(today - datetime.timedelta(days=1), today)).count()
+ action_date__gte=(today - datetime.timedelta(days=1))).count()
@true_if_is_super_or_staff
def can_view_deleted_post(self, post):
diff --git a/forum/skins/default/templates/notifications/base.html b/forum/skins/default/templates/notifications/base.html
new file mode 100644
index 0000000..9783bc7
--- /dev/null
+++ b/forum/skins/default/templates/notifications/base.html
@@ -0,0 +1,49 @@
+{% load extra_filters extra_tags i18n email_tags %}
+
+{% declare %}
+ logo_location := os.path.join(str(settings.UPFILES_FOLDER), os.path.basename(str(settings.APP_LOGO)))
+{% enddeclare %}
+{% embedmedia logo_location as logo %}
+
+
+
+
+
+
+
+
+
+
+ {{ settings.APP_TITLE }}
+
+
+
+
+ {% block content%}
+ {% endblock%}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/forum/skins/default/templates/notifications/newquestion.html b/forum/skins/default/templates/notifications/newquestion.html
index a549716..b0ee0f0 100644
--- a/forum/skins/default/templates/notifications/newquestion.html
+++ b/forum/skins/default/templates/notifications/newquestion.html
@@ -1,27 +1,54 @@
-{% extends "email_base.html" %}
-{% load i18n %}
-{% load extra_tags %}
+{% load i18n extra_tags email_tags %}
-{% block content %}
- {% trans "Hello" %} {% user_var username %},
+{% declare %}
+ prefix = settings.EMAIL_SUBJECT_PREFIX
+ app_name = settings.APP_SHORT_NAME
+ question_author = question.author.username
+ app_url = settings.APP_URL
+ question_url = question.get_absolute_url()
+ question_title = question.title
+ question_tags = question.tagnames
+{% enddeclare %}
-
- {% blocktrans with question.author.username as author_name and settings.APP_SHORT_NAME as app_title and settings.APP_URL as app_url and question.get_absolute_url as question_url and question.title as question_title and question.tagnames as question_tags %}
- {{ author_name }} has just posted a new question on {{ app_title }}, with title
- {{ question_title }} and tagged {{ question_tags }}:
+{% email %}
+ {% subject %}{% blocktrans %}{{ prefix }} New question on {{ app_name }}{% endblocktrans %}{% endsubject %}
+
+ {% htmlcontent notifications/base.html %}
+
{% trans "Hello" %} {{ recipient.username }},
+
+
+ {% blocktrans %}
+ {{ question_author }} has just posted a new question on {{ app_name }}, with title
+ {{ question_title }} and tagged {{ question_tags }}:
+ {% endblocktrans %}
+
+
+
+ {{ question.html|safe }}
+
+
+ {% trans "Don't forget to come over and cast your vote." %}
+
+ {% blocktrans %}Sincerely,
+ Forum Administrator{% endblocktrans %}
+ {% endhtmlcontent %}
+
+ {% textcontent %}
+ {% trans "Hello" %} {{ recipient.username }}
+
+ {% blocktrans %}
+ {{ question_author }} has just posted a new question on {{ app_name }}, with title
+ "{{ question_title }}" and tagged {{ question_tags }}:
{% endblocktrans %}
-
-
- {{ question.html|safe }}
-
-
- {% blocktrans %}
- Don't forget to come over and cast your vote.
- {% endblocktrans %}
-
+ {{ question.body|safe }}
+
+
+ {% trans "Don't forget to come over and cast your vote." %}
+
+ {% blocktrans %}Sincerely,
+ Forum Administrator{% endblocktrans %}
+ {% endtextcontent %}
+{% endemail %}
- {% blocktrans %}Sincerely,
- Forum Administrator{% endblocktrans %}
-{% endblock %}
diff --git a/forum/subscriptions.py b/forum/subscriptions.py
index 1ee99e3..c808ce9 100644
--- a/forum/subscriptions.py
+++ b/forum/subscriptions.py
@@ -2,7 +2,7 @@ import os
import re
import datetime
from forum.models import User, Question, Comment, QuestionSubscription, SubscriptionSettings, Answer
-from forum.utils.mail import send_email
+from forum.utils.mail import send_email, send_template_email
from django.utils.translation import ugettext as _
from forum.actions import AskAction, AnswerAction, CommentAction, AcceptAnswerAction, UserJoinsAction, QuestionViewAction
from forum import settings
@@ -24,19 +24,21 @@ def create_recipients_dict(usr_list):
def question_posted(action, new):
question = action.node
- subscribers = User.objects.values('email', 'username').filter(
+ subscribers = User.objects.filter(
Q(subscription_settings__enable_notifications=True, subscription_settings__new_question='i') |
(Q(subscription_settings__new_question_watched_tags='i') &
Q(marked_tags__name__in=question.tagnames.split(' ')) &
Q(tag_selections__reason='good'))
).exclude(id=question.author.id).distinct()
- recipients = create_recipients_dict(subscribers)
+ #recipients = create_recipients_dict(subscribers)
- send_email(settings.EMAIL_SUBJECT_PREFIX + _("New question on %(app_name)s") % dict(app_name=settings.APP_SHORT_NAME),
- recipients, "notifications/newquestion.html", {
- 'question': question,
- })
+ send_template_email(subscribers, "notifications/newquestion.html", {'question': question})
+
+ #send_email(settings.EMAIL_SUBJECT_PREFIX + _("New question on %(app_name)s") % dict(app_name=settings.APP_SHORT_NAME),
+ # recipients, "notifications/newquestion.html", {
+ # 'question': question,
+ #})
if question.author.subscription_settings.questions_asked:
subscription = QuestionSubscription(question=question, user=question.author)
diff --git a/forum/templatetags/email_tags.py b/forum/templatetags/email_tags.py
index bb21973..b289837 100644
--- a/forum/templatetags/email_tags.py
+++ b/forum/templatetags/email_tags.py
@@ -1,5 +1,6 @@
from django import template
from forum import settings
+from forum.utils.mail import create_and_send_mail_messages
register = template.Library()
@@ -17,7 +18,7 @@ class MultiUserMailMessage(template.Node):
self.nodelist.render(context)
messages.append((recipient, context['subject'], context['htmlcontent'], context['textcontent'], context['embeddedmedia']))
- create_mail_messages(messages)
+ create_and_send_mail_messages(messages)
@register.tag
def email(parser, token):
@@ -90,65 +91,9 @@ def embedmedia(parser, token):
return EmbedMediaNode(location, alias)
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-from email.mime.image import MIMEImage
-from django.core.mail import DNS_NAME
-from smtplib import SMTP
-import email.Charset
-import socket
-def create_mail_messages(messages):
- sender = '%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL))
-
- connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT),
- local_hostname=DNS_NAME.get_fqdn())
-
- try:
- if (bool(settings.EMAIL_USE_TLS)):
- connection.ehlo()
- connection.starttls()
- connection.ehlo()
-
- if settings.EMAIL_HOST_USER and settings.EMAIL_HOST_PASSWORD:
- connection.login(str(settings.EMAIL_HOST_USER), str(settings.EMAIL_HOST_PASSWORD))
-
- if sender is None:
- sender = str(settings.DEFAULT_FROM_EMAIL)
-
- for recipient, subject, html, text, media in messages:
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = subject
- msgRoot['From'] = sender
- msgRoot['To'] = '%s <%s>' % (recipient.username, recipient.email)
- msgRoot.preamble = 'This is a multi-part message from %s.' % unicode(settings.APP_SHORT_NAME).encode('utf8')
-
- msgAlternative = MIMEMultipart('alternative')
- msgRoot.attach(msgAlternative)
-
- msgAlternative.attach(MIMEText(text, _charset='utf-8'))
- msgAlternative.attach(MIMEText(html, 'html', _charset='utf-8'))
-
- for alias, location in media.items():
- fp = open(location, 'rb')
- msgImage = MIMEImage(fp.read())
- fp.close()
- msgImage.add_header('Content-ID', '<'+alias+'>')
- msgRoot.attach(msgImage)
-
- try:
- connection.sendmail(sender, [recipient.email], msgRoot.as_string())
- except Exception, e:
- pass
-
- try:
- connection.quit()
- except socket.sslerror:
- connection.close()
- except Exception, e:
- print e
diff --git a/forum/utils/mail.py b/forum/utils/mail.py
index 4d11f85..8c80f53 100644
--- a/forum/utils/mail.py
+++ b/forum/utils/mail.py
@@ -2,9 +2,9 @@ import email
import socket
import os
-from email.MIMEMultipart import MIMEMultipart
-from email.MIMEText import MIMEText
-from email.MIMEImage import MIMEImage
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.mime.image import MIMEImage
from django.core.mail import DNS_NAME
from smtplib import SMTP
@@ -130,4 +130,60 @@ def send_email(subject, recipients, template, context={}, sender=None, images=[]
thread.setDaemon(True)
thread.start()
else:
- send_msg_list(msgs)
\ No newline at end of file
+ send_msg_list(msgs)
+
+
+def send_template_email(recipients, template, context):
+ t = loader.get_template(template)
+ context.update(dict(recipients=recipients, settings=settings))
+ t.render(Context(context))
+
+def create_and_send_mail_messages(messages):
+ sender = '%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL))
+
+ connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT),
+ local_hostname=DNS_NAME.get_fqdn())
+
+ try:
+ if (bool(settings.EMAIL_USE_TLS)):
+ connection.ehlo()
+ connection.starttls()
+ connection.ehlo()
+
+ if settings.EMAIL_HOST_USER and settings.EMAIL_HOST_PASSWORD:
+ connection.login(str(settings.EMAIL_HOST_USER), str(settings.EMAIL_HOST_PASSWORD))
+
+ if sender is None:
+ sender = str(settings.DEFAULT_FROM_EMAIL)
+
+ for recipient, subject, html, text, media in messages:
+ msgRoot = MIMEMultipart('related')
+ msgRoot['Subject'] = subject
+ msgRoot['From'] = sender
+ msgRoot['To'] = '%s <%s>' % (recipient.username, recipient.email)
+ msgRoot.preamble = 'This is a multi-part message from %s.' % unicode(settings.APP_SHORT_NAME).encode('utf8')
+
+ msgAlternative = MIMEMultipart('alternative')
+ msgRoot.attach(msgAlternative)
+
+ msgAlternative.attach(MIMEText(text, _charset='utf-8'))
+ msgAlternative.attach(MIMEText(html, 'html', _charset='utf-8'))
+
+ for alias, location in media.items():
+ fp = open(location, 'rb')
+ msgImage = MIMEImage(fp.read())
+ fp.close()
+ msgImage.add_header('Content-ID', '<'+alias+'>')
+ msgRoot.attach(msgImage)
+
+ try:
+ connection.sendmail(sender, [recipient.email], msgRoot.as_string())
+ except Exception, e:
+ pass
+
+ try:
+ connection.quit()
+ except socket.sslerror:
+ connection.close()
+ except Exception, e:
+ print e