uploadfolder= lambda r: db.repository(r.repository_id).directory
def store_file(file, filename=None, path=None):
path = path # "applications/init/uploads"
if not os.path.exists(path):
os.makedirs(path)
pathfilename = os.path.join(path, filename)
dest_file = open(pathfilename, 'wb')
try:
shutil.copyfileobj(file, dest_file)
finally:
dest_file.close()
return filename
path = db.repository(db.workbench(db.workbench.name==filename).repository).directory
## Repository
db.define_table('repository',
Field('name', type='string'),
Field('directory', default='applications/init/uploads'),
format='%(name)s')
## Workbench - workbenches stored in the repository
db.define_table('workbench',
Field('repository', 'reference repository'),
Field('name', compute=lambda r: db.workbench.workbench.retrieve(r.workbench)[0]),
Field('workbench', type='upload', required=True, custom_store=store_file, custom_retrieve=retrieve_file ),
Field('sequence', 'integer', required=True),
Field('created_date', 'datetime', default=request.now, readable=False, writable=False),
Field('modified_date', 'datetime', update=request.now, readable=False, writable=False),
format='%(name)s')
def create_workbench():
""" Form to create a workbench in a given repository """
rep = db.repository[request.args(0)]
if rep is None:
raise HTTP(404)
db.workbench.workbench.uploadfolder = rep.directory
form = SQLFORM(db.workbench)
if form.process().accepted:
response.flash = 'Yay'
elif form.errors:
response.flash = 'Nay'
def update_workbench():
""" Form to update a workbench """
wb = db.worbench[request.args(0)]
db.workbench.workbench.uploadfolder = wb.repository.directory
form = SQLFORM(db.workbench, wb)
if form.process().accepted:
response.flash = 'Yay'
elif form.errors:
response.flash = 'Nay'
def store_file(file, filename=None, path=None):
path = path #"applications/init/uploads"
if not os.path.exists(path):
os.makedirs(path)
pathfilename = os.path.join(path, filename)
dest_file = open(pathfilename, 'wb')
try:
shutil.copyfileobj(file, dest_file)
finally:
dest_file.close()
return filename
## Repository
db.define_table('repository',
Field('name', type='string'),
Field('directory', default='applications/init/uploads'),
Field('priority', 'integer', default=100),
format='%(name)s')
## File - Files stored in the repository
db.define_table('workbench',
Field('repository', 'reference repository'),
Field('name')
Field('workbench', type='upload', required=True, custom_store=store_file, custom_retrieve=retrieve_file), #
Field('sequence', 'integer', required=True),
Field('created_date', 'datetime', default=request.now, readable=False, writable=False),
Field('modified_date', 'datetime', update=request.now, readable=False, writable=False),
format='%(name)s')
def onvalidation(form):
repository = db.repository(form.vars.repository)
if repository is None:
raise HTTP(404)
db.workbench.workbench.uploadfolder = repository.directory
def oncreate(form):
db(db.workbench.id==form.vars.id).update(name=form.vars.workbench)
def onupdate(form):
db(db.workbench.id==form.vars.id).update(name=form.vars.workbench)
def index():
"""
Additional code here
"""
form = SQLFORM.smartgrid(db.repository,
fields=fields,
orderby=orderby,
searchable=True,
details=details,
editable=editable,
deletable=deletable,
oncreate=oncreate,
onupdate=onupdate,
onvalidation=onvalidation,
links=links,
paginate=paginate,
linked_tables=linked_tables)
return dict(form=form)