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
>>
>>
--