Porcupine

Porcupine is a web application server that provides an object oriented framework for developing web applications rapidly.
Download

Porcupine Ranking & Summary

Advertisement

  • Rating:
  • License:
  • LGPL
  • Price:
  • FREE
  • Publisher Name:
  • Tassos Koutsovassilis
  • Publisher web site:
  • http://www.innoscript.org/

Porcupine Tags


Porcupine Description

Porcupine is a web application server that provides an object oriented framework for developing web applications rapidly. Porcupine is a web application server that provides an object oriented framework for developing web applications rapidly.Many of the tasks required for building web applications as you know them, are either eliminated or simplified. For instance, when developing a Porcupine application you don't have to design a relational database. You only have to design and implement your business objects as classes, using the building blocks provided by the framework (datatypes). Porcupine integrates a native object database, no mapping required.Another tedious task for web applications is the interface design, and the constraints imposed by HTML. QuiX, the server's integrated XUL motor, simplifies the interface design process. All you have to do is describe your application's interface in XML and write the appropriate event handlers. You don't have to waste time and money on widget implementations. QuiX comes with a variety of ready to use widgets, accelerating the development process.Generally, every Porcupine application consists of three distinct layers. The first is the business layer consisting of the business objects which encapsulate the business logic.The second layer binds the HTTP protocol with the first layer's business objects. This layer is implemented using Python Server Pages or Servlets. If using XML-RPC, one common approach is to directly map an XML-RPC method to a business object's method.The third layer, the presentation layer, usually consists of XML UI definitions and JavaScript event handlers.The first two layers are executed server side and the third layer is executed on the client (browser). What's New in This Release: · NEW: Object indexing support including unique indexes per container. Currently, the indexes are used for common database usage patterns such as getting the children of a container, but not yet fully leveraged by OQL. · NEW: Added multi-processing support for the asynchrounous TCP-IP services (requires Python 2.6). · NEW: Added conditional Etag support by using the provided "porcupine.filters.etag" decorator or the "porcupine.filters.caching.Etag" pre-processing filter. · NEW: New database and cookie based session managers. · NEW: Added support for shortcuts by using the new "porcupine.systemObjects.Shortcut" content type. · NEW: Cascade deletes for Relator1 and RelatorN data types. · NEW: QuiX now includes a lightweight rich text editor based on Cameron Adams' work (http://www.themaninblue.com/). · NEW: QuiX now supports auto sized labels, icons, buttons and boxes. The dimensions of these kind of widgets are automatically adjusted based on their contents. · NEW: Added themes support for QuiX. · NEW: New "QuiX.queryString" function for getting query string parameters. · NEW: New "QuiX.baseUrl" setting that contains the toolkit's root folder. · NEW: QuiX now includes a JSON parser. See "QuiX.parsers.JSON". · NEW: QuiX now has a client side persistence module based on PersistJS (http://pablotron.org/?cid=1557). · NEW: New "QuiX.utils.hashlib" module. · NEW: Ability for having persistent datasets on the client side by using smart conditional Etags. · NEW: QuiX now supports IE 8, Safari 4 and Opera 9. · NEW: New method "setValue" for QuiX select lists. · NEW: New "hbox" and "vbox" shortcuts for horixontal and vertical boxes. · OPT: QuiX now has namespaces (i.e XButton is now QuiX.ui.Button). The old naming convention is kept for backwards compatibility. · OPT: "db.getItem" no longer raises an ObjectNotFound exception. Instead None is returned. · OPT: "relCc" attribute of relators and references now accepts base classes. · OPT: server side XMLRPC encoding speed improvements. · OPT: Porcupine OQL is now using PLY 2.5. · OPT: New implementation of "QuiX.innerText" function. · OPT: The "setExpiration" method of the HttpResponse class now accepts a "cache_type" optional argument. The default value is "private". · OPT: New refactored transactions. Transactions are now non-blocking by using the DB_TXN_NOWAIT flag. · OPT: Otimized session management. · OPT: Optimized asyncore loop by using longer timeouts. · OPT: Do not retrieve session info for static files. · OPT: Ability to set widget overflow values per axis i.e "auto hidden". · OPT: "porcupineadmin.py -c" now performs disaster recovery. · OPT: The "_safetype" class attribute of data type classes now accepts a list of the allowed Python types. · OPT: If the bsddb module is not present then try to import bsddb3, since bsddb is removed from the latest Python versions. · OPT: The "@db.transactional" decorator now accepts an optional "nosync" argument for having faster but non durable transactions. · OPT: Ability to have the data and log files in different locations by using the "bdb_log_dir" setting in the porcupine configuration file. · OPT: QuiX now includes a universal base Widget script. · FIX: Fixed QuiX's "onunload" event (it was fired only when the destroy method of a widget was explicitly called) · FIX: Fixed __props__ generation when using codegen. · FIX: Fixed internal redirection. · FIX: "padding" is now a valid parameter for QuiX windows. · FIX: Fixed hidden buttons. · DEP: "HttpContext.current()" is deprecated. Use "from porcupine import context" instead. · DEP: Containers no longer have the "_subfolders" and "_items" attributes. This kind of info is now derived from indexes allowing hundreds of thousands descendants with no performance penalty. · DEP: Most of the API methods are deprecrated due to PEP8 alignment. Check the server's log for deprecated calls. · DEP: Removed all __slots__ attributes from all schema related classes. · DEP: "porcupine.core.servicetypes.asyncBaseServer.BaseRequest" is now "porcupine.core.networking.request.BaseRequest" · DEP: "porcupine.security.objectAccess.getAccess" is deprecated. Use "porcupine.utils.permsresolver.get_access" instead. · DEP: QuiX boxes are no longer redrawn when removing a child widget. The developer should take care of this. · DEP: "QuiX.getOS" is deprecated use "QuiX.utils.BrowserInfo.OS" instead.


Porcupine Related Software