[damned-lies] Use the new Django messaging framework
- From: Claude Paroz <claudep src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies] Use the new Django messaging framework
- Date: Thu, 20 Jan 2011 19:54:14 +0000 (UTC)
commit 581283cab4e85ce89063f5de30b686c747ca6ea9
Author: Claude Paroz <claude 2xlibre net>
Date: Sat Jan 15 16:56:17 2011 +0100
Use the new Django messaging framework
common/views.py | 19 +++++++++----------
people/views.py | 13 +++++++------
settings_sample.py | 4 ++++
stats/views.py | 13 ++++++-------
vertimus/models.py | 5 +++--
5 files changed, 29 insertions(+), 25 deletions(-)
---
diff --git a/common/views.py b/common/views.py
index 1898b88..8617398 100644
--- a/common/views.py
+++ b/common/views.py
@@ -24,6 +24,7 @@ from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.contrib.auth import login, authenticate, logout
+from django.contrib import messages
from django.conf import settings
from people.models import Person
from teams.models import Role
@@ -49,15 +50,14 @@ def index(request):
}
return render_to_response('index.html', context, context_instance=RequestContext(request))
-def site_login(request, msgs=[]):
+def site_login(request):
""" Site-specific login page. Not named 'login' to not confuse with auth.login """
referer = None
openid_path = ''
- messages = list(msgs)
if request.method == 'POST':
if 'logout' in request.POST and request.POST['logout']:
logout(request)
- messages.append(_("You have been logged out."))
+ messages.success(request, _("You have been logged out."))
elif 'username' in request.POST:
username = request.POST['username']
password = request.POST['password']
@@ -65,21 +65,20 @@ def site_login(request, msgs=[]):
if user is not None:
if user.is_active:
login(request, user)
- message = _("You have been successfully logged in.")
- user.message_set.create(message=message)
+ messages.success(request, _("You have been successfully logged in."))
if Role.objects.filter(person__username=user.username).count() < 1:
message = _("You have not joined any translation team yet. You can do it from <a href=\"%(url)s\">your profile</a>.") % {
'url': reverse('person_team_join'),
}
- user.message_set.create(message=message)
+ messages.info(request, message)
if 'referer' in request.POST:
return HttpResponseRedirect(request.POST['referer'])
else:
return HttpResponseRedirect(reverse("home"))
else:
- messages.append(_("We're sorry, but your account has been disabled."))
+ messages.error(request, _("We're sorry, but your account has been disabled."))
else:
- messages.append(_("Login unsuccessful. Please verify your username and password."))
+ messages.error(request, _("Login unsuccessful. Please verify your username and password."))
else:
referer = request.META.get('HTTP_REFERER', None)
@@ -88,7 +87,6 @@ def site_login(request, msgs=[]):
context = {
'pageSection': 'home',
'openid_path': openid_path,
- 'messages': messages,
'referer': referer,
}
return render_to_response('login.html', context, context_instance=RequestContext(request))
@@ -118,4 +116,5 @@ def activate_account(request, key):
except Person.DoesNotExist:
return render_to_response('error.html', {'error':"Sorry, the key you provided is not valid."})
person.activate()
- return site_login(request, msgs=[_("Your account has been activated.")])
+ messages.success(request, _("Your account has been activated."))
+ return site_login(request)
diff --git a/people/views.py b/people/views.py
index a6f35cb..783c0a5 100644
--- a/people/views.py
+++ b/people/views.py
@@ -27,6 +27,7 @@ from django.template import RequestContext
from django.db import IntegrityError
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
+from django.contrib import messages
from django.contrib.sites.models import Site
from people.models import Person
from teams.models import Team, Role
@@ -59,7 +60,7 @@ def person_detail_change(request):
if form.is_valid():
form.save()
else:
- request.user.message_set.create(message="Sorry, the form is not valid.")
+ messages.error(request, _("Sorry, the form is not valid."))
else:
form = DetailForm(instance=person)
@@ -84,12 +85,12 @@ def person_team_join(request):
new_role = Role(team=team, person=person)
try:
new_role.save()
- request.user.message_set.create(message=_("You have successfully joined the team '%s'.") % team.get_description())
+ messages.success(request, _("You have successfully joined the team '%s'.") % team.get_description())
team.send_mail_to_coordinator(subject=ugettext_lazy("A new person joined your team"),
message=ugettext_lazy("%(name)s has just joined your translation team on %(site)s"),
messagekw = {'name': person.name, 'site': Site.objects.get_current()})
except IntegrityError:
- request.user.message_set.create(message=_("You are already member of this team."))
+ messages.info(request, _("You are already member of this team."))
else:
form = TeamJoinForm()
@@ -111,10 +112,10 @@ def person_team_leave(request, team_slug):
try:
role = Role.objects.get(team=team, person=person)
role.delete()
- person.message_set.create(message=_("You have been removed from the team '%s'.") % team.get_description())
+ messages.success(request, _("You have been removed from the team '%s'.") % team.get_description())
except Role.DoesNotExist:
# Message no i18n'ed, should never happen under normal conditions
- person.message_set.create(message="You are not a member of this team.")
+ messages.error(request, _("You are not a member of this team."))
# redirect to normal person detail
return HttpResponseRedirect(urlresolvers.reverse('person_detail_username',
args=(person.username,)))
@@ -127,7 +128,7 @@ def person_password_change(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
- request.user.message_set.create(message=_("Your password has been changed."))
+ messages.success(request, _("Your password has been changed."))
form.save()
else:
form = PasswordChangeForm(request.user)
diff --git a/settings_sample.py b/settings_sample.py
index cb02fee..725ad22 100644
--- a/settings_sample.py
+++ b/settings_sample.py
@@ -97,6 +97,7 @@ MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.transaction.TransactionMiddleware',
)
@@ -115,6 +116,7 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.humanize',
'django.contrib.markup',
+ 'django.contrib.messages',
# 'django_openid',
'south',
'common',
@@ -128,6 +130,8 @@ INSTALLED_APPS = (
INTERNAL_IPS=('127.0.0.1',)
+MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
+
if USE_DEBUG_TOOLBAR:
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
INSTALLED_APPS += ('debug_toolbar',)
diff --git a/stats/views.py b/stats/views.py
index 59506a9..4558be5 100644
--- a/stats/views.py
+++ b/stats/views.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# Copyright (c) 2008-2009 Claude Paroz <claude 2xlibre net>.
+# Copyright (c) 2008-2011 Claude Paroz <claude 2xlibre net>.
#
# This file is part of Damned Lies.
#
@@ -23,6 +23,7 @@ import os
from django.conf import settings
from django.shortcuts import render_to_response, get_object_or_404
from django.contrib.auth.decorators import login_required
+from django.contrib import messages
from django.core import serializers
from django.http import HttpResponse, Http404
from django.template import RequestContext
@@ -79,9 +80,8 @@ def module_branch(request, module_name, branch_name):
@login_required
def module_edit_branches(request, module_name):
mod = get_object_or_404(Module, name=module_name)
- messages = []
if not mod.can_edit_branches(request.user):
- request.user.message_set.create(message="Sorry, you're not allowed to edit this module's branches")
+ messages.error(request, "Sorry, you're not allowed to edit this module's branches")
return module(request, module_name)
if request.method == 'POST':
form = ModuleBranchForm(mod, request.POST)
@@ -122,11 +122,11 @@ def module_edit_branches(request, module_name):
try:
branch = Branch(module=mod, name=branch_name)
branch.save()
- messages.append("The new branch %s has been added" % branch_name)
+ messages.success(request, "The new branch %s has been added" % branch_name)
updated = True
# Send message to gnome-i18n?
except Exception, e:
- messages.append("Error adding the branch '%s': %s" % (branch_name, str(e)))
+ messages.error(request, "Error adding the branch '%s': %s" % (branch_name, str(e)))
branch = None
if branch and form.cleaned_data['new_branch_release']:
rel = Release.objects.get(pk=form.cleaned_data['new_branch_release'].pk)
@@ -136,13 +136,12 @@ def module_edit_branches(request, module_name):
if updated:
form = ModuleBranchForm(mod) # Redisplay a clean form
else:
- messages.append("Sorry, form is not valid")
+ messages.error(request, "Sorry, the form is not valid")
else:
form = ModuleBranchForm(mod)
context = {
'module': mod,
'form': form,
- 'messages': messages
}
return render_to_response('module_edit_branches.html', context, context_instance=RequestContext(request))
diff --git a/vertimus/models.py b/vertimus/models.py
index cd6ef37..2956b00 100644
--- a/vertimus/models.py
+++ b/vertimus/models.py
@@ -691,9 +691,10 @@ class ActionCI(ActionAbstract):
new_state = self._new_state()
except:
# Commit failed, state unchanged
- person.message_set.create(message=_("The commit failed. The error was: '%s'") % sys.exc_info()[1])
self._action_db.delete()
- new_state = state
+ # FIXME: somewhere the error should be catched and handled properly
+ #new_state = state
+ raise Exception(_("The commit failed. The error was: '%s'") % sys.exc_info()[1])
if state != new_state:
self.send_mail_new_state(state, new_state, (state.language.team.mailing_list,))
return new_state
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]