Uliweb

Software Screenshot:
Uliweb
Software Details:
Version: 0.3
Upload Date: 17 Feb 15
Developer: Limodou
Distribution Type: Freeware
Downloads: 9

Rating: nan/5 (Total Votes: 0)

Uliweb is an open source, cross-platform, easy to use and simple software project designed to act as a web development framework for building web-based applications on mainstream operating systems. It is easily extendable, flexible, as well as deployable on various platforms. It comes with enough sample code and human readable documentation.

Features at a glance

Key features include a MVT (Model View Template) development model, powerful and flexible URL mapping, environment execution mode, ORM, I18n, built-in extensions (dispatch, middleware, etc.), command-line tools, support for mod_wsgi in Apache, support for uwsgi, a development server, and enhanced debugging.

Additionally, it provides support for organizing projects, support for viewing templates, environment execution mode, as well as the ability to direct Python code in a template. The application is not written from scratch, which means that it is based on several existing projects, including Werkzeug and SqlAlchemy.

Among other features, we can mention support for mod_wsgi in Apache, support for uwsgi, a development server that reloads automatically every time a module is modified, enhanced debugging support, a dispatch extension, a middleware extension, and a powerful command-line interface (CLI) that allows you to create projects, apps, export static files and build a development web server.

Under the hood and supported OSes

The software is written entirely in the Python programming language, which means that it will run on any computer operating system where Python is available and installed. It has been successfully tested with many GNU/Linux flavors, as well as with the Microsoft Windows and Mac OS X operating systems. Uliweb is only available for download as a source archive, which means that the user needs to configure and compile it prior to installation. It is virtually installable on any GNU/Linux platform, and can be found on the default software repositories of selected distributions of Linux, running on 32-bit and 64-bit hardware platforms.

What is new in this release:

  • Fix config template and add uwsgi shell support
  • Add environment variables support in settings.ini. For example, there is a MYSQL_PORT defined in environment, so you can defined something in settings.ini:
  • [DEFAULT]
  • port = $MYSQL_PORT
  • port_str = '${MYSQL_PORT}'
  • $MYSQL_PORT is the same as ${MYSQL_PORT}. Just when the variable follows identifier, so ${} can easily separate between them.
  • Add STATIC_COMBINE_CONFIG configuration, you can toggle static combination with it. Default is False. The configuration is:
  • [STATIC_COMBINE_CONFIG]
  • enabled = False
  • Fix objcache app bug, if not fields defined in settings, it'll use all columns of table
  • Add get_table function to functions, you can use it to get table object. Used in uliweb.contrib.tables app.
  • Add local_cache to local in SimpleFrame, and it can be used to store require relative cache values, and it'll be empty after each require process.
  • Improve get_object() function in ORM, add use_local parameter, so the cached value will be checked in local_cache first, and also save it in local_cache when get a value from cache or database.
  • Improve objcache config format, you can also define table like this:
  • user = {'fields':['username'], 'expire':expire_time, 'key':callable(instance)|key_field}
  • #or
  • user = ['username', 'nickname']
  • #or
  • user =
  • If no fields defined, it'll use all fields of Model. And if expire is 0 or not defined, it'll not expired at all.
  • key will be used to replace id, if you want another key value, and it can be also a callable object, it'll receive an instance of Model parameter, so you can create any key value as you want.
  • Add Optimistic Concurrency Control support for ORM, so you should defined version Field first in Model, then when you save the object, you should use:
  • obj.save(occ=True)
  • If there is already other operation saved the record, it'll raise an SaveError Exception by default, because the version has been changed. You can also pass:
  • occ_fieldname used to defined the version fieldname, default is version
  • occ_exception used to enabled Exception raised, default is True, if you set it False it'll return False, but not raise an Exception.

What is new in version 0.2.4:

  • Fix ORM is not compatible with SQLAlchemy 0.9.1. Old style:
  • cond = None
  • cond = (Blog.c.id==5) & None
  • will not right in 0.9.1, because None will not be skipped, so you can change above code cond = None to:
  • from sqlalchemy.sql import true
  • cond = true()
  • from uliweb.orm import true
  • cond = true()
  • add __contains__ to functions, so you can test if an API is already defined, just use:
  • 'flash' in functions
  • Refact generic.py, remove functions.flash and functions.get_fileserving dependencies by default.
  • Fix yield support in view function, you can also used in gevent environment, for example:
  • @expose('/test')
  • def test():
  • yield ""
  • for i in range(10):
  • yield "%d" % (i + 1)
  • sleep(1)
  • yield ""
  • Fix rawsql() bug for different database engine
  • Fix jsonp() dumps Chinese characters bug
  • Add trim_path() function to utils/common.py, it can trim a file path to limited length, for example:
  • >>> a = '/project/apps/default/settings.ini'
  • >>> trim_path(a, 30)
  • '.../apps/default/settings.ini'
  • Default limited length is 30.
  • Add ORM connection information output when given -v option in command line. And the password will be replace with '*'. For example:
  • $>uliweb syncdb -v
  • Connection : mysql://blog:***@localhost/blog?charset=utf8
  • [default] Creating [1/1, blog] blog...EXISTED
  • Add multiple apps support for makeapp command, so you can use :
  • uliweb makeapp a b c
  • to create a, b, c apps at once time.
  • Refactor save_file() process, add headers and convertors parameter.
  • headers used to create csv header instead of using column name, but you can create alias name like this:
  • User.c.username.label(u"Name")
  • and convertors used to convert column value, for example:
  • def name(value, data):
  • """
  • value is the column value
  • data is the current record object
  • """
  • return value + 'test'
  • save_file(do_(select([User.c.name])), 'test.csv', convertors={'name':name})
  • Fix call_view() invoke wrap_result bug. Missing pass handler parameter to wrap_result.

Requirements:

  • Python

Other Software of Developer Limodou

UliPad
UliPad

11 May 15

Plugs
Plugs

20 Feb 15

Dict4Ini
Dict4Ini

5 Jun 15

Comments to Uliweb

Comments not found
Add Comment
Turn on images!