Metadata-Version: 2.1
Name: pythononwheels
Version: 0.880b0
Summary: The simple, quick and easy generative web framework for python
Home-page: http://www.pythononwheels.org
Author: khz
Author-email: khz@tzi.org
License: MIT
Keywords: framework web development
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules 
Requires-Dist: tornado

.. figure:: http://www.pythononwheels.org/static/images/pow_logo_300.png
   :alt: Pow logo

   Pow logo

PythonOnWheels reStructured and reImplemented.
=================================================
I call it *SQUEEZY* => for Simple, Quick and Easy.

Principle
---------------
> Designed for simplicity, happiness and Quick results!

As simple to use as possible. Everything you always need on board. 
Batteries included! (tornado Webserver, SQLite DB, NoSQL DBs: tinyDB, MongoDB, MongoDB Atlas Service)
Non intrusive! You can always escape and go RAW. 

Newly implemented:
---------------------
- MongoDB support (Transactions usable with Mongo >4)
- MongoDB Atlas support for even quicker start in the cloud
- Observer for Models (Like ActiveRedcord. Just add a class Named: ModelNameObserver. Will be found and used by convention)
- Added Dirty Model support (like ActiveRecord). Track changes, Show, rollback.


Strong Foundation:
------------------
-  python 3.x
-  tornado webserver
-  sqlalchemy ORM onboard (sqlite, mysql, postgres, oralce, ms-sql ...)
-  DB migrations generated for you (based on alembic)
-  cerberus schemas and validation on board
-  template engine (tornado templates)
-  Many SQL DBs[sqlite, mysql, postgres, ms-sql,orcale ] NoSql DBs: tinyDB, MongoDB and ElasticSearch on board... 
-  authentication with Twitter, Google on board

Super easy, quick to start and all the basics on board:
-------------------------------------------------------

-  super easy relations with decorators @relations.has\_many("comments")
-  super easy REST routing with decorators @app.add\_restful\_routes(),
-  routing decorator @app.add\_route(route)
-  db migrations autogenerated using alembic in the back
-  validation on board with cerberus schemas
-  use the same schema descrition for all model types (sql, nosql,
   elastic..)
-  generate\_models script
-  generate\_migrations script
-  update\_db script
-  generate\_handlers
-  generate\_app
-  automatic scaffolding views (work in progress)

Code examples
-------------

Routes:
~~~~~~~

::

    # You can use regex routes
    # this will call the myget method on HTTP GET calls and will hand over the re-group as the 1st parameter.
    @app.add_route("/index/([0-9]+)*", dispatch={"get" : "myget"})
    # Or you can also use Flask/Werkzeug routes
    @app.add_route('/index/<int:year>', dispatch={"get" : "myyear"})
    class IndexdHandler(BaseHandler):
        def myget(self, index=None):
            print("  index:" + str(index))
            self.render("index.tmpl")

        def myyear(self, year=None):
            self.write("I got year: " + str(year))


Relations: (SQL Models)
~~~~~~~~~~~~~~~~~~~~~~~

::

    @relation.has_many("comments")
    class Post(Base):
        # a blog Post
        schema = {
            'text'      : {'type': 'string'},
            'name'      : {'type': 'string', 'maxlength' : 35},
            'votes'     : {'type': 'integer'},
            'status'    : {'type': 'string', 'allowed' : ['ready to publish', 'needs review', 'draft'] },
            'published' : {'type': 'boolean', 'default' : False }

        }

NoSQL Models
~~~~~~~~~~~~~~~~~~~~~~~

::

    class Post(Base):
        # a blog Post
        schema = {
            'text'      : {'type': 'string'},
            'name'      : {'type': 'string', 'maxlength' : 35},
            'votes'     : {'type': 'integer'},
            'status'    : {'type': 'string', 'allowed' : ['ready to publish', 'needs review', 'draft'] },
            'published' : {'type': 'boolean', 'default' : False },
            'tags'      : {'type': 'list', 'default' : [] }

        }


Hope you see that SQL and NoSQL are pretty much the same. No need for relations in NoSQL. But you have enhanced
datatypes like lists and dicts in NoSQL.
A NoSql List can be mapped to a SQL  @relation.has_many() ....

Enjoy!

Check: `The PythonOnWheels Homepage <http://www.pythononwheels.org>`__
----------------------------------------------------------------------


