Instantly share code, notes, and snippets.

Embed
What would you like to do?
# amnesia/amnesia/forms/helpers.py
# -*- coding: utf-8 -*-
from pyramid.renderers import render
from . import htmlfill
def render_form(template, request, data=None, **kwargs):
if data is None:
data = {}
form = render(template, data, request=request)
return htmlfill.render(form, data, **kwargs)
# amnesia/amnesia/modules/authentication/views/__init__.py
@view_defaults(context=AuthResource)
class login:
template = 'amnesia:templates/authentication/_form_login.pt'
def __init__(self, context, request):
self.context = context
self.request = request
def form(self, data=None, errors=None):
return render_form(self.template, self.request, data, errors=errors)
def GET(self):
return {'form': self.form()}
def POST(self):
result = LoginSchema().load(self.request.POST.mixed())
if result.errors:
return {'form': self.form(result.data, result.errors)}
login = result.data['login']
password = result.data['password']
user = self.context.find_login(login)
if user:
if self.context.check_user_password(user, password):
headers = remember(self.request, user.id)
return HTTPFound(location='/', headers=headers)
else:
errors = {'password': "Password doesn't match"}
else:
errors = {'login': 'Invalid login'}
form = self.form(result.data, errors)
return {'form': form}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment