the image filename is joined to articles by this line: Field('TopImage',db.Images) id=request.vars.id #<<-- only ok for testing I removed some code to make it as short as possible the original version gets the article id from request.vars.id if none is given it redirects to a page where you can choose the article you want to read.
On Wednesday, September 5, 2012 4:07:29 PM UTC+2, villas wrote: > > def Article(): > id=request.vars.id > row=db(db.Article.id==id).select() > > Not sure how you get the Images filenames. The code does not seem join > the Article to the Image? > > Maybe something like: > def Article(): > id=request.vars.id # <<-- only ok for testing > row=db((db.Article.id==id)&(db.Article.TopImage==db.Images.id)).select > () > > > > Regards, David > > On Wednesday, September 5, 2012 12:35:26 PM UTC+1, BlueShadow wrote: >> >> Hi, >> its driving me nuts. I used the code from web2pyslices to generate >> thumbnails: >> db.py: >> db.define_table('Images', >> Field('Name',length=512), >> Field('Image','upload'), >> Field('thumb','upload',writable=False,readable=False), >> format = '%(Name)s' # <<< important >> ) >> db.define_table('Article', >> Field('Title',length=512), >> Field('Content','text'), >> Field('Submitted','datetime',default=datetime.datetime.now()), >> Field('Views','integer',default=0), >> Field('TopImage',db.Images) >> ) >> default.py: >> def download(): >> return response.download(request, db) >> def makeThumbnail(dbtable,ImageID,size=(200,200)): >> try: >> thisImage=db(dbtable.id==ImageID).select()[0] >> import os, uuid >> except: >> print "Error while loading libraries" >> return >> try: >> from PIL import Image >> except: >> print "Error while Importing PIL library" >> return >> print request.folder + 'uploads/' + thisImage.Image >> im=Image.open(request.folder + 'uploads/' + thisImage.Image) >> im.thumbnail(size,Image.ANTIALIAS) >> thumbName='uploads.thumb.%s.jpg' % (uuid.uuid4()) >> im.save(request.folder + 'uploads/' + thumbName,'jpeg') >> thisImage.update_record(thumb=thumbName) >> response.flash = 'Thumb created everything went fine' >> return >> def newImage(): >> dbtable = db.Images #uploads table name >> if len(request.args): >> records = db(dbtable.id==request.args[0]).select() >> if len(request.args) and len(records): >> form = SQLFORM(dbtable, records[0], deletable=True) >> else: >> form = SQLFORM(dbtable) >> if form.accepts(request.vars, session): >> response.flash = 'Entry for Images Database accepted,start >> creating thumb' >> makeThumbnail(dbtable,form.vars.id,(200,200)) >> elif form.errors: >> response.flash = 'Error in Form for Images Database' >> ## Quick list just to demonstrate... >> list = crud.select(dbtable) >> return dict(form=form,list=list) >> def Article(): >> id=request.vars.id >> row=db(db.Article.id==id).select() >> row[0].update_record(Views=row[0].Views+1) >> if len(row)==0: >> redirect(URL(r=request,f='Articles')) >> return dict(Article=row[0]) >> article.html >> {{extend 'layout.html'}} >> <h1> {{=Article.Title}} </h1> >> <br> >> <center> >> {{print URL(r=request, c='default', >> f='download',args=Article.TopImage.thumb)}} >> {{=IMG(_src=URL(r=request, c='default', >> f='download',args=Article.TopImage.thumb),_style="display:block;")}} >> </center> >> <br> >> {{=XML(Article.Content)}}<br><br> >> the thumbnail is generated by the code as it should. and it lands in the >> upload folder with the original image as it should. if I change the >> article.TopImage.thumb to .image it works perfectly. if I change it to >> .thumb again no image is displayed. the path and name I get from the print >> seem to be correct at least it is the same path as for the origianl image. >> thanks for your help guys >> >> --