From 109ed579fa27a9be8c876a5c216401f32745d2a5 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 23 Jan 2015 15:43:31 +0800 Subject: [PATCH] Enable user provide name in register --- seahub/base/accounts.py | 38 ++++++++++++++----- seahub/profile/models.py | 2 +- .../registration/registration_form.html | 11 +++++- thirdpart/registration/views.py | 12 +++--- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/seahub/base/accounts.py b/seahub/base/accounts.py index 49d9617f54..ebed4d8a2a 100644 --- a/seahub/base/accounts.py +++ b/seahub/base/accounts.py @@ -6,7 +6,7 @@ from django.conf import settings from django.contrib.sites.models import RequestSite from django.contrib.sites.models import Site -from seahub.auth.models import get_hexdigest, check_password +from seahub.auth.models import get_hexdigest from seahub.auth import login from registration import signals #from registration.forms import RegistrationForm @@ -329,7 +329,7 @@ class RegistrationBackend(object): site = RequestSite(request) from registration.models import RegistrationProfile - if settings.ACTIVATE_AFTER_REGISTRATION == True: + if settings.ACTIVATE_AFTER_REGISTRATION is True: # since user will be activated after registration, # so we will not use email sending, just create acitvated user new_user = RegistrationProfile.objects.create_active_user(username, email, @@ -350,10 +350,10 @@ class RegistrationBackend(object): # ccnet_threaded_rpc.add_binding(new_user.username, userid) if settings.REQUIRE_DETAIL_ON_REGISTRATION: - name = kwargs['name'] - department = kwargs['department'] - telephone = kwargs['telephone'] - note = kwargs['note'] + name = kwargs.get('name', '') + department = kwargs.get('department', '') + telephone = kwargs.get('telephone', '') + note = kwargs.get('note', '') Profile.objects.add_or_update(new_user.username, name, note) DetailedProfile.objects.add_detailed_profile(new_user.username, department, @@ -499,11 +499,29 @@ class RegistrationForm(forms.Form): class DetailedRegistrationForm(RegistrationForm): attrs_dict = { 'class': 'input' } + try: + from seahub.settings import REGISTRATION_DETAILS_MAP + except: + REGISTRATION_DETAILS_MAP = None + + if REGISTRATION_DETAILS_MAP: + name_required = REGISTRATION_DETAILS_MAP.get('name', False) + dept_required = REGISTRATION_DETAILS_MAP.get('department', False) + tele_required = REGISTRATION_DETAILS_MAP.get('telephone', False) + note_required = REGISTRATION_DETAILS_MAP.get('note', False) + else: + # Backward compatible + name_required = dept_required = tele_required = note_required = True + name = forms.CharField(widget=forms.TextInput( - attrs=dict(attrs_dict, maxlength=64)), label=_("name")) + attrs=dict(attrs_dict, maxlength=64)), label=_("name"), + required=name_required) department = forms.CharField(widget=forms.TextInput( - attrs=dict(attrs_dict, maxlength=512)), label=_("department")) + attrs=dict(attrs_dict, maxlength=512)), label=_("department"), + required=dept_required) telephone = forms.CharField(widget=forms.TextInput( - attrs=dict(attrs_dict, maxlength=100)), label=_("telephone")) + attrs=dict(attrs_dict, maxlength=100)), label=_("telephone"), + required=tele_required) note = forms.CharField(widget=forms.TextInput( - attrs=dict(attrs_dict, maxlength=100)), label=_("note")) + attrs=dict(attrs_dict, maxlength=100)), label=_("note"), + required=note_required) diff --git a/seahub/profile/models.py b/seahub/profile/models.py index a00f879f46..74b86630f7 100644 --- a/seahub/profile/models.py +++ b/seahub/profile/models.py @@ -8,7 +8,7 @@ from seahub.profile.settings import EMAIL_ID_CACHE_PREFIX, EMAIL_ID_CACHE_TIMEOU from registration.signals import user_registered class ProfileManager(models.Manager): - def add_or_update(self, username, nickname, intro, lang_code=None): + def add_or_update(self, username, nickname, intro='', lang_code=None): """Add or update user profile. """ try: diff --git a/seahub/templates/registration/registration_form.html b/seahub/templates/registration/registration_form.html index 24085614d0..a4b9e10b6c 100644 --- a/seahub/templates/registration/registration_form.html +++ b/seahub/templates/registration/registration_form.html @@ -14,7 +14,7 @@

{% trans "Welcome back, you are already signed in." %}

{% else %}
{% csrf_token %} - {% if form.name %} + {% if form.name.field.required %} {{ form.name }} {{ form.name.errors }} {% endif %} @@ -26,11 +26,18 @@
{{ form.password2 }} {{ form.password2.errors }} - {% if form.department and form.telephone %} + + {% if form.department.field.required %} {{ form.department }} {{ form.department.errors }} + {% endif %} + + {% if form.telephone.field.required %} {{ form.telephone }} {{ form.telephone.errors }} + {% endif %} + + {% if form.note.field.required %} {{ form.note }} {{ form.note.errors }} {% endif %} diff --git a/thirdpart/registration/views.py b/thirdpart/registration/views.py index 90cc49d7c1..dc36c4f9c6 100644 --- a/thirdpart/registration/views.py +++ b/thirdpart/registration/views.py @@ -205,9 +205,9 @@ def register(request, backend, success_url=None, form_class=None, if src: form = form_class(initial={'email': src}) - return render_to_response(template_name, - { 'form': form, - 'min_len': USER_PASSWORD_MIN_LENGTH, - 'strong_pwd_required': USER_STRONG_PASSWORD_REQUIRED, - 'level': USER_PASSWORD_STRENGTH_LEVEL, - }, context_instance=context) + return render_to_response(template_name, { + 'form': form, + 'min_len': USER_PASSWORD_MIN_LENGTH, + 'strong_pwd_required': USER_STRONG_PASSWORD_REQUIRED, + 'level': USER_PASSWORD_STRENGTH_LEVEL, + }, context_instance=context)