Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2013-08-13 04:11:05
Size: 909
Comment:
Revision 6 as of 2013-08-15 03:05:23
Size: 3622
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
= Pyramid for Enterprise =
Line 4: Line 5:
== Pyramid Setup == == Install Pyramid ==
Line 15: Line 16:
== Pyramid Project: myapp == == Create Pyramid Project: myapp ==
Line 27: Line 28:
Checking the first version into revision control of your choosing.
Line 61: Line 63:

=== Enable Mako ===
In order to use Mako as in Pylons, you must specify a template search path in the settings. Edit development.ini:
{{{
[app:main]
...
mako.directories = myapp:templates
}}}

[[http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/templates.html#mako-templates|enable mako with pyramid]]
[[http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/pylons/templates.html|enable mako html with pyramid]]

Then in \__init\__.py add below. This will be needed so that designer can use .html mako template files in his software.
{{{
config = Configurator(settings=settings)
config.add_renderer(".html", "pyramid.mako_templating.renderer_factory")
}}}

=== Add first page ===

We will add new route in. This what tells pyramid program we want localhost/recall
{{{
vi __init__.py
#Add below home
}}}
Add below home
{{{
config.add_route('recall', '/recall')
}}}
Edit views.py and add our new page. This tells that anybody that calls localhost/recall should call our route_name called recall in views.py
{{{
@view_config(route_name='recall', renderer='recall.html')
def recall(request):
    return {'project':'Myapp'}
}}}
Now inside template folder add your new template
{{{
cd template
vi recall.html
}}}
Add
{{{
<html>
 <head>
     <title>${project} Application</title>
 </head>
   <body>
      <h1 class="title">Welcome to <code>${project}</code>, an
       application generated by the <a
       href="http://docs.pylonsproject.org/projects/pyramid/current/"
      >pyramid</a> web application framework using Mako.</h1>
   </body>
 </html>
}}}
Visit: http://localhost:6543/recall

{{attachment:pyramid_mako.png}}

=== Load mysql-python ===
First we need to add required package called "mysql-python". Add this to setup.py under required
{{{
'mysql-python',
}}}
Then do
{{{
python setup.py develop
}}}
This will install required software.

=== Autoload table from database ===
In models.py add below. This creates a python class called Recall and will autoload table called "recall_db" from the database. We use DeferredReflection because this is a helper function from sqlalchemy which does not require "engine" be to bound and loaded at this time.

{{{
from sqlalchemy.ext.declarative import DeferredReflection

class Recall(DeferredReflection, Base):
    __tablename__ = 'recall_db'
}}}

Now right below '''Base.metadata.bind = engine''' please add
{{{
DeferredReflection.prepare(engine)
}}}
This will load the function and autoload the table that we have defined in the models.py



Pyramid/enterprise

Pyramid for Enterprise

Install Pyramid

aptitude install python-virtualenv

virtualenv --no-site-packages pyramid_env
cd pyramid_env
source ./bin/activate
easy_install pyramid

Create Pyramid Project: myapp

pcreate -s alchemy myapp

Install remaining components

cd myapp
python setup.py develop

[Optional] Checking the first version into revision control of your choosing.

aptitude install bzr
cd myapp
bzr init .
bzr add
bzr commit -m"Initial Import"

Run a test

python setup.py test -q

Check how much code is covered by tests

easy_install nose coverage
nosetests --cover-package=myapp --cover-erase --with-coverage

Populate the database

Replace myapp with your app name.

initialize_myapp_db development.ini

Start the Application

pserve development.ini --reload

Visit http://localhost:6543/

Write your application

Enable Mako

In order to use Mako as in Pylons, you must specify a template search path in the settings. Edit development.ini:

[app:main]
...
mako.directories = myapp:templates

enable mako with pyramid enable mako html with pyramid

Then in \init\.py add below. This will be needed so that designer can use .html mako template files in his software.

config = Configurator(settings=settings)
config.add_renderer(".html", "pyramid.mako_templating.renderer_factory")

Add first page

We will add new route in. This what tells pyramid program we want localhost/recall

vi __init__.py
#Add below home

Add below home

config.add_route('recall', '/recall')

Edit views.py and add our new page. This tells that anybody that calls localhost/recall should call our route_name called recall in views.py

@view_config(route_name='recall', renderer='recall.html')
def recall(request):
    return {'project':'Myapp'}

Now inside template folder add your new template

cd template
vi recall.html

Add

<html>
 <head>
     <title>${project} Application</title>
 </head>
   <body>
      <h1 class="title">Welcome to <code>${project}</code>, an
       application generated by the <a
       href="http://docs.pylonsproject.org/projects/pyramid/current/"
      >pyramid</a> web application framework using Mako.</h1>
   </body>
 </html>

Visit: http://localhost:6543/recall

pyramid_mako.png

Load mysql-python

First we need to add required package called "mysql-python". Add this to setup.py under required

'mysql-python',

Then do

python setup.py develop

This will install required software.

Autoload table from database

In models.py add below. This creates a python class called Recall and will autoload table called "recall_db" from the database. We use DeferredReflection because this is a helper function from sqlalchemy which does not require "engine" be to bound and loaded at this time.

from sqlalchemy.ext.declarative import DeferredReflection

class Recall(DeferredReflection, Base):
    __tablename__ = 'recall_db'

Now right below Base.metadata.bind = engine please add

DeferredReflection.prepare(engine)

This will load the function and autoload the table that we have defined in the models.py

MyWiki: Pyramid/enterprise (last edited 2016-09-26 02:43:53 by LukaszSzybalski)