if request.env.web2py_runtime_gae: db = DAL('gae') session.connect(request,response,db=db) else:db = DAL("sqlite://storage.db") db.define_table('image', Field('file', 'upload', requires=[IS_NOT_EMPTY(error_message="Please select a file to upload"), IS_UPLOAD_FILENAME(extension='ta', error_message="Must be a Turtle Art file")]), Field('title', requires=[IS_NOT_EMPTY(error_message="You must include a title"), IS_NOT_IN_DB(db, 'image.title', error_message="Title is already taken")]), Field('image_id'), Field('creator', requires=IS_NOT_EMPTY(error_message="You must include your name")), Field('description', 'text'), Field('views'), Field('newimage', 'upload', requires=[IS_NOT_EMPTY(error_message="Please select a image to upload"), IS_UPLOAD_FILENAME(extension='png', error_message="Must be a PNG image")])) db.define_table('comment', Field('image_id', db.image), Field('author'), Field('body', 'text')) from gluon.tools import Auth auth = Auth(globals(),db) auth_table = db.define_table( auth.settings.table_user_name, Field('username', length=128, default="", unique = True), Field('email', length=128, default="", unique=True), Field('password', 'password', length=256, readable=False, label='Password'), Field('registration_key', length=128, default= "", writable=False, readable=False), Field('reset_password_key', length=128, default="",readable=False)) db.comment.image_id.requires = IS_IN_DB(db, db.image.image_id, '%(title)s') db.comment.author.requires = IS_NOT_EMPTY() db.comment.body.requires = IS_NOT_EMPTY() auth_table.username.requires = [IS_EXPR('str(value).count(" ") == 0', error_message='Username must be one word'), IS_NOT_IN_DB(db, auth_table.username)] auth_table.password.requires = [CRYPT()] auth_table.email.requires = [ IS_EMAIL(error_message=auth.messages.invalid_email), IS_NOT_IN_DB(db, auth_table.email)] auth.settings.table_user = auth_table auth.define_tables() from gluon.tools import Mail mail = Mail() mail.settings.server = 'gae' mail.settings.sender = 'turtlesite.authentication@gmail.com' mail.settings.login = None auth.settings.mailer = mail