[web2py] Re: How to use record.id in upload path?

2015-06-05 Thread Najtsirk
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?

2015-05-25 Thread Anthony
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?

2015-05-25 Thread 黄祥
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?

2015-05-25 Thread Anthony
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.