[web2py] Re: How to use record.id in upload path?
I know about uploadseparate option. I was looking for kind of solution where I could define the folder structure for uploaded files (from different forms). I will try to implement my own logic. Thanks. Theres On Monday, 25 May 2015 23:02:09 UTC+2, Anthony wrote: It looks like each project has only one photo associated with it -- do you really need a separate folder for each project just to store a single photo? If you are worried about OS performance issues with large numbers of files in a single directory, you should instead do: Field('photo', 'upload', uploadseparate=True, autodelete=True) web2py will automatically create many sub-folders to divide up the files. Anyway, what you ask is tricky because the record ID is not known until after a record has been inserted, so instead of relying on web2py's built-in upload mechanism, you would have to manually manage the uploads after record insertion. Anthony On Monday, May 25, 2015 at 11:29:54 AM UTC-4, Najtsirk wrote: Dear all, let's say the model is: import os db.define_table('project', Field('title', 'string'), Field('photo','upload', uploadfolder=os.path.join(request.folder,'upload/project/'), autodelete=True)) How can I include record.id in the uploadfolder path so a can have separatesubfolders, like os.path.join(request.folder,'upload/project/*$record.id http://record.id*'). Best, Kristjan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to use record.id in upload path?
It looks like each project has only one photo associated with it -- do you really need a separate folder for each project just to store a single photo? If you are worried about OS performance issues with large numbers of files in a single directory, you should instead do: Field('photo', 'upload', uploadseparate=True, autodelete=True) web2py will automatically create many sub-folders to divide up the files. Anyway, what you ask is tricky because the record ID is not known until after a record has been inserted, so instead of relying on web2py's built-in upload mechanism, you would have to manually manage the uploads after record insertion. Anthony On Monday, May 25, 2015 at 11:29:54 AM UTC-4, Najtsirk wrote: Dear all, let's say the model is: import os db.define_table('project', Field('title', 'string'), Field('photo','upload', uploadfolder=os.path.join(request.folder,'upload/project/'), autodelete=True)) How can I include record.id in the uploadfolder path so a can have separatesubfolders, like os.path.join(request.folder,'upload/project/*$record.id http://record.id*'). Best, Kristjan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to use record.id in upload path?
please try in your controllers: *not tested* id_max = db.project.id.max() maxID = db(db.project).select(id_max).first()[id_max] project_id = int(maxID) + 1 if maxID else 1 db.project.uploadfolder = os.path.join(request.folder,'upload/project/%s' % (project_id) ) best regards, stifan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: How to use record.id in upload path?
On Monday, May 25, 2015 at 8:02:12 PM UTC-4, 黄祥 wrote: please try in your controllers: *not tested* id_max = db.project.id.max() maxID = db(db.project).select(id_max).first()[id_max] project_id = int(maxID) + 1 if maxID else 1 db.project.uploadfolder = os.path.join(request.folder,'upload/project/%s' % (project_id) ) This is not the best approach, as it could lead to a race condition where two near simultaneous requests end up with the same project_id (and therefore folder) even though they have different record ID's. Also, the above only works for requests involving inserts -- you would need separate logic for requests involving reads/updates. Anthony -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.