You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
58 lines
1.8 KiB
import deform |
|
|
|
from pyramid.httpexceptions import HTTPFound |
|
from pyramid.view import view_config |
|
|
|
from ordr.models.account import User, Role, TokenSubject |
|
from ordr.events import RegistrationNotification |
|
|
|
# below this password length a warning is displayed |
|
MIN_PW_LENGTH = 12 |
|
|
|
|
|
@view_config( |
|
context='ordr.resources.account.RegistrationResource', |
|
permission='view', |
|
request_method='GET', |
|
renderer='ordr:templates/account/registration_form.jinja2' |
|
) |
|
def registration_form(context, request): |
|
''' show registration form ''' |
|
form = context.get_registration_form() |
|
return {'form': form} |
|
|
|
|
|
@view_config( |
|
context='ordr.resources.account.RegistrationResource', |
|
permission='view', |
|
request_method='POST', |
|
renderer='ordr:templates/account/registration_form.jinja2' |
|
) |
|
def registration_form_processing(context, request): |
|
''' process registration form ''' |
|
if 'create' not in request.POST: |
|
return HTTPFound(request.resource_url(request.root)) |
|
form = context.get_registration_form() |
|
data = request.POST.items() |
|
try: |
|
appstruct = form.validate(data) |
|
except deform.ValidationFailure as e: |
|
return {'form': form} |
|
|
|
# form validation successfull, create user |
|
account = User( |
|
username=appstruct['username'], |
|
first_name=appstruct['first_name'], |
|
last_name=appstruct['last_name'], |
|
email=appstruct['email'], |
|
role=Role.UNVALIDATED |
|
) |
|
account.set_password(appstruct['password']) |
|
request.dbsession.add(account) |
|
|
|
# create a verify-new-account token and send email |
|
token = account.issue_token(request, TokenSubject.REGISTRATION) |
|
notification = RegistrationNotification(request, account, {'token': token}) |
|
request.registry.notify(notification) |
|
|
|
return HTTPFound(request.resource_url(context, 'verify'))
|
|
|