#!/usr/bin/env python # -*- coding: utf-8 -*- # WWW-sovellukset TJTA270 Vt4 Taso 5 # http://appro.mit.jyu.fi/sovellukset/vt/vt4/ # (C) Esa-Matti Suuronen ''' Created on Feb 8, 2010 @author: epeli ''' import cherrypy from sokkeli.kela import Widget, Form, WidgetGroup, Invalid, constraint from userdb import UserDB class NoPipe(Widget): @constraint def not_pipe(self): if "|" in self.get_value(): raise Invalid("Input contains an invalid character | ") class Text(NoPipe): _type = "text" class Password(NoPipe): _type="password" class Username(NoPipe): _type = "text" @constraint def unique_usernames(self): userdb = UserDB() if userdb.has_user(self.get_value()): raise Invalid("Username already exists!") class LoginForm(WidgetGroup): def _init_form(self, form): WidgetGroup._init_form(self, form) self.username = self.add(Text("username", label_text="Username", required=True)) self.password = self.add(Password("password", label_text="Password", required=True)) @constraint def auth(self): userdb = UserDB() if not userdb.has_user(self.username.get_value()): raise Invalid("Unknown user!") if not userdb.auth(self.username.get_value(), self.password.get_value()): raise Invalid("Invalid password!") class Passwords(WidgetGroup): def _init_form(self, form): WidgetGroup._init_form(self, form) self.pass1 = self.add(Password("password1", label_text="Password", required=True, min_length=5)) self.pass2 = self.add(Password("password2", label_text="Again", required=True, min_length=5)) @constraint def passwords_match(self): if self.pass1.get_value() != self.pass2.get_value(): raise Invalid("Passwords does not match!")