where did you get these 3 lines from?

auth.define_tables()                    # creates all needed tables
auth.settings.user = db.define_table(
        auth.settings.auth_user,

they should be

auth.settings.user_table = db.define_table(
        auth.settings.auth_user_table,

and

auth.define_tables()                    # creates all needed tables

should be moved after the definition of the table above.


On Jul 5, 4:28 pm, weheh <[email protected]> wrote:
> OK, so I've done a clean new install and started a new app. I've
> created db.py by reordering the stuff on auth from AlterEgo and fixing
> a typo:
>
> ----------------------------------------------------------
>
> # -*- coding: utf-8 -*-
> ##########################################################################
> ### This scaffolding model makes your app work on Google App Engine
> too
> ##########################################################################
> #
> #try:
> #    from gluon.contrib.gql import *  # if running on Google App
> Engine
> #except:
> #    db = SQLDB('sqlite://storage.db')  # if not, use SQLite or other
> DB
> #else:
> #    db = GQLDB()  # connect to Google BigTable
> #    session.connect(request, response, db=db)  # and store sessions
> there
> #    # or use the following lines to store sessions in Memcache
> #    #from gluon.contrib.memdb import MEMDB
> #    #from google.appengine.api.memcache import Client
> #    #session.connect(request, response, db=MEMDB(Client()))
> db = DAL('sqlite://storage.db')  # if not, use SQLite or other DB
>
> #########################################################################
> ## uncomment the following line if you do not want sessions
> #session.forget()
> #########################################################################
>
> ########################################################################
> # Define your tables below, for example
> #
> # >>> db.define_table('mytable',SQLField('myfield','string'))
> #
> # Fields can be
> 'string','text','password','integer','double','booelan'
> #       'date','time','datetime','blob','upload', 'reference
> TABLENAME'
> # There is an implicit 'id integer autoincrement' field
> # Consult manual for more options, validators, etc.
> #
> # More API examples for controllers:
> #
> # >>> db.mytable.insert(myfield='value')
> # >>> rows=db(db.mytbale.myfield=='value).select(db.mytable.ALL)
> # >>> for row in rows: print row.id, row.myfield
> ########################################################################
>
> ########################################################################
> # Here is sample code if you need:
> # - email capabilities
> # - authentication (registration, login, logout, ... )
> # - authorization (role based authorization)
> # - crud actions
> # uncomment as needed
> ########################################################################
>
> from gluon.tools import Mail, Auth, Crud     # new in web2py 1.56
>
> mail=Mail()                                  # mailer
> mail.settings.server='smtp.gmail.com:587'    # your SMTP server
> mail.settings.sender='[email protected]'         # your email
> mail.settings.login='username:password'      # your credentials
>
> ########################################################################
> # then, to expose authentication
> #http://..../[app]/default/user/login
> #http://..../[app]/default/user/logout
> #http://..../[app]/default/user/register
> #http://..../[app]/default/user/profile
> #http://..../[app]/default/user/retrieve_password
> #http://..../[app]/default/user/change_password
> # use the following action in controller default.py
> #
> #     def user(): return dict(form=auth())
> #
> # read docs for howto create roles/groups, assign memberships and
> permissions
> #
> # to expose CRUD
> #http://..../[app]/default/data/tables
> #http://..../[app]/default/data/select/[table]
> #http://..../[app]/default/data/create/[table]
> #http://..../[app]/default/data/read/[table]/[id]
> #http://..../[app]/default/data/update/[table]/[id]
> #http://..../[app]/default/data/delete/[table]/[id]
> # use the following action in controller default.py
> #
> #     def data(): return dict(form=crud())
> #
> # to allow automatic download of all uploaded files and enforce
> authorization
> # use the following action in controller default.py
> #
> #     def download(): return response.download(request,db)
>
> # CUSTOM USER
> # instantiate auth
> auth=Auth(globals(),db)
> auth.define_tables()                    # creates all needed tables
> # define custom user table
> auth.settings.user = db.define_table(
>         auth.settings.auth_user,
>         db.Field('first_name', length=128, default=''),
>         db.Field('last_name', length=128, default=''),
>         db.Field('email', length=128, default='',
>                 requires = [
>                         IS_EMAIL(),
>                         IS_NOT_IN_DB(db,'%s.email'%auth.settings.auth_user)
>                         ]
>                 ),
>         db.Field('password', 'password', readable=False,
>                 label='Password', requires=CRYPT()),
>         db.Field('registration_key', length=128,
>                 writable=False, readable=False, default=''),
>         )
>
> # define any other requires tableauth.define_tables()
> auth.settings.captcha=Recaptcha
> (request,public_key='RECAPTCHA_PUBLIC_KEY',private_key='RECAPTCHA_PRIVATE_KEY')
> auth.settings.mailer=mail               # for user email verification
>
> crud=Crud(globals(),db)                 # for CRUD helpers using auth
> crud.settings.auth=auth                 # (optional) enforces authorization 
> on crud
>
> ----------------------------------------------------------
>
> I've also created a default.py that contains the defs for user, data,
> and download:
>
> ----------------------------------------------------------
>
> # # sample index page with internationalization (T)
> def index():
>     response.flash = T('Welcome to web2py')
>     return dict(message=T('Hello World'))
>
> # uncomment the following if you have defined "auth" and "crud" in
> models
> def user(): return dict(form=auth())
> def data(): return dict(form=crud())
> def download(): return response.download(request,db)
> # tip: use @auth.requires_login, requires_membership,
> requires_permission
>
> ----------------------------------------------------------
>
> I run the app and get the following ticket:
>
> Traceback (most recent call last):
>   File "gluon/restricted.py", line 176, in restricted  File "C:/web2py/
> applications/myapp/models/db.py", line 105, in <module>
>   File "gluon/sql.py", line 986, in define_table
>   File "gluon/sql.py", line 438, in cleanupType
>
> Error: expected string or buffer
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to