[extensions-web: 54/75] Send an email when a version is submitted for review.
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [extensions-web: 54/75] Send an email when a version is submitted for review.
- Date: Fri, 23 Sep 2011 03:18:58 +0000 (UTC)
commit 6642025e9df8a4c3661bd10bf26e15d0a8c6cd6d
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Sep 22 01:01:17 2011 -0400
Send an email when a version is submitted for review.
sweettooth/review/models.py | 11 ++++++++++-
sweettooth/review/views.py | 37 ++++++++++++++++++++++++++++++++++++-
sweettooth/settings.py | 2 ++
3 files changed, 48 insertions(+), 2 deletions(-)
---
diff --git a/sweettooth/review/models.py b/sweettooth/review/models.py
index da8ed78..498f54b 100644
--- a/sweettooth/review/models.py
+++ b/sweettooth/review/models.py
@@ -1,9 +1,18 @@
-from django.contrib.auth.models import User
+from django.contrib.auth.models import User, Permission, Group
from django.db import models
+from django.db.models import Q
from extensions import models as extensions_models
+def get_all_reviewers():
+ perm = Permission.objects.get(codename="can-review-extensions")
+
+ # Dark magic to get all the users with a specific permission
+ # Thanks to <schinckel> in #django
+ groups = Group.objects.filter(permissions=perm)
+ return User.objects.filter(Q(is_superuser=True)|Q(user_permissions=perm)|Q(groups__in=groups)).distinct()
+
class CodeReview(models.Model):
reviewer = models.ForeignKey(User)
date = models.DateTimeField(auto_now_add=True)
diff --git a/sweettooth/review/views.py b/sweettooth/review/views.py
index 8c6c1c5..19b6558 100644
--- a/sweettooth/review/views.py
+++ b/sweettooth/review/views.py
@@ -9,14 +9,18 @@ import pygments.util
import pygments.lexers
import pygments.formatters
+from django.conf import settings
from django.contrib import messages
+from django.core.mail import send_mail
+from django.core.urlresolvers import reverse
+from django.dispatch import receiver
from django.http import HttpResponse, HttpResponseForbidden, Http404
from django.shortcuts import redirect
from django.utils.safestring import mark_safe
from django.views.generic import View, DetailView, ListView
from django.views.generic.detail import SingleObjectMixin
-from review.models import CodeReview
+from review.models import CodeReview, get_all_reviewers
from extensions import models
class AjaxGetFilesView(SingleObjectMixin, View):
@@ -125,3 +129,34 @@ class ReviewListView(ListView):
return HttpResponseForbidden()
return super(ReviewListView, self).get(request, *args, **kwargs)
+
+
+on_submitted_subject = u"""
+GNOME Shell Extensions \N{EM DASH} New review request: "%(name)s", v%(ver)d
+""".strip()
+
+on_submitted_template = u"""
+A new extension version, "%(name)s", version %(ver)d has been submitted for review by %(creator)s.
+
+Review the extension at %(url)s
+
+\N{EM DASH}
+
+This email was sent automatically by GNOME Shell Extensions. Do not reply.
+""".strip()
+
+ receiver(models.submitted_for_review)
+def send_email_on_submitted(sender, version):
+ extension = version.extension
+
+ data = dict(ver=version.version,
+ name=extension.name,
+ creator=extension.creator,
+ url=reverse('review-version', kwargs=dict(pk=version.pk)))
+
+ reviewers = get_all_reviewers().values_list('email', flat=True)
+
+ send_mail(subject=on_submitted_subject % data,
+ message=on_submitted_template % data,
+ from_email=settings.EMAIL_SENDER,
+ recipient_list=reviewers)
diff --git a/sweettooth/settings.py b/sweettooth/settings.py
index 71ef1ed..00557d3 100644
--- a/sweettooth/settings.py
+++ b/sweettooth/settings.py
@@ -180,6 +180,8 @@ LOGGING = {
}
}
+EMAIL_SENDER = "noreply extensions gnome org"
+
try:
from local_settings import *
except ImportError:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]