=================
Werkzeug Examples
=================

This directory contains various example applications and example code of
Werkzeug powered applications.

Beside the proof of concept applications and code snippets in the partial
folder they all have external dependencies for template engines or database
adapters (SQLAlchemy only so far). Also, every application has click as
external dependency, used to create the command line interface.


Full Example Applications
=========================

The following example applications are application types you would actually
find in real life :-)


`simplewiki`

    A simple Wiki implementation.

    Requirements:

    -   SQLAlchemy
    -   Creoleparser >= 0.7
    -   genshi

    You can obtain all packages in the Cheeseshop via easy_install.  You have
    to have at least version 0.7 of Creoleparser.

    Usage::

        ./manage-simplewiki.py initdb
        ./manage-simplewiki.py runserver

    Or of course you can just use the application object
    (`simplewiki.SimpleWiki`) and hook that into your favourite WSGI gateway.
    The constructor of the application object takes a single argument which is
    the SQLAlchemy URI for the database.

    The management script for the devserver looks up the an environment var
    called `SIMPLEWIKI_DATABASE_URI` and uses that for the database URI.  If
    no such variable is provided "sqlite:////tmp/simplewiki.db" is assumed.

`plnt`

    A planet called plnt, pronounce plant.

    Requirements:

    -   SQLAlchemy
    -   Jinja2
    -   feedparser

    You can obtain all packages in the Cheeseshop via easy_install.

    Usage::

        ./manage-plnt.py initdb
        ./manage-plnt.py sync
        ./manage-plnt.py runserver

    The WSGI application is called `plnt.Plnt` which, like the simple wiki,
    accepts a database URI as first argument.  The environment variable for
    the database key is called `PLNT_DATABASE_URI` and the default is
    "sqlite:////tmp/plnt.db".

    Per default a few python related blogs are added to the database, you
    can add more in a python shell by playing with the `Blog` model.

`shorty`

    A tinyurl clone for the Werkzeug tutorial.

    Requirements:

    -   SQLAlchemy
    -   Jinja2

    You can obtain all packages in the Cheeseshop via easy_install.

    Usage::

        ./manage-shorty.py initdb
        ./manage-shorty.py runserver

    The WSGI application is called `shorty.application.Shorty` which, like the
    simple wiki, accepts a database URI as first argument.

    The source code of the application is explained in detail in the Werkzeug
    tutorial.

`couchy`

    Like shorty, but implemented using CouchDB.

    Requirements :

    -   werkzeug : http://werkzeug.pocoo.org
    -   jinja : http://jinja.pocoo.org
    -   couchdb 0.72 & above : https://couchdb.apache.org/

`cupoftee`

    A `Teeworlds <https://www.teeworlds.com/>`_ server browser.  This application
    works best in a non forking environment and won't work for CGI.

    Usage::

        ./manage-cupoftee.py runserver
