Просмотр исходного кода

Implement language selection on user registration

Closes #141. Allows user to select from available languages at
registration and default selection is the default forum language.
Alec Nikolas Reiter 9 лет назад
Родитель
Сommit
81dc49fe62
3 измененных файлов с 15 добавлено и 3 удалено
  1. 6 3
      flaskbb/auth/forms.py
  2. 6 0
      flaskbb/auth/views.py
  3. 3 0
      flaskbb/templates/auth/register.html

+ 6 - 3
flaskbb/auth/forms.py

@@ -12,11 +12,10 @@ from datetime import datetime
 
 from flask_wtf import Form, RecaptchaField
 from wtforms import (StringField, PasswordField, BooleanField, HiddenField,
-                     SubmitField)
+                     SubmitField, SelectField)
 from wtforms.validators import (DataRequired, InputRequired, Email, EqualTo,
                                 regexp, ValidationError)
 from flask_babelex import lazy_gettext as _
-
 from flaskbb.user.models import User
 
 USERNAME_RE = r'^[\w.+-]+$'
@@ -52,6 +51,9 @@ class RegisterForm(Form):
 
     confirm_password = PasswordField(_('Confirm Password'))
 
+
+    language = SelectField(_('Language'))
+
     accept_tos = BooleanField(_("I accept the Terms of Service"), default=True)
 
     submit = SubmitField(_("Register"))
@@ -71,7 +73,8 @@ class RegisterForm(Form):
                     email=self.email.data,
                     password=self.password.data,
                     date_joined=datetime.utcnow(),
-                    primary_group_id=4)
+                    primary_group_id=4,
+                    language=self.language.data)
         return user.save()
 
 

+ 6 - 0
flaskbb/auth/views.py

@@ -19,6 +19,8 @@ from flaskbb.email import send_reset_token
 from flaskbb.auth.forms import (LoginForm, ReauthForm, ForgotPasswordForm,
                                 ResetPasswordForm)
 from flaskbb.user.models import User
+from flaskbb.fixtures.settings import available_languages
+from flaskbb.utils.settings import flaskbb_config
 
 auth = Blueprint("auth", __name__)
 
@@ -89,6 +91,10 @@ def register():
         from flaskbb.auth.forms import RegisterForm
         form = RegisterForm(request.form)
 
+    form.language.choices = available_languages()
+    form.language.default = flaskbb_config['DEFAULT_LANGUAGE']
+    form.process()  # needed because a default is overriden
+
     if form.validate_on_submit():
         user = form.save()
         login_user(user)

+ 3 - 0
flaskbb/templates/auth/register.html

@@ -17,6 +17,9 @@
         {{ horizontal_field(form.recaptcha) }}
     {% endif %}
 
+    {{ horizontal_field(form.language) }}
+
+
     {{ horizontal_field(form.accept_tos)}}
     {{ horizontal_field(form.submit)}}