summaryrefslogtreecommitdiffstats
path: root/mediawiki/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediawiki/forms.py')
-rw-r--r--mediawiki/forms.py164
1 files changed, 0 insertions, 164 deletions
diff --git a/mediawiki/forms.py b/mediawiki/forms.py
deleted file mode 100644
index bac39b5a..00000000
--- a/mediawiki/forms.py
+++ /dev/null
@@ -1,164 +0,0 @@
-from utils.forms import NextUrlField, UserNameField, UserEmailField, SetPasswordForm
-from django import forms
-from django.forms import ValidationError
-from models import User as MWUser
-from models import TITLE_CHOICES
-from django.contrib.auth.models import User
-from django.utils.translation import ugettext as _
-from django.utils.safestring import mark_safe
-from django.contrib.formtools.wizard import FormWizard
-from forum.forms import EditUserEmailFeedsForm, SimpleEmailSubscribeForm
-from django.forms import ValidationError
-from recaptcha_django import ReCaptchaField
-from utils.forms import StrippedNonEmptyCharField
-from forum.templatetags import extra_tags as forum_extra_tags
-
-#make better translations in your language django.po
-EMAIL_FEED_CHOICES = (
- ('y',_('okay, let\'s try!')),
- ('n',_('no OSQA community email please, thanks'))
-)
-
-wiki_account_taken_msg = _('Wiki site already has this account, if it is yours perhaps you can '
- 'just try to log in with it?<br/>'
- 'Otherwise, please pick another login name.')
-
-class RegisterForm(SetPasswordForm, SimpleEmailSubscribeForm):
- login_name = UserNameField(label=_('Login name'), \
- db_model=MWUser, \
- db_field='user_name', \
- error_messages={ \
- 'required':_('Please enter login name above, it is required for the Wiki site'), \
- 'taken': mark_safe(wiki_account_taken_msg) \
- }
- )
- next = NextUrlField()
- email = UserEmailField()
- screen_name = UserNameField(label=mark_safe(_('Please type your nickname below')), \
- skip_clean=True, \
- required=False)
- first_name = StrippedNonEmptyCharField(max_length=255,label=mark_safe(_('First name')),
- error_messages={'required':_('First name is required')}
- )
- last_name = StrippedNonEmptyCharField(max_length=255,label=_('Last name'),
- error_messages={'required':_('Last name is required')}
- )
- #cannot be just "title" because there would be a conflict with "title" field used for MW!!!
- user_title = forms.ChoiceField(choices=TITLE_CHOICES, label=_('Title (optional)'))
- use_separate_screen_name = forms.BooleanField(
- label=mark_safe(_('I prefer (or have to) to use a separate forum screen name')),
- required=False,
- )
- #subscribe = forms.ChoiceField(widget=forms.widgets.RadioSelect, \
- # error_messages={'required':_('please choose one of the options above')},
- # choices= EMAIL_FEED_CHOICES)
- recaptcha = ReCaptchaField()
-
- class Media:
- css={'all':(forum_extra_tags.href('/content/style/mediawiki-login.css'),),}
- js=(forum_extra_tags.href('/content/js/mediawiki-login.js'),)
-
- def add_screen_name_error(self, err):
- if 'screen_name' in self.cleaned_data:
- del self.cleaned_data['screen_name']
- error_list = self._errors.get('screen_name',forms.util.ErrorList([]))
- if isinstance(err, forms.util.ErrorList):
- error_list.extend(err)
- else:
- error_list.append(err)
- self._errors['screen_name'] = error_list
-
- def clean(self):
- #this method cleans screen_name and use_separate_screen_name
- screen_name = self.cleaned_data.get('screen_name', '')
-
- if 'use_separate_screen_name' in self.cleaned_data \
- and self.cleaned_data['use_separate_screen_name']:
- if screen_name == '':
- msg = _('please enter an alternative screen name or uncheck the box above')
- self.add_screen_name_error(msg)
- else:
- try:
- screen_name = self.fields['screen_name'].clean(screen_name)
- self.final_clean_screen_name(screen_name)
- except ValidationError, e:
- self.add_screen_name_error(e)
- else:
- if screen_name != '':
- self.add_screen_name_error(_('sorry, to use alternative screen name, please confirm it by checking the box above'))
- else:
- #build screen name from first and last names
- first = self.cleaned_data.get('first_name',None)
- last = self.cleaned_data.get('last_name',None)
- if first and last:
- screen_name = u'%s %s' % (first,last)
- self.final_clean_screen_name(screen_name)
- return self.cleaned_data
-
- def final_clean_screen_name(self,name):
- try:
- u = User.objects.get(username=name)
- msg = _('Screen name <strong>%(real_name)s</strong> is somehow already taken on the forum.<br/>'
- 'Unfortunately you will have to pick a separate screen name, but of course '
- 'there is no need to change the first name and last name entries.<br/>'
- 'Please send us your feedback if you feel there might be a mistake. '
- 'Sorry for the inconvenience.')\
- % {'real_name':name}
- self.add_screen_name_error(mark_safe(msg))
- except:
- self.cleaned_data['screen_name'] = name
-
- #overridden validation for UserNameField
- def clean_login_name(self):
- try:
- MWUser.objects.get(user_name=self.cleaned_data['login_name'])
- del self.cleaned_data['login_name']
- raise ValidationError(_('sorry this login name is already taken, please try another'))
- except:
- return self.cleaned_data['login_name']
-
-class RegisterFormWizard(FormWizard):
- def done(self, request, form_list):
- data = form_list[0].cleaned_data
- login_name = data['login_name']
- password = data['password']
- first_name = data['first_name']
- last_name = data['last_name']
- screen_name = data['screen_name']
- email = data['email']
- subscribe = data['subscribe']
- next = data['next']
-
- #register mediawiki user
- mwu = MWUser(
- user_name=login_name,
- user_password=password,
- user_first_name = first_name,
- user_last_name = last_name,
- user_email = email
- )
- mwu.save()
-
- #register local user
- User.objects.create_user(screen_name, email, password)
- u = authenticate(username=screen_name, password=password)
- u.mediawiki_user = mwu
- u.save()
-
- #save email feed settings
- EFF = EditUserEmailFeedsForm
- if subscribe == 'y':
- email_settings_form = EFF()
- else:
- email_settings_form = EFF(initial=EFF.NO_EMAIL_INITIAL)
- email_settings_form.save(u)
-
- #create welcome message
- u.message_set.create(message=_('Welcome to Q&A forum!'))
- return HttpResponseRedirect(next)
-
- def get_template(self, step):
- if step == 0:
- return 'mediawiki/mediawiki_signup.html'
- elif step == 1:
- return 'notarobot.html'