You should not have this line:

    from gluon.dal import *

that module is experimental and it is not the proper way of using it.
It does not support GAE at all.

If you remove that line everything else I see should work fine on GAE.

Massimo


On Oct 8, 1:20 pm, Sujith <[email protected]> wrote:
> Hi all,
>
> I am trying to make the "jobsite" appliance work on GAE. I edited  the
> model(db.py) of jobsite to suit GAE.
> I am getting the following error when running under devappserver of
> gae sdk.
> ***************************************
> WARNING  2010-10-08 18:10:40,069 datastore_file_stub.py:657] Could not
> read datastore data from /tmp/dev_appserver.datastore
> WARNING  2010-10-08 18:10:40,080 dev_appserver.py:3637] Could not
> initialize images API; you are likely missing the Python "PIL" module.
> ImportError: No module named _imaging
> INFO     2010-10-08 18:10:40,108 dev_appserver_main.py:431] Running
> application wcj on port 8080:http://localhost:8080
> WARNING  2010-10-08 18:12:29,440 portalocker.py:92] no file locking
> ERROR    2010-10-08 18:12:30,790 restricted.py:151] Traceback (most
> recent call last):
>   File "/home/sujith/Desktop/wcj/gluon/restricted.py", line 188, in
> restricted
>     exec ccode in environment
>   File "/home/sujith/Desktop/wcj/applications/init/models/db.py", line
> 7, in <module>
>     session.connect(request,response,db)
>   File "/home/sujith/Desktop/wcj/gluon/globals.py", line 298, in
> connect
>     migrate=table_migrate,
>   File "/home/sujith/Desktop/wcj/gluon/dal.py", line 2117, in
> define_table
>     t._create(migrate=migrate, fake_migrate=fake_migrate)
>   File "/home/sujith/Desktop/wcj/gluon/dal.py", line 2555, in _create
>     elif not field.type in self._db._adapter.types:
> AttributeError: 'BaseAdapter' object has no attribute 'types'
> *************************************
>
> This is the model
> *************************************
> import datetime
> now=datetime.datetime.today()
>
> if request.env.web2py_runtime_gae:
>     from gluon.dal import *
>     db = DAL('gae')
>     session.connect(request,response,db)
> else:
>     db = DAL('sqlite://storage.sqlite')
>
> db.define_table('user',
>                 Field('name'),
>                 Field('email'),
>                 Field('phone_country_code',default='1'),
>                 Field('phone'),
>                 Field('user_type'),
>                 Field('password','password'),
>                 Field('authorized',default='True'),
>                 Field('verification',default=''))
>
> db.user.name.requires=IS_NOT_EMPTY()
> db.user.user_type.requires=IS_IN_SET('Administrator','Applicant','Recruiter')
> db.user.email.requires=[IS_EMAIL(), IS_NOT_IN_DB(db,'user.email'),
> IS_NOT_EMPTY()]
>
> db.define_table('country',
>                 Field('country_code'),
>                 Field('country_name'))
>
> db.country.country_code.requires=IS_NOT_EMPTY()
> db.country.country_name.requires=IS_NOT_EMPTY()
>
> db.define_table('state',
>                 Field('country_code'),
>                 Field('state_code'),
>                 Field('state_name'))
>
> db.state.country_code.requires=IS_IN_DB(db,'country.country_code')
> db.state.state_code.requires=IS_NOT_EMPTY()
> db.state.state_name.requires=IS_NOT_EMPTY()
>
> db.define_table('company',
>                 Field('company_name'),
>                 Field('profile','text'),
>                 Field('address1'),
>                 Field('address2'),
>                 Field('city'),
>                 Field('state'),
>                 Field('zip'),
>                 Field('country'),
>                 Field('owner',db.user,default=session.user_id))
>
> db.company.company_name.requires=IS_NOT_EMPTY()
> db.company.profile.requires=IS_NOT_EMPTY()
> db.company.country.requires=IS_IN_DB(db,'country.country_name')
> db.company.owner.requires=IS_IN_DB(db,'user.id','%(name)s')
> db.company.state.requires=IS_IN_DB(db,'state.state_name')
> db.company.owner.requires=IS_NOT_EMPTY()
>
> db.define_table('categories',
>                 Field('cat_name'),
>                 Field('cat_descr','text'))
>
> db.categories.cat_name.requires=IS_NOT_EMPTY()
>
> db.define_table('positions',
>                 Field('company_name'),
>                 Field('title'),
>                 Field('category'),
>                 Field('description','text',default=''),
>                 Field('timestamp','datetime',default=now),
>                 Field('expires_on','datetime'),
>                 Field('access',default='Private'),
>                 Field('owner','integer',default=session.user_id))
>
> #db.positions.access.requires=IS_IN_SET('P','R','A')
> db.positions.company_name.requires=IS_IN_DB(db,'company.company_name')
> db.positions.category.requires=IS_IN_DB(db,'categories.cat_name')
> #db.positions.expires_on.requires=IS_NOT_EMPTY()
> db.company.owner.requires=IS_NOT_EMPTY()
>
> db.define_table('position_requirements',
>                 Field('position_id'),
>                 Field('requirement'))
>
> db.position_requirements.position_id.requires=IS_IN_DB(db,'positions.id','position.title')
>
> db.define_table('applicants',
>                 Field('user_id'),
>                 Field('applicant_name'),
>                 Field('address1'),
>                 Field('address2'),
>                 Field('city'),
>                 Field('state'),
>                 Field('zip'),
>                 Field('country'),
>                 Field('phone_country_code',default='1'),
>                 Field('phone'),
>                 Field('email'),
>                 Field('access',default='Public'),
>                 Field('updated','datetime',default=now))
>
> #db.applicants.access.requires=IS_IN_SET('P','R','A')
> db.applicants.applicant_name.requires=IS_NOT_EMPTY()
> db.applicants.email.requires=[IS_EMAIL(),IS_NOT_EMPTY()]
> db.applicants.country.requires=IS_IN_DB(db,'country.country_code','country.country_name')
> db.applicants.state.requires=IS_IN_DB(db,'state.state_code','state.state_name')
>
> db.define_table('applied_for',
>                 Field('position_id'),
>                 Field('applicant'),
>                 Field('applicant_name'),
>                 Field('applied','datetime',default=now))
>
> db.applied_for.position_id.requires=IS_IN_DB(db,'positions.id','positions.title')
> #db.applied_for.applicant.requires=IS_IN_DB(db,'applicants.id','applicants.id')
> #db.applied_for.applicant.requires=IS_IN_DB(db,'applicants.applicant_name','applicants.applicant_name')
>
> db.define_table('resumes',
>                 Field('user_id',db.user,default=session.user_id),
>                 Field('title'),
>                 Field('body','text'),
>                 Field('keywords','text'),
>                 Field('updated','datetime',default=now),
>                 Field('access',default='Public'))
>
> #db.resumes.access.requires=IS_IN_SET('P','R','A')
> db.resumes.user_id.requires=IS_NOT_EMPTY()
> ***************************************
>
> I am using python2.5 on Ubuntu 10.4 (lucid). I am a noob in python and
> also a newbie to web2py.
>
> Thanks for the help.
>
> Sujith

Reply via email to