If you want to do it using the /appadmin/manage functionality, you can add 
something like the following to a model file:

def make_clone_link(r):
    tablename = request.args(2)
    index = db.tables.index(tablename)
    return URL('appadmin', 'manage.load', args=['db', index, tablename, 
'new', tablename],
               vars=dict(clone_id=r.id), user_signature=True, hash_vars=
False)

auth.settings.manager_actions = dict(
    db=dict(role='admin', tables=db.tables,
            smartgrid_args=dict(
                DEFAULT=dict(links=[lambda r: A(SPAN('Clone', 
_class='buttontext 
button'),
                                                cid=request.cid, _href=
make_clone_link(r),
                                                _class='button btn 
btn-default')]))
    )
)

if request.controller == 'appadmin' and 'clone_id' in request.get_vars:
    table = db[request.args(2)]
    record = table[int(request.vars.clone_id)]
    for field in table:
        if field.type != 'id':
            field.default = record[field.name]

Then make sure you have the role "admin" and go to /appadmin/manage/db. 
You'll be able to browse all the database tables via SQLFORM.smartgrid, and 
each record will have a "Clone" button.

Note, the /appadmin/manage UI depends somewhat on Bootstrap, so if you're 
not using Bootstrap, you may have to make sure it is loaded at least for 
/appadmin/manage requests.

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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to