forked from web2py/web2py
-
Notifications
You must be signed in to change notification settings - Fork 1
Free and open source full-stack enterprise framework for agile development of secure database-driven web-based applications, written and programmable in Python. Created by Massimo Di Pierro. © 2007-2008.
License
dspiteself/web2py
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
**** start the program with python web2py.py *** \project README LICENSE TODO Makefile # make all and make app web2py.py # the startup script (*) parameters.py # created at startup admin.tar # the admin app (*) examples.tar # examples and documentation app (*) welcome.tar # the welcome app (entry point) (*) \gluon # the core libraries (*) \deposit # used for zip and install apps setup_app.py # used by py2app to make OSX executable setup_exe.py # used by py2app to make Winows executble wsgihandler.py # to use Gluon with mod_wsgi \dist # used by py2app, py2exe \build # used by py2app, py2exe \tests # under development stuff \docs # in progress documentation \applications # are the apps \welcome # application welcome, for example \models \views \controllers \sessions \errors \cache \static \uploads \modules (*) Required for a fresh installation, everything else is generated BUG FIXES EWF v1.5 -> v1.6 load and save .py in ascii, avoids problem with LF+CR on windows added path.join in compileapp, fixed problem with Windows compileapp EWF v1.6 -> v1.7 in paths replace '\' with '/' to fix problem with windows paths using limitby in database administration replaced mime/miltupart with multipart/form-data to fix a windows problem EWF v1.7 -> Gluon v1.0 Name change Improved layout.html Gluon v1.0 -> v1.1 bug in sqlhtml with JOINS queries Gluon v1.1 -> v1.2 fixed some typos in examples IS_IN_SET now supports labels cleanup in sql.py does not cleanup, just checks valid field and table names Gluon v1.3 added IS_IN_DB, IS_NOT_IN_DB and updated examples accordingly Gluon v1.4 fixed problem with IS_INT_IN_RANGE and IS_FLOAT_IN_RANGE. Now an error in a validator is reported as a ticket. Good validators should not raise Exceptions. IS_IN_DB displays "label (id)" it can upload files without extension migration is now optional (define_table has migrate=False option) Gluon v1.5 <form> -> <form method="post"> in errors.html replace('//','////') in sub in template.py Gluon v1.8 no more chdir (thread unsafe) no more sys.stdout (thread unsafe) response.body is StringIO() admin/default/site informs about upgrade response.locker (optional) Gluon v1.9 allow "count(*)" in select db.execute() fixed problem with continue and return in template removed try: ... except in sql.py fixed '\t' Gluon v1.10 fixed concurrency problems with SQLDB._instances and SQLDB._folders, now use lock now, by default, edit SQLFORMs retain uploaded files Gluon v1.11 appadmin allows to keep or delete uploaded files Gluon v1.12 in sql.py * handles NULL values properly * unicode support (data always stored in utf-8) * 'date' -> datetime.date ,'time' -> datetime.time, 'datetime' -> datetime.datetime, 'boolean' -> True/False * most types have default validators * SQLField(...,required=True) option. * SQLRows has __str__ that serializes in CSV and xml() that serializes in HTML * SQLTable has import_from_csv_file(...) * gluon.simplejson for AJAX in validators.py * IS_IN_DB(db,..) - db can be an SQLSet or an SQLDB * better error messages in admin * new import/export in csv, update and delete interface. in appadmin * edit form allows to keep stored encrypted password in main.py * http://host not defaults to http://host/init/default/index New third party modules * gluon.simplejson(.dumps, .loads) * gluon.pyrtf(.dumps) * gluon.rss2(.dumps) Gluon v1.13 (this is one of the biggest revisions ever) Improved sql.py has support MySQL, cxOracle (experimental), extract, like and better testing SQLDB.tables and SQLTable.fields are now SQLCalableList objects Fixed bug with editing integer fields storing zero Admin interface now says "insert new [tablename]" and display insert, select or update properly in the title. Added a cache mechamism. Works for data, controllers, views and SQLRows. main.py now uses a request.folder absolute path when not os.name in ['nt','posix']. Seems to work on windowsce devices, except no file locking has consequences. Now you can put modules in applications/[anyapp]/modules and import them with import applications.[anyapp].modules.[module] as [module] Fixed problem with init New applications/examples/controller/global.py controller for docs. Gluon v1.14 Fixed a bug fix in URLs Gluon v1.15 New try:... except. in gluon/main.py for when sessions cannot be saved Now validator/formatter method allows IS_DATE('%d/%m/%Y') web2py v1.16 yes we changed the name! Turns out Gluon was trademarked by somebody else. Although we are not infringing the trademark since this is a non-commercial product we could have run into some issues. So we have been professional and changed the name to web2py. Now SQLFORMs and FORM can have a formname and multiple forms are allowed per page. A new examples/default/index page. web2py.py instead of runme.py mysql sets utf8 encoding. input integer field values are automatically converted int(). web2py v1.17 I posted v1.16 too soon. v1.17 was released after 1h to fix some bugs. web2py v1.18 removed vulnerability in accept_languages and session_id Minor bug fixes. Typos and cleanup cache. Textarea now clears. Support for PyAMF. T returns a class, not a string new template parser (faster?) got rid of sintaxhighlighter in favor of server side CODE fix problem with cacheondisk locking fix 'None' instead of NULL in IS_NOT_IN_DB (I think) gluon.contrib.markdown notnull and unique in SQLField now supported (tested on sqlite mysql and postgresql) Storage now has __getstate__ and __setstate__ needed for pickling. session files are now locked to make it work better with asynchronous requests cxoracle should work, apart for limitby .../examples is now mapped to .../examples/default/index etc. .../init is now mapped to .../welcome if init is not present web2py 1.19 minor typos web2py 1.20 new IFRAME, LABEL, FIELDSET validators P(..cr2br=True) option FORM and SQLFORM have hidden=dict(...) option for REST testing framework. improved examples pages web2py 1.21 replaced paste.httpserver with cherrypy.wsgi server temporary sessions are no longer saved widget has [stop] button and graph logging is done by main by appfactory fixed a bug in sql belongs web2py 1.22-1.25 fixed minor bugs, added IS_NULL_OR web2py 1.26 added shell.py (thanks Limodou!) added memcache support web2py 1.27 IS_NULL_OR now works will all fields admin creates paths to static files wsgiserver options are passed to HttpServer faking limitby for oracle to make appadmin work all objects inherit from object fixed bug in app names with . fixed bug in created RestrictedError object on windows shell is now in gluon and accessible via web2py.py web2py 1.28 fixed bug with belongs, faster sql.py included jquery.js minor aestetical fixes sortable.js is gone web2py 1.29 Now selet mutliple works with get, so does is IS_LENGTH Added IS_LIST_OF fixed problem with admin from windows and localhost web2py 1.30 added flv to contenttype added support for appengine web2py 1.31-1.41 some bug fixes, mostly better appengine support mssql support firebird support widgets support connection pools 1.42 fixed security issue by removing slash escape in mysql removed random everywhere use uuid for session and tickets use http_x_forward_for to figure out the client causing a ticket use longtext and longblob for mysql main now really catches all exceptions no more warnings on GAE 1.43-1.48 html.py rewrite (better support for custom forms) (Bill Ferrett) new stickers in examples (thanks Mateusz) on windows can run in taskbar (Mark Larsen) in admin|edit page link to edit|controller (Nathan Freeze) better error codes and routes_onerror (Timothy Farrell) DAL support for groupy and having DAL support for expressions instead of values DAL has experimental Informix support fixed bug with non-printable chars in DAL 'text' fields limited to 2**16 (to avoid mysql problems) widget has -quiet and -debug (Attila Csipa) web2py_session uses BLOB instead of TEXT improved IS_URL Runs with python 2.6 (Tim) On GAE uses GAE for static files (Robin) 1.49 fixed a bug with taskbar widget, thanks Mark fixed a bug with form.latest made many DIV methods private (_) 1.50 Fixed some bugs introduced in 1.49 1.51 Fixed more bugs introduced in 1.49 (sql _extra and html select) support for sqlite:memory: 1.52 Fixed a minor bug with _extra[key] and key not str. check for upgrade via ajax 1.53 On GAE upload data goes automatically in datastore (blob created automatically) New appadmin runs on GAE (most of it, not all) Martin Hufsky patch allow slicing of fields in DAL expressions 1.54 fixed minor bugs 1.55? rowcount fixed bug when IS_IN_DB involved multiple fields on GAE T.set_current_languages better unittests response.custom_commit and response.custom_rollback you can next cache calls (like cache a controller that caches a select). Thanks Iceberg db(....id==None).select() no longer returns an error but an empty SQLRows on GAE db(...).delete(delete_uploads=True) and SQLFORM.accepts(....delete_uploads=True) will delete all referenced uploaded files DIV.element and DIV.update sqlrows.json() SQLFORM.widgets URL(r=request,args=0) IS_IN_DB(...,multiple=True) for Many2Many (sort of) In URL(...,f) f is url encoded In routes_in=[['a/b/c/','a/b/c/?var=value']] simplejson 2.0.7 1.56 Consider the following table: db.define_table('cirlce', db.Field('radius','double'), db.Field('area','double'), db.Field('modified_on','datetime')) now you can do: # add a comment in the forms db.circle.area.comment="(this is a comment)" # do not show area in create/edit forms db.circle.area.writable=False # do not show now in display forms db.circle.modified_on.readable=False # automatically timestamp when record cretaed db.circle.modified_on.default=request.now # automatically timestamp when record is modified db.circle.modified_on.update=request.now # make the radius appear in bold in display and table db.circle.radius.represent=lambda value: B(value) # make a form that automatically computes area pi=3.1415 form=SQLFOM(db.circle) if form.accepts(request.vars, onvalidation=lambda form: form.vars.area=pi*form.vars.radius**2): ... # make a create form in two possible ways: form=SQLFORM(db.circle) form=SQLFORM(db.circle,0) # make an update form in two possible ways: form=SQLFORM(db.circle,record) form=SQLFORM(db.circle,record_id) # make a display form in two possible ways: form=SQLFORM(db.circle,record,readonly=True) form=SQLFORM(db.circle,record_id,readonly=True) # so now you can do... form=SQLFORM(db.circle,request.args[-1]) and you get a create form if the URL ends in /0, you get an update form if the URL ends in /[valid_record_id] #you can also define once for all timestamp=SQLTable(None,'timestamp', SQLField('created_on','datetime', writable=False, default=request.now), SQLField('modified_on','datetime', writable=False, default=request.now,update=request.now)) #and use it in all your tables db.define_table('mytable',db.Field('somefield'),timestamp) ### One more feature in trunk.... db.define_table('image',SQLField('file','upload')) db.image.file.authorize=lambda row: True or False then controller def download(): return response.download(request,db) -'id' is now a hidden field sqlform - gql references converted to long - admin login has autofocus new notation proposed by Robin, db.table[id] new UploadWidget shows images new generic.html shows request, response, session new LEGEND helper (thanks Marcus) fixed doctests in sql (thanks Robin) new notation for DB record=db.table[id] db.table[id]=dict(...) del db.table[id] - request.env.web2py_version - new class gluon.storage.Settings has lock_keys, lock_values - jquery 1.3.1 - PEP8 compliance - new examples application - runs on jython (no database drivers yet, thanks Phyo) - fixed bugs in tests - passes all unittest but test_rewite (not sure it should pass that one) Lots of patches from Fran Boone (about tools) and Dougla Soares de Andarde (Python 2.6 compliance, user use of hashlib instead of md5, new markdown2.py)
About
Free and open source full-stack enterprise framework for agile development of secure database-driven web-based applications, written and programmable in Python. Created by Massimo Di Pierro. © 2007-2008.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published