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