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
-~----------~----~----~----~------~----~------~--~---

Reply via email to