Author: leidel
Date: Sat Sep 27 05:03:01 2008
New Revision: 947
Added:
trunk/local_apps/account/middleware.py
Removed:
trunk/local_apps/profiles/middleware.py
Modified:
trunk/local_apps/account/forms.py
trunk/pinax/settings.py
Log:
Moved custom LocaleMiddleware from profiles to account app and changed the
forms used for timezones and language user settings
Modified: trunk/local_apps/account/forms.py
==============================================================================
--- trunk/local_apps/account/forms.py (original)
+++ trunk/local_apps/account/forms.py Sat Sep 27 05:03:01 2008
@@ -19,6 +19,7 @@
from emailconfirmation.models import EmailAddress
from friends.models import JoinInvitation
from profiles.models import Profile
+from account.models import Account
from timezones.forms import TimeZoneField
@@ -137,6 +138,15 @@
except Profile.DoesNotExist:
self.profile = Profile(user=self.user)
+class AccountForm(UserForm):
+
+ def __init__(self, *args, **kwargs):
+ super(AccountForm, self).__init__(*args, **kwargs)
+ try:
+ self.account = Account.objects.get(user=self.user)
+ except Account.DoesNotExist:
+ self.account = Account(user=self.user)
+
class AddEmailForm(UserForm):
@@ -199,30 +209,30 @@
send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
[user.email])
return self.cleaned_data["email"]
-class ChangeTimezoneForm(ProfileForm):
+class ChangeTimezoneForm(AccountForm):
timezone = TimeZoneField(label=_("Timezone"), required=True)
def __init__(self, *args, **kwargs):
super(ChangeTimezoneForm, self).__init__(*args, **kwargs)
- self.initial.update({"timezone": self.profile.timezone})
+ self.initial.update({"timezone": self.account.timezone})
def save(self):
- self.profile.timezone = self.cleaned_data["timezone"]
- self.profile.save()
+ self.account.timezone = self.cleaned_data["timezone"]
+ self.account.save()
self.user.message_set.create(message=ugettext(u"Timezone
successfully updated."))
-class ChangeLanguageForm(ProfileForm):
+class ChangeLanguageForm(AccountForm):
language = forms.ChoiceField(label=_("Language"), required=True,
choices=settings.LANGUAGES)
def __init__(self, *args, **kwargs):
super(ChangeLanguageForm, self).__init__(*args, **kwargs)
- self.initial.update({"language": self.profile.language})
+ self.initial.update({"language": self.account.language})
def save(self):
- self.profile.language = self.cleaned_data["language"]
- self.profile.save()
+ self.account.language = self.cleaned_data["language"]
+ self.account.save()
self.user.message_set.create(message=ugettext(u"Language
successfully updated."))
Added: trunk/local_apps/account/middleware.py
==============================================================================
--- (empty file)
+++ trunk/local_apps/account/middleware.py Sat Sep 27 05:03:01 2008
@@ -0,0 +1,31 @@
+from django.utils.cache import patch_vary_headers
+from django.utils import translation
+from account.models import Account
+
+class LocaleMiddleware(object):
+ """
+ This is a very simple middleware that parses a request
+ and decides what translation object to install in the current
+ thread context depending on the user's account. This allows pages
+ to be dynamically translated to the language the user desires
+ (if the language is available, of course).
+ """
+
+ def get_language_for_user(self, request):
+ if request.user.is_authenticated():
+ try:
+ account = Account.objects.get(user=request.user)
+ return account.language
+ except (Account.DoesNotExist, Account.MultipleObjectsReturned):
+ pass
+ return translation.get_language_from_request(request)
+
+ def process_request(self, request):
+ translation.activate(self.get_language_for_user(request))
+ request.LANGUAGE_CODE = translation.get_language()
+
+ def process_response(self, request, response):
+ patch_vary_headers(response, ('Accept-Language',))
+ response['Content-Language'] = translation.get_language()
+ translation.deactivate()
+ return response
Modified: trunk/pinax/settings.py
==============================================================================
--- trunk/pinax/settings.py (original)
+++ trunk/pinax/settings.py Sat Sep 27 05:03:01 2008
@@ -66,7 +66,7 @@
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_openidconsumer.middleware.OpenIDMiddleware',
- 'profiles.middleware.LocaleMiddleware',
+ 'account.middleware.LocaleMiddleware',
'django.middleware.doc.XViewMiddleware',
'djangologging.middleware.LoggingMiddleware',
'pagination.middleware.PaginationMiddleware',
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---