language choice

This commit is contained in:
alafin 2009-03-03 18:30:41 +02:00
parent c449fb65b8
commit 957c8ea119
7 changed files with 72 additions and 18 deletions

View file

@ -103,7 +103,7 @@ class EssentialsProfileForm(forms.ModelForm):
profile.time_zone = self.cleaned_data['time_zone'] profile.time_zone = self.cleaned_data['time_zone']
profile.language = self.cleaned_data['language'] profile.language = self.cleaned_data['language']
user.save() user.save()
return profile.save() return profile
class PersonalProfileForm(forms.ModelForm): class PersonalProfileForm(forms.ModelForm):
@ -181,7 +181,6 @@ class PrivacyProfileForm(forms.ModelForm):
# ) # )
# #
# def save(self): # def save(self):
# print self.forums
# return self.forums # return self.forums
class UploadAvatarForm(forms.ModelForm): class UploadAvatarForm(forms.ModelForm):

View file

@ -1,7 +1,23 @@
from django.core.cache import cache from django.core.cache import cache
from django.utils import translation
from apps.forum import settings as forum_settings from apps.forum import settings as forum_settings
class LastLoginMiddleware(object): class LastLoginMiddleware(object):
def process_request(self, request): def process_request(self, request):
cache.set(str(request.user.id), True, forum_settings.USER_ONLINE_TIMEOUT) cache.set(str(request.user.id), True, forum_settings.USER_ONLINE_TIMEOUT)
class ForumMiddleware(object):
def process_request(self, request):
if request.user.is_authenticated():
profile = request.user.forum_profile
language = translation.get_language_from_request(request)
if not profile.language:
profile.language = language
profile.save()
if profile.language and profile.language != language:
request.session['django_language'] = profile.language
translation.activate(profile.language)
request.LANGUAGE_CODE = translation.get_language()

View file

@ -16,11 +16,6 @@ from apps.forum.fields import AutoOneToOneField, ExtendedImageField
from apps.forum.util import urlize, smiles from apps.forum.util import urlize, smiles
from apps.forum import settings as forum_settings from apps.forum import settings as forum_settings
LANGUAGE_CHOICES = (
('en', 'English'),
('ru', 'Russian'),
)
TZ_CHOICES = [(float(x[0]), x[1]) for x in ( TZ_CHOICES = [(float(x[0]), x[1]) for x in (
(-12, '-12'), (-11, '-11'), (-10, '-10'), (-9.5, '-09.5'), (-9, '-09'), (-12, '-12'), (-11, '-11'), (-10, '-10'), (-9.5, '-09.5'), (-9, '-09'),
(-8.5, '-08.5'), (-8, '-08 PST'), (-7, '-07 MST'), (-6, '-06 CST'), (-8.5, '-08.5'), (-8, '-08 PST'), (-7, '-07 MST'), (-6, '-06 CST'),
@ -262,7 +257,7 @@ class Profile(models.Model):
location = models.CharField(_('Location'), max_length=30, blank=True, default='') location = models.CharField(_('Location'), max_length=30, blank=True, default='')
signature = models.TextField(_('Signature'), blank=True, default='', max_length=forum_settings.SIGNATURE_MAX_LENGTH) signature = models.TextField(_('Signature'), blank=True, default='', max_length=forum_settings.SIGNATURE_MAX_LENGTH)
time_zone = models.FloatField(_('Time zone'), choices=TZ_CHOICES, default=float(forum_settings.DEFAULT_TIME_ZONE)) time_zone = models.FloatField(_('Time zone'), choices=TZ_CHOICES, default=float(forum_settings.DEFAULT_TIME_ZONE))
language = models.CharField(_('Language'), max_length=3, blank=True, default='en', choices=LANGUAGE_CHOICES) language = models.CharField(_('Language'), max_length=3, blank=True, default='', choices=settings.LANGUAGES)
avatar = ExtendedImageField(_('Avatar'), blank=True, default='', upload_to=forum_settings.AVATARS_UPLOAD_TO, width=forum_settings.AVATAR_WIDTH, height=forum_settings.AVATAR_HEIGHT) avatar = ExtendedImageField(_('Avatar'), blank=True, default='', upload_to=forum_settings.AVATARS_UPLOAD_TO, width=forum_settings.AVATAR_WIDTH, height=forum_settings.AVATAR_HEIGHT)
theme = models.CharField(_('Theme'), choices=THEME_CHOICES, max_length=80, default='') theme = models.CharField(_('Theme'), choices=THEME_CHOICES, max_length=80, default='')
show_avatar = models.BooleanField(_('Show avatar'), blank=True, default=True) show_avatar = models.BooleanField(_('Show avatar'), blank=True, default=True)

View file

@ -3,6 +3,33 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<div id="content" class="flex">
<h1>Select user to change</h1>
<div id="content-main">
<ul class="object-tools"><li><a href="add/" class="addlink">Add user</a></li></ul>
<div class="module filtered" id="changelist">
<div id="toolbar"><form id="changelist-search" action="" method="get">
<div><!-- DIV needed for valid HTML -->
<label for="searchbar"><img src="/media/admin/img/admin/icon_searchbox.png" alt="Search"></label>
<input size="40" name="q" value="" id="searchbar" type="text">
<input value="Go" type="submit">
</div>
</form></div>
<script type="text/javascript">document.getElementById("searchbar").focus();</script>
<div class="blockform"> <div class="blockform">
<h2><span>{% trans "User search" %}</span></h2> <h2><span>{% trans "User search" %}</span></h2>
<div class="box"> <div class="box">

View file

@ -8,14 +8,16 @@ from django.shortcuts import render_to_response
from django.template import RequestContext from django.template import RequestContext
from django.http import HttpResponse from django.http import HttpResponse
from django.utils.functional import Promise from django.utils.functional import Promise
from django.utils.translation import force_unicode from django.utils.translation import force_unicode, check_for_language
from django.utils.simplejson import JSONEncoder from django.utils.simplejson import JSONEncoder
from django import forms from django import forms
from django.template.defaultfilters import urlize as django_urlize from django.template.defaultfilters import urlize as django_urlize
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.conf import settings
from apps.forum import settings as forum_settings from apps.forum import settings as forum_settings
#compile smiles regexp #compile smiles regexp
_SMILES = [(re.compile(smile_re), path) for smile_re, path in forum_settings.SMILES] _SMILES = [(re.compile(smile_re), path) for smile_re, path in forum_settings.SMILES]

View file

@ -10,8 +10,9 @@ from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import connection from django.db import connection
from django.core.cache import cache from django.core.cache import cache
from django.utils import translation
from apps.forum.util import render_to, paged, build_form, paginate from apps.forum.util import render_to, paged, build_form, paginate, set_language
from apps.forum.models import Category, Forum, Topic, Post, Profile, Read, Reputation, Report, PrivateMessage from apps.forum.models import Category, Forum, Topic, Post, Profile, Read, Reputation, Report, PrivateMessage
from apps.forum.forms import AddPostForm, EditPostForm, UserSearchForm, PostSearchForm, ReputationForm, MailToForm, EssentialsProfileForm, PersonalProfileForm, MessagingProfileForm, PersonalityProfileForm, DisplayProfileForm, PrivacyProfileForm, ReportForm, UploadAvatarForm, CreatePMForm from apps.forum.forms import AddPostForm, EditPostForm, UserSearchForm, PostSearchForm, ReputationForm, MailToForm, EssentialsProfileForm, PersonalProfileForm, MessagingProfileForm, PersonalityProfileForm, DisplayProfileForm, PrivacyProfileForm, ReportForm, UploadAvatarForm, CreatePMForm
from apps.forum.markups import mypostmarkup from apps.forum.markups import mypostmarkup
@ -367,7 +368,9 @@ def user(request, username):
elif section == 'essentials': elif section == 'essentials':
form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user=user) form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user=user)
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
form.save() profile = form.save()
set_language(request, profile.language)
return {'active_menu':'essentials', return {'active_menu':'essentials',
'profile': user, 'profile': user,
'form': form, 'form': form,
@ -393,7 +396,8 @@ def user(request, username):
else: else:
form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user=user) form = build_form(EssentialsProfileForm, request, instance=user.forum_profile, user=user)
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
form.save() profile = form.save()
set_language(request, profile.language)
return {'active_menu':'essentials', return {'active_menu':'essentials',
'profile': user, 'profile': user,
'form': form, 'form': form,

View file

@ -1,7 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os.path import os.path
import sys
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__)) PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
DEVELOPMENT = True
if DEVELOPMENT:
sys.path.append(os.path.join(PROJECT_ROOT, 'apps'))
DEBUG = True DEBUG = True
TEMPLATE_DEBUG = DEBUG TEMPLATE_DEBUG = DEBUG
@ -30,6 +35,11 @@ TIME_ZONE = 'Europe/Kiev'
# http://www.i18nguy.com/unicode/language-identifiers.html # http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('en', 'English'),
('ru', 'Russian'),
)
SITE_ID = 1 SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not # If you set this to False, Django will make some optimizations so as not
@ -80,8 +90,8 @@ MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware', 'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'apps.account.middleware.AuthKeyMiddleware', 'account.middleware.AuthKeyMiddleware',
'apps.forum.middleware.LastLoginMiddleware', 'forum.middleware.LastLoginMiddleware',
) )
ROOT_URLCONF = 'urls' ROOT_URLCONF = 'urls'
@ -101,9 +111,10 @@ INSTALLED_APPS = (
'django.contrib.sitemaps', 'django.contrib.sitemaps',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.admindocs', 'django.contrib.admindocs',
'apps.account', 'account',
'apps.captcha', 'captcha',
'apps.forum', 'forum',
'djapian',
) )
FORCE_SCRIPT_NAME = '' FORCE_SCRIPT_NAME = ''