WEB2PY 2.9 Cheat Sheet

WEB2PY 2.9 Cheat Sheet

WEB2PY 2.9 Cheat Sheet Database Abstraction Layer Forms http://www.web2py.com db = DAL('sqlite://storage.sqlite',pool_size=1) form = SQLFORM(db.thing,record=None) db.define_table('thing', Field('name','string')) form = SQLFORM.factory(Field('name')) (no db) URL Parsing id = db.thing.insert(name='max') form = SQLFORM.dictform(d) (for d={...}) http://host:port/admin (admin interface) query = db.thing.name.contains('m')&(db.thing.id==1) form = SQLFORM(db.thing).process() http://host:port/app/static/file (app static file) db(query).update(name='max') if form.accepted: ... http://host:port/app/appadmin (database interface) db(query).delete() elif form.errors: ... http://host:port/app/c/f(.e)/!args?vars things = db(query).select(db.thing.ALL, app ! request.application orderby=~db.thing.name, groupby=db.thing.id c ! request.controller dictinct=True, cache=(cache.ram,60)) Grids f ! request.function thing = db.thing(id) or redirect(URL('error')) grid = SQLFORM.grid(query) e ! request.extension thing.update_record(name='max') grid = SQLFORM.smartgrid(table, linked_tables=[]) args ! request.args (list) things.export_to_csv_file(open(filename,'wb')) vars ! request.vars (dict) db.thing.import_from_csv_file(open(filename,'rb')) SQLFORM.grid( query, fields=None, field_id=None, left=None, 'c/f.e' ! response.view Field Types host ! request.env.http_host headers={}, orderby=None, searchable=True, port ! request.env.http_port string, text, boolean, integer, double, decimal(n,m), date, sortable=True, paginate=20, deletable=True, time, datetime, password, upload, blob, json, list:string, editable=True, details=True, selectable=None, Global Objects list:integer, reference table, list:reference table create=True, csv=True, links=None, ...) request.obj Field Attributes Field(fieldname, type='string', length=None, Auth application, controller, function, now, client, is_local, default=None, required=False, requires=None, @auth.requires_login() is_https, ajax, args, vars, get_vars, post_vars, ondelete='CASCADE', notnull=False, unique=False, @auth.requires_membership('groupname') env.request_method, env.path_info, env.query_string, uploadfield=True, widget=None, label=None, @auth.requires_premission('edit','tablename',id) env.http_*, env.wsgi_* comment=None, writable=True, readable=True, @auth.requires(condition) auth.(has|add|del)_membership(...) response.obj update=None, authorize=None, autodelete=False, represent=None, uploadfolder=None, auth.(has|add|del)_permission(...) status=200, view='filename.html', flash='flash me', uploadseparate=False, compute=None, ...) js = 'alert("run me")', download(request,db), Full Example stream(file), render(template,**vars) Validators models/db.py CLEANUP, CRYPT, IS_ALPHANUMERIC, IS_DATE, IS_DATETIME, from gluon.tools import * session.obj IS_DATETIME_IN_RANGE, IS_DATE_IN_RANGE, db = DAL('sqlite://storage.sqlite') connect(request,response,db,separate=False), IS_DECIMAL_IN_RANGE, IS_EMAIL, IS_EMPTY_OR, IS_EQUAL_TO, auth = Auth(db) flash, secure(), forget(), _unlock(response) IS_EXPR, IS_FLOAT_IN_RANGE, IS_GENERIC_URL, IS_HTTP_URL, auth.define_tables() IS_IMAGE, IS_INT_IN_RANGE, IS_IN_DB, IS_IN_SET, db.define_table('thing', cache IS_IN_SUBSET, IS_IPV4, IS_LENGTH, IS_LIST_OF, IS_LOWER, Field('name',requires=IS_NOT_EMPTY()), auth.signature) @cache('key',3600,cache.ram) IS_MATCH, IS_NOT_EMPTY, IS_NOT_IN_DB, IS_NULL_OR, IS_SLUG, auth.enable_record_versioning(db) # for full db auditing @cache('key',3600,cache.disk) IS_STRONG, IS_TIME, IS_UPLOAD_FILENAME, IS_UPPER, IS_URL cache.ram.clear(regex='k.*') controllers/default.py Helpers def index(): return auth.wiki() # embed a wiki T (internationalization) A, B, BEAUTIFY, BODY, BR, CAT, CENTER, CODE, COL, COLGROUP, def download(): return response.download(request,db) DIV, EM, EMBED, FIELDSET, FORM, H1, H2, H3, H4, H5, H6, HEAD, HR, def user(): return dict(form=auth) # login/etc. T('hello %(key)s',dict(key='thing')) HTML, I, IFRAME, IMG, INPUT, LABEL, LEGEND, LI, LINK, MARKMIN, T.current_languages = ['en'] (no translate) MENU, META, OBJECT, ON, OL, OPTGROUP, OPTION, P, PRE, SCRIPT, T.force('en') (use languages/en.py) @auth requires_login() SELECT, SPAN, STYLE, TABLE, TAG, TBODY, TD, TEXTAREA, TFOOT, def manage_things(): # access you data TH, THEAD, TITLE, TR, TT, UL, XHTML, XML URL, redirect, and HTTP grid = SQLFORM.grid(db.thing.created_by==auth.user.id) DIV(SPAN('hello'),_id='myid',_class='myclass') return locals() URL('function') A('link',_href=URL(...)) URL('controller','function') SPAN(A('link',callback=URL(...),delete='span')) views/default/manage things.html URL('app','controller','function') TABLE(*[TR(TD(item)) for item in [...]]) {{extend 'layout.html'}} URL('function',args=[...],vars={...}) div = DIV(SPAN('hello',_id='x')) <h1>Your things</h1> URL('function',scheme=True) (full url) div.element('span#x').append("world") {{=grid}} URL('function',user_signature=True) div.element('span#x')['_class'] = 'myclass' {{# any python between double braces}} (then use @auth.requires_signature()) DIV('1<2').xml()==DIV(XML('1<2',sanitize=True)).xml() redirect(URL('index')) div = TAG.DIV(TAG.SPAN('hello',_id='x')) raise HTTP(500,'message') Copyleft 2014 Massimo Di Pierro div = TAG('<div><span id="hello">hello</span></div>') Generic views @{variable} and @{controller/function/args}""" Payment Systems generic.html {{=MARKMIN(text, Stripe generic.rss url=True,environment=dict(variable='x'), from gluon.contrib.stripe import StripeForm generic.ics extra=dict(up=lambda t:cgi.escape(t.upper())))}} form = StripeForm( generic.map # google map pk=STRIPE_PUBLISHABLE_KEY, generic.pdf # html -> pdf Login Methods sk=STRIPE_SECRET_KEY, generic.json amount=150, # (amount is in cents) generic.jsonp from gluon.contrib.login_methods.basic_auth import * auth.settings.login_methods.append( description="Nothing").process() if form.accepted: payment_id = form.response['id'] Web services basic_auth('http://server')) from gluon.tools import Service from ....ldap_auth import * Google wallet button service = service() auth.settings.login_methods.append(ldap_auth( from gluon.contrib.google_wallet import button def call(): return service() mode='ad', server='my.domain.controller', {{=button(merchant_id="123456789012345", @service.rss base_dn='ou=Users,dc=domain,dc=com')) products=[dict(name="shoes", @service.xml quantity=1, price=23.5, currency='USD', @service.json from ....pam_auth import * description="running shoes black")])}} @service.xmlrpc auth.settings.login_methods.append(pam_auth()) @service.jsonrpc @service.amfrpc3('domain') from ....openid_auth import * Deployment @service.soap('name',args={'x':int},returns={'y':int}) auth.settings.login_form = OpenIDAuth(auth) web2py.py -i ip -p port -a password @service.run web2py.py -S app -M -N -R script.py (run script) from ....email_auth import * web2py.py -S app -M -N (shell) REST auth.settings.login_methods.append( web2py.py -K app (task queue worker) @request.restful() email_auth("smtp.gmail.com:587","@gmail.com")) anyserver.py -s server (third party server) def index(): servers: bjoern, cgi, cherrypy, diesel, eventlet, fapws, flup, gevent, gnuicorn, mongrel2, paste, rocket, tornado, twisted, def GET(a,b,c): return dict() from ....browserid_account import * wsgiref def PUT(a,b,c): return dict() auth.settings.login_form = BrowserID(request, def POST(a,b,c): return dict() audience = "http://127.0.0.1:8000" Setup Scripts def DELETE(a,b,c): return dict() assertion_post_url = 'http://...//user/login') return locals() from https://github.com/web2py/web2py/tree/master/scripts from ....dropbox_account import * MARKMIN auth.settings.login_form = DropboxAccount(request, setup-scheduler-centos.sh text = """ key="...",secret="...",access_type="...", setup-web2py-centos7.sh # section url = "http://.../user/login') setup-web2py-debian-sid.sh ## subsection setup-web2py-fedora-ami.sh **bold** ''italic'' ``code``, ``what``:up from ....janrain_account import * setup-web2py-fedora.sh ----------------------------------------------- auth.settings.login_form = RPXAccount(request, setup-web2py-heroku.sh image | http://example.com/image.jpg api_key="...",domain="...", setup-web2py-nginx-uwsgi-centos64.sh audio | http://example.com/audio.mp3 url='http://.../user/login' setup-web2py-nginx-uwsgi-on-centos.sh video | http://example.com/video.mp4 setup-web2py-nginx-uwsgi-opensuse.sh iframe | embed:http://example.com/page.html from ....x509_auth import * setup-web2py-nginx-uwsgi-ubuntu.sh -------------------------------------:css_class auth.settings.login_form = X509Account() setup-web2py-ubuntu.sh.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us