Differences between revisions 44 and 45
Revision 44 as of 2006-06-24 08:21:28
Size: 4243
Editor: ARennes-351-1-90-102
Comment:
Revision 45 as of 2006-11-02 20:23:26
Size: 4441
Editor: ARennes-357-1-4-216
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
   version::2.3 (''[[Date(2006-06-24T15:00:00Z)]]'')    version::2.3.2 (''[[Date(2006-11-01T15:00:00Z)]]'')
Line 24: Line 24:

Version 2.3.2 intrduced Instant''''''Site, an application to manage MySQL databases online
Line 49: Line 51:
It can be linked to all databases for which there is a Python API (mySql, Post''''''Gres, etc) It can be linked to all databases for which there is a Python API (MySQL, Post''''''Gres, etc)
Line 60: Line 62:

 * plain CGI scripts, running much faster than usual because the interpreter is not loaded for each request
Line 76: Line 80:
[http://www.python-hosting.com Python-hosting ] supports Karrigell [http://www.webfaction.com WebFaction] supports Karrigell

Masthead

URL

http://www.karrigell.com

version::2.3.2 (Date(2006-11-01T15:00:00Z)) licence::BSD revised platforms::any platform that supports Python 2.3 Python versions::2.3 and above

Deployment Platforms

No requirement besides Python : Karrigell is provided with a web server and a Python database engine (["buzhug"]). It can also run behind Apache, LighTPD and Xitami

Suitability

Web programming

Demos included in the distribution include a Wiki server, Kwiki (a sort of Wiki, but with the wysiwyg editor FCKEditor), a forum, a calendar, an interface for script internationalization, and a portal with user login/logout, personalization and news editing

Version 2.3.2 intrduced InstantSite, an application to manage MySQL databases online

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

Environment Access

Standard Python mechanisms : environment data is available in the namespace where scripts are executed

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 pure-Python ["buzhug"] database engine

It can be linked to all databases for which there is a Python API (MySQL, PostGres, etc)

Presentation Support

  • Python scripts, where the "print" statement is used to send output to the client
  • "Karrigell services" : Python scripts where functions are mapped to URLs (allows to build a whole site with just one script)
  • "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
  • plain CGI scripts, running much faster than usual because the interpreter is not loaded for each request

InTheirOwnWords

Karrigell aims at simplicity for web developers :

  • no separate web server
  • no separate database (["buzhug"] 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

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

Performance and stability have been very much improved since the first versions. Karrigell can now be safely used in production environments

Comments

Hosting

[http://www.webfaction.com WebFaction] supports Karrigell

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

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