Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

The handy environment for developing GAE applications.

Project Description
## ****Laconic MVC****
### A distributive for fast deployment on Google App Engine.
-----

### **Benefits:**
[Laconic MVC](http://laconic-mvc.appspot.com/) - the handy environment for developing GAE applications.

* This boilerplate contains best python libraries for web development.
* GaeDataManager - upload manager for datastore.
* BottleGaeWrapper - wrapper around beaker, appengine users sevice, mako templates.


GaeDataManager can serve as great starting pattern for BackboneJS (CoffeeScript) ifaces.
##### [Example](http://laconic-mvc.appspot.com/files/)
##### [file-manager.coffee](https://bitbucket.org/nesforge/laconic/raw/ebb4ef0ae81cad8d6e07bbf52f9303fad6043b1f/app/view/assets/file-manager.coffee)
----
###***How to:***
##### ***Create controller:***
###### ./app/index.py
```python

from config import app
from model.index import Model

@app.get('/')
def index(wrap): #wrap is wrapper for gae


data_query = Model.all()

wrap.page_number = request.query.get('page')
wrap.page_size = request.query.get('size')

wrap.paginate(data_query)

return wrap.render('index.haml', key = value, name = 'world', **{})

```
-----

##### ***Create view***:

###### ./app/view/index.haml:
```HAML
%%inherrit(file="layout.haml")

%div.panel.row

-if name:

Hello ${name}!!

-for i in name:
${i}

%%include(file="file.haml")

```

----

##### ***Write in session***:

```python
wrap.set(counter=0)
wrap.get('counter')
wrap.clean() #clean session data
```

----

##### ***Get user info***:

```python
wrap.user()
wrap.nickname()
wrap.email()
wrap.user_id()
```

----

##### ***Call Login / Logout actions***:

Simply, a http query string must contain 'login' or 'logout' in order to call login/logout actions.

```python
wrap.login()#.logout()
```

----

##### ***Check permissions:***

Write your own permission control methods in ./dist/handlers.py. (engine class)
There are two methods by default.

```python
wrap.admin()
wrap.permission('admin')
```

----

##### ***Run unit tests:***

There are who runners - the first one for datastore models, another for controllers.

###### ***Test datastore models:***
To test your model create test file in model directory (example: ./app/model/test_example.py),
and run 'db_tests.py' with path to google app engine as first argument:
```sh
python db_tests.py /path/to/google_app_engine
```

###### ***Test controllers***
To test your controllers write your callbacks and requests in test_app.py ,
and run with path to google app engine as first argument:

```sh
python test_app.py /path/to/google_app_engine
```

##### ***Develop frontend***

All frontent libraries live in './app/view/static/' ,
CoffeeScript and SCSS files placed in './app/view/assets/' .
In order to compile assets directory - run ./app/view/build.sh.
<br/>
```sh
sh ./app/view/build.sh
```

You can bind this command to your lovely editor or IDE.


----
#### ***This distributive includes:***
* GaeDataManager - Upload manager for Google datastore.
* BottleGaeWrapper - GAE utils for bottle.
* PyHaml - HAML syntax for Mako.
* CoffeeScript - Best syntax sugar for javascript.
* Foundation5 - Responsive CSS framework.
* BackboneJS / Jquery.
* Bottle.py - WSGI microframework.
* Mako - Python template engine.
* Markdown - Markdown for python.
* WTForms - Web form renderer.
* Beaker - Session midleware
* GAE mini profiler - app engine profiler
* Beautiful Soup 4 - Python html parser.
* WebTest - WSGI test runner
-----

(c) Anton A Nesterov 2014
LICENSE: Apache2.0
Release History

Release History

This version
History Node

1.0

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting