class Image:
def __init__(self, db, auth_signature, session, request, response):
...
if not 't_image' in db.tables:
self.db.define_table('t_image',
Field('f_user_id', type="reference auth_user", readable=False, writable=False,
default=session.auth.user.id if session.auth else ''),
Field('image',type="upload",
requires = (IS_EMPTY_OR(IS_IMAGE(
error_message = current.T('Error...'),
extensions = ('jpeg','jpg','png','bmp','gif'), maxsize = (1200, 1200))),IS_LENGTH(524288)),
label = current.T('Image'), autodelete = True, uploadseparate = True),
...
self.auth_signature)
def show_user():
...
from user_custom import Image
cl__image = Image(db = db, auth_signature = auth.signature, session = session,
request = request, response = response)
row__image = db(db.t_image.f_user_id == user_id).select('image').first()
image_filename = row__image['image']
img = IMG(_src = URL('default', 'download/' + image_filename, extension = False))
...
return dict(img = img)
Consider using current in your module so you don't have to pass everything as an argument.
Anyway, if you change this does it work
def download():
print "\ndb.tables:", db.tables
print "\ndb.tables fields:", db['t_image'].fields
return response.download(request,db)