Differences between revisions 18 and 19
Revision 18 as of 2004-01-04 20:52:48
Size: 4704
Editor: ARennes-204-1-25-212
Comment:
Revision 19 as of 2004-01-04 20:54:57
Size: 4797
Editor: ARennes-204-1-25-212
Comment:
Deletions are marked like this. Additions are marked like this.
Line 68: Line 68:
Karrigell will remain light and simple. Current concerns are stability, testing on different platforms, and adding new demos to validate the design and functionalities Karrigell will remain light and simple. Current concerns are stability, testing on different platforms, and adding new demos to validate the design and functionalities. The next big step will allow Karrigell to be run with external web servers (Xitami, Apache)

Masthead

URL

http://karrigell.sourceforge.net

version

1.4 (Date(2004-01-04T15:00:00))

licence
GPL
platforms
any platform that supports Python 2.3
Python versions
2.3

Deployment Platforms

No requirement besides Python : Karrigell is provided with a web server and a relational database (gadfly)

Suitability

Web sites with moderate traffic, such as personal sites running on a home computer, or stand-alone programs using a web interface

Demos included in the distribution include a minimal Wiki server, an interface for script internationalization, a forum, and a portal with user login/logout, personalization and news editing

Development Interfaces

Servlet-style : the scripts, either pure Python or mixing HTML and Python, are executed in a namespace which provides all useful information, including HTTP headers, authentication data, etc. For instance, form fields are available as the QUERY dictionary, or with a variable with a leading underscore (the field myField is available as _myField, either a string or a list depending on the field type)

The namespace also provides custom exceptions to stop its execution, such as HTTP_REDIRECTION (see the on-line documentation)

A function Include(script_or_file, **args) allows the inclusion of an html file or of a file inside a script. If script B is included inside script A, it is executed in script A's namespace ; additional **args can be added to this namespace

A whole component (a set of scripts performing an elementary service, agenda or forum for instance) can be included in a page with the IncludeComponent(componentUrl) function. The component can be developed and tested stand-alone and will run unmodified in the calling page

Environment Access

Standard Python mechanisms

Session, Identification and Authentication

Provided through functions available in scripts

Session() returns a session object, to which attributes can be set (arbitrary Python objects : user login, database connexion and cursor, etc.)

Basic HTTP authentication is available with Authentication(testFunction[,realm,errorMessage]) where testFunction is a user-defined function taking no argument, which returns true if the authentication test succeeds (depending on the values of AUTH_USER and AUTH_PASSWORD) and false otherwise

Persistence Support

Karrigell is provided with the gadfly database and a relational-object mapping which allows easy storing of the session objects, and of user-related information (preferences, etc)

It can be linked to all databases for which there is a Python API (mySql, PostGres to remain on the OpenSource side)

Presentation Support

  • Python scripts, where the "print" statement is used to send output to the client
  • "Python Inside HTML" (PIH) which looks like PHP, ASP, etc : HTML code with Python code inserted inside <% and %>, with shortcuts for variables : <%= myVar %> and for translated strings which use the gettext mechanism (for which Karrigell provides a simple interface) : <%_ "string to translate" %>

  • "HTML Inside Python" which are Python scripts, except that the lines beginning with a string are sent to standard output as if there were a "print" statement before

InTheirOwnWords

Karrigell aims at simplicity for web developers :

  • no separate web server (the standard Python distribution provides one)
  • no separate database (gadfly is included), although users can link to any base they like provided there is a Python API for it
  • a namespace for Python scripts in which developers will find all useful data and functions for the most ordinary tasks
  • a way to nest pages and scripts with the Include() function
  • components with the IncludeComponent() function

The inspirations were EasyPHP, a package which provides Apache, PHP, mySql and PHPmyAdmin all in one, and saves the pain of installing each of them and make them all work together ; the wittily named Poor Man's Zope (PMZ) which showed how easy it was to make Python servlets (unfortunately unmaintained) ; and the pleasure I have programming things in Python

Karrigell will remain light and simple. Current concerns are stability, testing on different platforms, and adding new demos to validate the design and functionalities. The next big step will allow Karrigell to be run with external web servers (Xitami, Apache)

Of course, with only 850 kb, it does not try to rival products such as Zope or WebWare for Python : "Karrigell" means "cart" in Breton, a light and handy tool, but don't put too much load on it !

Comments

Hosting

Karrigell (last edited 2010-08-15 09:32:33 by 222)

Unable to edit the page? See the FrontPage for instructions.