maintenance work
* remove generated template python code (fixes #6) * add an index controller and make it the default (addresses #5) * add a dependency to sqlalchemy-migrate (fixes #4, addresses #2) git-svn-id: file:///var/www/wwwusers/usr01/svn/pyalchemybiz/trunk@6 389c73d4-bf09-4d3d-a15e-f94a37d0667a
This commit is contained in:
parent
554276ed23
commit
ab91d92af3
14 changed files with 52 additions and 213 deletions
|
@ -1,45 +0,0 @@
|
||||||
from mako import runtime, filters, cache
|
|
||||||
UNDEFINED = runtime.UNDEFINED
|
|
||||||
__M_dict_builtin = dict
|
|
||||||
__M_locals_builtin = locals
|
|
||||||
_magic_number = 4
|
|
||||||
_modified_time = 1223071301.6449161
|
|
||||||
_template_filename=u'/home/jan/src/pyalchemybiz/pyalchemybiz/templates/base.mako'
|
|
||||||
_template_uri=u'/base.mako'
|
|
||||||
_template_cache=cache.Cache(__name__, _modified_time)
|
|
||||||
_source_encoding=None
|
|
||||||
_exports = []
|
|
||||||
|
|
||||||
|
|
||||||
def render_body(context,**pageargs):
|
|
||||||
context.caller_stack._push_frame()
|
|
||||||
try:
|
|
||||||
__M_locals = __M_dict_builtin(pageargs=pageargs)
|
|
||||||
h = context.get('h', UNDEFINED)
|
|
||||||
next = context.get('next', UNDEFINED)
|
|
||||||
__M_writer = context.writer()
|
|
||||||
# SOURCE LINE 1
|
|
||||||
__M_writer(u'<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n<html>\n <head>\n <title>PyAlchemyBiz</title>\n ')
|
|
||||||
# SOURCE LINE 6
|
|
||||||
__M_writer(unicode(h.stylesheet_link_tag('/pyalchemybiz.css')))
|
|
||||||
__M_writer(u'\n ')
|
|
||||||
# SOURCE LINE 7
|
|
||||||
__M_writer(unicode(h.javascript_include_tag(
|
|
||||||
'/javascripts/pyalchemybiz.js', builtins=True)))
|
|
||||||
# SOURCE LINE 8
|
|
||||||
__M_writer(u'\n </head>\n <body>\n <div class="content">\n ')
|
|
||||||
# SOURCE LINE 12
|
|
||||||
__M_writer(unicode(next.body()))
|
|
||||||
__M_writer(u'')
|
|
||||||
# SOURCE LINE 13
|
|
||||||
__M_writer(u' <p class="footer">\n Return to the\n ')
|
|
||||||
# SOURCE LINE 15
|
|
||||||
__M_writer(unicode(h.link_to('FrontPage',
|
|
||||||
h.url_for(action="index"))))
|
|
||||||
# SOURCE LINE 16
|
|
||||||
__M_writer(u'\n </p>\n </div>\n </body>\n</html>\n')
|
|
||||||
return ''
|
|
||||||
finally:
|
|
||||||
context.caller_stack._pop_frame()
|
|
||||||
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
from mako import runtime, filters, cache
|
|
||||||
UNDEFINED = runtime.UNDEFINED
|
|
||||||
__M_dict_builtin = dict
|
|
||||||
__M_locals_builtin = locals
|
|
||||||
_magic_number = 4
|
|
||||||
_modified_time = 1223072023.421654
|
|
||||||
_template_filename='/home/jan/src/pyalchemybiz/pyalchemybiz/templates/customer.mako'
|
|
||||||
_template_uri='/customer.mako'
|
|
||||||
_template_cache=cache.Cache(__name__, _modified_time)
|
|
||||||
_source_encoding=None
|
|
||||||
_exports = []
|
|
||||||
|
|
||||||
|
|
||||||
def _mako_get_namespace(context, name):
|
|
||||||
try:
|
|
||||||
return context.namespaces[(__name__, name)]
|
|
||||||
except KeyError:
|
|
||||||
_mako_generate_namespaces(context)
|
|
||||||
return context.namespaces[(__name__, name)]
|
|
||||||
def _mako_generate_namespaces(context):
|
|
||||||
pass
|
|
||||||
def _mako_inherit(template, context):
|
|
||||||
_mako_generate_namespaces(context)
|
|
||||||
return runtime._inherit_from(context, u'base.mako', _template_uri)
|
|
||||||
def render_body(context,**pageargs):
|
|
||||||
context.caller_stack._push_frame()
|
|
||||||
try:
|
|
||||||
__M_locals = __M_dict_builtin(pageargs=pageargs)
|
|
||||||
h = context.get('h', UNDEFINED)
|
|
||||||
c = context.get('c', UNDEFINED)
|
|
||||||
__M_writer = context.writer()
|
|
||||||
# SOURCE LINE 1
|
|
||||||
__M_writer(u'\n\n<h1>Hallo</h1>\n\n<ul id="customers">\n')
|
|
||||||
# SOURCE LINE 6
|
|
||||||
for customer in c.customers:
|
|
||||||
# SOURCE LINE 7
|
|
||||||
__M_writer(u' <li>')
|
|
||||||
__M_writer(unicode(customer.firstname))
|
|
||||||
__M_writer(u' ')
|
|
||||||
__M_writer(unicode(customer.lastname))
|
|
||||||
__M_writer(u' [')
|
|
||||||
__M_writer(unicode(h.link_to('edit', h.url_for(id=customer.id, action="edit"))))
|
|
||||||
__M_writer(u']</li>\n')
|
|
||||||
# SOURCE LINE 9
|
|
||||||
__M_writer(u'</ul>\n')
|
|
||||||
return ''
|
|
||||||
finally:
|
|
||||||
context.caller_stack._pop_frame()
|
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ beaker.session.secret = somesecret
|
||||||
# invalidate the URI when specifying a SQLite db via path name
|
# invalidate the URI when specifying a SQLite db via path name
|
||||||
sqlalchemy.default.url = sqlite:///%(here)s/pyalchemybiz.db
|
sqlalchemy.default.url = sqlite:///%(here)s/pyalchemybiz.db
|
||||||
sqlalchemy.default.echo = true
|
sqlalchemy.default.echo = true
|
||||||
|
sqlalchemy.convert_unicode = true
|
||||||
|
|
||||||
|
|
||||||
# Logging configuration
|
# Logging configuration
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
Metadata-Version: 1.0
|
Metadata-Version: 1.0
|
||||||
Name: pyalchemybiz
|
Name: pyalchemybiz
|
||||||
Version: 0.0.0dev
|
Version: 0.1dev-r5
|
||||||
Summary: UNKNOWN
|
Summary: python based small business suite.
|
||||||
Home-page: UNKNOWN
|
Home-page: http://www.dittberner.info/projects/pyalchemybiz
|
||||||
Author: UNKNOWN
|
Author: Jan Dittberner
|
||||||
Author-email: UNKNOWN
|
Author-email: jan@dittberner.info
|
||||||
License: UNKNOWN
|
License: UNKNOWN
|
||||||
Description: UNKNOWN
|
Description: UNKNOWN
|
||||||
Platform: UNKNOWN
|
Platform: UNKNOWN
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
MANIFEST.in
|
MANIFEST.in
|
||||||
README.txt
|
README.txt
|
||||||
|
development.ini
|
||||||
setup.cfg
|
setup.cfg
|
||||||
setup.py
|
setup.py
|
||||||
|
test.ini
|
||||||
|
data/templates/base.mako.py
|
||||||
|
data/templates/customer.mako.py
|
||||||
|
docs/index.txt
|
||||||
pyalchemybiz/__init__.py
|
pyalchemybiz/__init__.py
|
||||||
pyalchemybiz/websetup.py
|
pyalchemybiz/websetup.py
|
||||||
pyalchemybiz.egg-info/PKG-INFO
|
pyalchemybiz.egg-info/PKG-INFO
|
||||||
|
@ -9,6 +14,7 @@ pyalchemybiz.egg-info/SOURCES.txt
|
||||||
pyalchemybiz.egg-info/dependency_links.txt
|
pyalchemybiz.egg-info/dependency_links.txt
|
||||||
pyalchemybiz.egg-info/entry_points.txt
|
pyalchemybiz.egg-info/entry_points.txt
|
||||||
pyalchemybiz.egg-info/paste_deploy_config.ini_tmpl
|
pyalchemybiz.egg-info/paste_deploy_config.ini_tmpl
|
||||||
|
pyalchemybiz.egg-info/paster_plugins.txt
|
||||||
pyalchemybiz.egg-info/requires.txt
|
pyalchemybiz.egg-info/requires.txt
|
||||||
pyalchemybiz.egg-info/top_level.txt
|
pyalchemybiz.egg-info/top_level.txt
|
||||||
pyalchemybiz/config/__init__.py
|
pyalchemybiz/config/__init__.py
|
||||||
|
@ -16,6 +22,7 @@ pyalchemybiz/config/environment.py
|
||||||
pyalchemybiz/config/middleware.py
|
pyalchemybiz/config/middleware.py
|
||||||
pyalchemybiz/config/routing.py
|
pyalchemybiz/config/routing.py
|
||||||
pyalchemybiz/controllers/__init__.py
|
pyalchemybiz/controllers/__init__.py
|
||||||
|
pyalchemybiz/controllers/customer.py
|
||||||
pyalchemybiz/controllers/error.py
|
pyalchemybiz/controllers/error.py
|
||||||
pyalchemybiz/controllers/template.py
|
pyalchemybiz/controllers/template.py
|
||||||
pyalchemybiz/lib/__init__.py
|
pyalchemybiz/lib/__init__.py
|
||||||
|
@ -23,7 +30,12 @@ pyalchemybiz/lib/app_globals.py
|
||||||
pyalchemybiz/lib/base.py
|
pyalchemybiz/lib/base.py
|
||||||
pyalchemybiz/lib/helpers.py
|
pyalchemybiz/lib/helpers.py
|
||||||
pyalchemybiz/model/__init__.py
|
pyalchemybiz/model/__init__.py
|
||||||
|
pyalchemybiz/model/customer.py
|
||||||
|
pyalchemybiz/model/meta.py
|
||||||
pyalchemybiz/public/index.html
|
pyalchemybiz/public/index.html
|
||||||
|
pyalchemybiz/templates/base.mako
|
||||||
|
pyalchemybiz/templates/customer.mako
|
||||||
pyalchemybiz/tests/__init__.py
|
pyalchemybiz/tests/__init__.py
|
||||||
pyalchemybiz/tests/test_models.py
|
pyalchemybiz/tests/test_models.py
|
||||||
pyalchemybiz/tests/functional/__init__.py
|
pyalchemybiz/tests/functional/__init__.py
|
||||||
|
pyalchemybiz/tests/functional/test_customer.py
|
|
@ -1 +1,3 @@
|
||||||
Pylons>=0.9.6.2
|
Pylons>=0.9.6.2
|
||||||
|
SQLAlchemy>=0.4.7
|
||||||
|
sqlalchemy-migrate>=0.4.5
|
|
@ -17,7 +17,7 @@ def make_map():
|
||||||
map.connect('error/:action/:id', controller='error')
|
map.connect('error/:action/:id', controller='error')
|
||||||
|
|
||||||
# CUSTOM ROUTES HERE
|
# CUSTOM ROUTES HERE
|
||||||
|
map.connect('', controller='index', action='index')
|
||||||
map.connect(':controller/:action/:id')
|
map.connect(':controller/:action/:id')
|
||||||
map.connect('*url', controller='template', action='view')
|
map.connect('*url', controller='template', action='view')
|
||||||
|
|
||||||
|
|
13
pyalchemybiz/controllers/index.py
Normal file
13
pyalchemybiz/controllers/index.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from pyalchemybiz.lib.base import *
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class IndexController(BaseController):
|
||||||
|
|
||||||
|
def index(self):
|
||||||
|
# Return a rendered template
|
||||||
|
# return render('/some/template.mako')
|
||||||
|
# or, Return a response
|
||||||
|
return render('/index.mako')
|
|
@ -1,108 +0,0 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Pylons Default Page</title>
|
|
||||||
<style>
|
|
||||||
body { background-color: #fff; color: #333; }
|
|
||||||
|
|
||||||
body, p {
|
|
||||||
font-family: verdana, arial, helvetica, sans-serif;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 18px;
|
|
||||||
}
|
|
||||||
pre {
|
|
||||||
background-color: #eee;
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 11px;
|
|
||||||
line-height: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a { color: #000; }
|
|
||||||
a:visited { color: #666; }
|
|
||||||
a:hover { color: #fff; background-color:#000; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<h1>Welcome to your Pylons Web Application</h1>
|
|
||||||
|
|
||||||
<h2>Weren't expecting to see this page?</h2>
|
|
||||||
|
|
||||||
<p>The <tt>pyalchemybiz/public/</tt> directory is searched for static files
|
|
||||||
<i>before</i> your controllers are run. Remove this file (<tt>pyalchemybiz/public/index.html</tt>)
|
|
||||||
and edit the routes in <tt>pyalchemybiz/config/routing.py</tt> to point the
|
|
||||||
<a href="/">root path</a> to a 'hello' controller we'll create below:
|
|
||||||
<pre> map.connect('', controller='hello', action='index')</pre>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Getting Started</h2>
|
|
||||||
<p>You're now ready to start creating your own web application. To create a 'hello' controller,
|
|
||||||
run the following command in your project's root directory:
|
|
||||||
<pre>
|
|
||||||
pyalchemybiz$ paster controller hello
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
This generates the following the following code in <tt>pyalchemybiz/controllers/hello.py</tt>:
|
|
||||||
<pre>
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from pyalchemybiz.lib.base import *
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
class HelloController(BaseController):
|
|
||||||
|
|
||||||
def index(self):
|
|
||||||
# Return a rendered template
|
|
||||||
# return render('/some/template.mako)
|
|
||||||
# or, Return a response
|
|
||||||
return 'Hello World'
|
|
||||||
</pre>
|
|
||||||
</p>
|
|
||||||
<p>This controller simply prints out 'Hello World' to the browser. Pylons' default routes
|
|
||||||
automatically set up this controller to respond at the <a href="/hello">/hello</a> URL.
|
|
||||||
With the additional route described above, this controller will also respond at the
|
|
||||||
<a href="/">root path</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>Using a template</h3>
|
|
||||||
<p>To call a template and do something a little more complex, this following example
|
|
||||||
shows how to print out some request information from a
|
|
||||||
<a href="http://www.makotemplates.org">Mako</a> template.
|
|
||||||
</p>
|
|
||||||
<p>Create a <tt>serverinfo.mako</tt> file in your project's <tt>pyalchemybiz/templates/</tt>
|
|
||||||
directory with the following contents:
|
|
||||||
</p>
|
|
||||||
<pre>
|
|
||||||
<h2>
|
|
||||||
Server info for ${request.host}
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The URL you called: ${h.url_for()}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The name you set: ${c.name}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>The WSGI environ:<br />
|
|
||||||
<pre>${c.pretty_environ}</pre>
|
|
||||||
</p>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
Then add the following to your 'hello' controller class:
|
|
||||||
<pre>
|
|
||||||
def serverinfo(self):
|
|
||||||
import cgi
|
|
||||||
import pprint
|
|
||||||
c.pretty_environ = cgi.escape(pprint.pformat(request.environ))
|
|
||||||
c.name = 'The Black Knight'
|
|
||||||
return render('/serverinfo.mako')
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
You can now view the page at: <tt><a href="/hello/serverinfo">/hello/serverinfo</a></tt>
|
|
||||||
</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -13,7 +13,7 @@
|
||||||
<p class="footer">
|
<p class="footer">
|
||||||
Return to the
|
Return to the
|
||||||
${h.link_to('FrontPage',
|
${h.link_to('FrontPage',
|
||||||
h.url_for(action="index"))}
|
h.url_for(controller="index", action="index"))}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
3
pyalchemybiz/templates/index.mako
Normal file
3
pyalchemybiz/templates/index.mako
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<%inherit file="base.mako" />
|
||||||
|
|
||||||
|
${h.link_to('customers', h.url_for(controller="customer", action="index"))}
|
7
pyalchemybiz/tests/functional/test_index.py
Normal file
7
pyalchemybiz/tests/functional/test_index.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
from pyalchemybiz.tests import *
|
||||||
|
|
||||||
|
class TestIndexController(TestController):
|
||||||
|
|
||||||
|
def test_index(self):
|
||||||
|
response = self.app.get(url_for(controller='index'))
|
||||||
|
# Test response...
|
3
setup.py
3
setup.py
|
@ -12,7 +12,8 @@ setup(
|
||||||
author='Jan Dittberner',
|
author='Jan Dittberner',
|
||||||
author_email='jan@dittberner.info',
|
author_email='jan@dittberner.info',
|
||||||
url='http://www.dittberner.info/projects/pyalchemybiz',
|
url='http://www.dittberner.info/projects/pyalchemybiz',
|
||||||
install_requires=["Pylons>=0.9.6.2", "SQLAlchemy>=0.4"],
|
install_requires=["Pylons>=0.9.6.2", "SQLAlchemy>=0.4.7",
|
||||||
|
"sqlalchemy-migrate>=0.4.5"],
|
||||||
packages=find_packages(exclude=['ez_setup']),
|
packages=find_packages(exclude=['ez_setup']),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
test_suite='nose.collector',
|
test_suite='nose.collector',
|
||||||
|
|
3
test.ini
3
test.ini
|
@ -19,3 +19,6 @@ port = 5000
|
||||||
use = config:development.ini
|
use = config:development.ini
|
||||||
|
|
||||||
# Add additional test specific configuration options as necessary.
|
# Add additional test specific configuration options as necessary.
|
||||||
|
sqlalchemy.default.url = sqlite:///%(here)s/pyalchemybiz-test.db
|
||||||
|
sqlalchemy.default.echo = true
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue