* initial checkin
This commit is contained in:
parent
3a553ecbfb
commit
79e3237986
27 changed files with 660 additions and 0 deletions
2
MANIFEST.in
Normal file
2
MANIFEST.in
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
recursive-include gnuviechadminweb/public *
|
||||||
|
recursive-include gnuviechadminweb/templates *
|
19
README.txt
Normal file
19
README.txt
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
This file is for you to describe the gnuviechadminweb application. Typically
|
||||||
|
you would include information such as the information below:
|
||||||
|
|
||||||
|
Installation and Setup
|
||||||
|
======================
|
||||||
|
|
||||||
|
Install ``gnuviechadminweb`` using easy_install::
|
||||||
|
|
||||||
|
easy_install gnuviechadminweb
|
||||||
|
|
||||||
|
Make a config file as follows::
|
||||||
|
|
||||||
|
paster make-config gnuviechadminweb config.ini
|
||||||
|
|
||||||
|
Tweak the config file as appropriate and then setup the application::
|
||||||
|
|
||||||
|
paster setup-app config.ini
|
||||||
|
|
||||||
|
Then you are ready to go.
|
64
development.ini
Normal file
64
development.ini
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# gnuviechadminweb - Pylons development environment configuration
|
||||||
|
#
|
||||||
|
# The %(here)s variable will be replaced with the parent directory of this file
|
||||||
|
#
|
||||||
|
[DEFAULT]
|
||||||
|
debug = true
|
||||||
|
# Uncomment and replace with the address which should receive any error reports
|
||||||
|
#email_to = you@yourdomain.com
|
||||||
|
smtp_server = localhost
|
||||||
|
error_email_from = paste@localhost
|
||||||
|
|
||||||
|
[server:main]
|
||||||
|
use = egg:Paste#http
|
||||||
|
host = 0.0.0.0
|
||||||
|
port = 5000
|
||||||
|
|
||||||
|
[app:main]
|
||||||
|
use = egg:gnuviechadminweb
|
||||||
|
full_stack = true
|
||||||
|
cache_dir = %(here)s/data
|
||||||
|
beaker.session.key = gnuviechadminweb
|
||||||
|
beaker.session.secret = somesecret
|
||||||
|
|
||||||
|
# If you'd like to fine-tune the individual locations of the cache data dirs
|
||||||
|
# for the Cache data, or the Session saves, un-comment the desired settings
|
||||||
|
# here:
|
||||||
|
#beaker.cache.data_dir = %(here)s/data/cache
|
||||||
|
#beaker.session.data_dir = %(here)s/data/sessions
|
||||||
|
|
||||||
|
# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
|
||||||
|
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
|
||||||
|
# execute malicious code after an exception is raised.
|
||||||
|
#set debug = false
|
||||||
|
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
[loggers]
|
||||||
|
keys = root, gnuviechadminweb
|
||||||
|
|
||||||
|
[handlers]
|
||||||
|
keys = console
|
||||||
|
|
||||||
|
[formatters]
|
||||||
|
keys = generic
|
||||||
|
|
||||||
|
[logger_root]
|
||||||
|
level = INFO
|
||||||
|
handlers = console
|
||||||
|
|
||||||
|
[logger_gnuviechadminweb]
|
||||||
|
level = DEBUG
|
||||||
|
handlers =
|
||||||
|
qualname = gnuviechadminweb
|
||||||
|
|
||||||
|
[handler_console]
|
||||||
|
class = StreamHandler
|
||||||
|
args = (sys.stderr,)
|
||||||
|
level = NOTSET
|
||||||
|
formatter = generic
|
||||||
|
|
||||||
|
[formatter_generic]
|
||||||
|
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
|
||||||
|
datefmt = %H:%M:%S
|
12
docs/index.txt
Normal file
12
docs/index.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
gnuviechadminweb
|
||||||
|
++++++++++++++++
|
||||||
|
|
||||||
|
This is the main index page of your documentation. It should be written in
|
||||||
|
`reStructuredText format <http://docutils.sourceforge.net/rst.html>`_.
|
||||||
|
|
||||||
|
You can generate your documentation in HTML format by running this command::
|
||||||
|
|
||||||
|
setup.py pudge
|
||||||
|
|
||||||
|
For this to work you will need to download and install ``buildutils`` and
|
||||||
|
``pudge``.
|
58
gnuviechadminweb.egg-info/paste_deploy_config.ini_tmpl
Normal file
58
gnuviechadminweb.egg-info/paste_deploy_config.ini_tmpl
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#
|
||||||
|
# gnuviechadminweb - Pylons configuration
|
||||||
|
#
|
||||||
|
# The %(here)s variable will be replaced with the parent directory of this file
|
||||||
|
#
|
||||||
|
[DEFAULT]
|
||||||
|
debug = true
|
||||||
|
email_to = you@yourdomain.com
|
||||||
|
smtp_server = localhost
|
||||||
|
error_email_from = paste@localhost
|
||||||
|
|
||||||
|
[server:main]
|
||||||
|
use = egg:Paste#http
|
||||||
|
host = 0.0.0.0
|
||||||
|
port = 5000
|
||||||
|
|
||||||
|
[app:main]
|
||||||
|
use = egg:gnuviechadminweb
|
||||||
|
full_stack = true
|
||||||
|
cache_dir = %(here)s/data
|
||||||
|
beaker.session.key = gnuviechadminweb
|
||||||
|
beaker.session.secret = ${app_instance_secret}
|
||||||
|
app_instance_uuid = ${app_instance_uuid}
|
||||||
|
|
||||||
|
# If you'd like to fine-tune the individual locations of the cache data dirs
|
||||||
|
# for the Cache data, or the Session saves, un-comment the desired settings
|
||||||
|
# here:
|
||||||
|
#beaker.cache.data_dir = %(here)s/data/cache
|
||||||
|
#beaker.session.data_dir = %(here)s/data/sessions
|
||||||
|
|
||||||
|
# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
|
||||||
|
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
|
||||||
|
# execute malicious code after an exception is raised.
|
||||||
|
set debug = false
|
||||||
|
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
[loggers]
|
||||||
|
keys = root
|
||||||
|
|
||||||
|
[handlers]
|
||||||
|
keys = console
|
||||||
|
|
||||||
|
[formatters]
|
||||||
|
keys = generic
|
||||||
|
|
||||||
|
[logger_root]
|
||||||
|
level = INFO
|
||||||
|
handlers = console
|
||||||
|
|
||||||
|
[handler_console]
|
||||||
|
class = StreamHandler
|
||||||
|
args = (sys.stderr,)
|
||||||
|
level = NOTSET
|
||||||
|
formatter = generic
|
||||||
|
|
||||||
|
[formatter_generic]
|
||||||
|
format = %(asctime)s %(levelname)-5.5s [%(name)s] %(message)s
|
3
gnuviechadminweb.egg-info/paster_plugins.txt
Normal file
3
gnuviechadminweb.egg-info/paster_plugins.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Pylons
|
||||||
|
WebHelpers
|
||||||
|
PasteScript
|
0
gnuviechadminweb/__init__.py
Normal file
0
gnuviechadminweb/__init__.py
Normal file
0
gnuviechadminweb/config/__init__.py
Normal file
0
gnuviechadminweb/config/__init__.py
Normal file
33
gnuviechadminweb/config/environment.py
Normal file
33
gnuviechadminweb/config/environment.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
"""Pylons environment configuration"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
from pylons import config
|
||||||
|
|
||||||
|
import gnuviechadminweb.lib.app_globals as app_globals
|
||||||
|
import gnuviechadminweb.lib.helpers
|
||||||
|
from gnuviechadminweb.config.routing import make_map
|
||||||
|
|
||||||
|
def load_environment(global_conf, app_conf):
|
||||||
|
"""Configure the Pylons environment via the ``pylons.config``
|
||||||
|
object
|
||||||
|
"""
|
||||||
|
# Pylons paths
|
||||||
|
root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
paths = dict(root=root,
|
||||||
|
controllers=os.path.join(root, 'controllers'),
|
||||||
|
static_files=os.path.join(root, 'public'),
|
||||||
|
templates=[os.path.join(root, 'templates')])
|
||||||
|
|
||||||
|
# Initialize config with the basic options
|
||||||
|
config.init_app(global_conf, app_conf, package='gnuviechadminweb',
|
||||||
|
template_engine='mako', paths=paths)
|
||||||
|
|
||||||
|
config['routes.map'] = make_map()
|
||||||
|
config['pylons.g'] = app_globals.Globals()
|
||||||
|
config['pylons.h'] = gnuviechadminweb.lib.helpers
|
||||||
|
|
||||||
|
# Customize templating options via this variable
|
||||||
|
tmpl_options = config['buffet.template_options']
|
||||||
|
|
||||||
|
# CONFIGURATION OPTIONS HERE (note: all config options will override
|
||||||
|
# any Pylons config options)
|
57
gnuviechadminweb/config/middleware.py
Normal file
57
gnuviechadminweb/config/middleware.py
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
"""Pylons middleware initialization"""
|
||||||
|
from paste.cascade import Cascade
|
||||||
|
from paste.registry import RegistryManager
|
||||||
|
from paste.urlparser import StaticURLParser
|
||||||
|
from paste.deploy.converters import asbool
|
||||||
|
|
||||||
|
from pylons import config
|
||||||
|
from pylons.error import error_template
|
||||||
|
from pylons.middleware import error_mapper, ErrorDocuments, ErrorHandler, \
|
||||||
|
StaticJavascripts
|
||||||
|
from pylons.wsgiapp import PylonsApp
|
||||||
|
|
||||||
|
from gnuviechadminweb.config.environment import load_environment
|
||||||
|
|
||||||
|
def make_app(global_conf, full_stack=True, **app_conf):
|
||||||
|
"""Create a Pylons WSGI application and return it
|
||||||
|
|
||||||
|
``global_conf``
|
||||||
|
The inherited configuration for this application. Normally from
|
||||||
|
the [DEFAULT] section of the Paste ini file.
|
||||||
|
|
||||||
|
``full_stack``
|
||||||
|
Whether or not this application provides a full WSGI stack (by
|
||||||
|
default, meaning it handles its own exceptions and errors).
|
||||||
|
Disable full_stack when this application is "managed" by
|
||||||
|
another WSGI middleware.
|
||||||
|
|
||||||
|
``app_conf``
|
||||||
|
The application's local configuration. Normally specified in the
|
||||||
|
[app:<name>] section of the Paste ini file (where <name>
|
||||||
|
defaults to main).
|
||||||
|
"""
|
||||||
|
# Configure the Pylons environment
|
||||||
|
load_environment(global_conf, app_conf)
|
||||||
|
|
||||||
|
# The Pylons WSGI app
|
||||||
|
app = PylonsApp()
|
||||||
|
|
||||||
|
# CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
|
||||||
|
|
||||||
|
if asbool(full_stack):
|
||||||
|
# Handle Python exceptions
|
||||||
|
app = ErrorHandler(app, global_conf, error_template=error_template,
|
||||||
|
**config['pylons.errorware'])
|
||||||
|
|
||||||
|
# Display error documents for 401, 403, 404 status codes (and
|
||||||
|
# 500 when debug is disabled)
|
||||||
|
app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf)
|
||||||
|
|
||||||
|
# Establish the Registry for this application
|
||||||
|
app = RegistryManager(app)
|
||||||
|
|
||||||
|
# Static files
|
||||||
|
javascripts_app = StaticJavascripts()
|
||||||
|
static_app = StaticURLParser(config['pylons.paths']['static_files'])
|
||||||
|
app = Cascade([static_app, javascripts_app, app])
|
||||||
|
return app
|
24
gnuviechadminweb/config/routing.py
Normal file
24
gnuviechadminweb/config/routing.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
"""Routes configuration
|
||||||
|
|
||||||
|
The more specific and detailed routes should be defined first so they
|
||||||
|
may take precedent over the more generic routes. For more information
|
||||||
|
refer to the routes manual at http://routes.groovie.org/docs/
|
||||||
|
"""
|
||||||
|
from pylons import config
|
||||||
|
from routes import Mapper
|
||||||
|
|
||||||
|
def make_map():
|
||||||
|
"""Create, configure and return the routes Mapper"""
|
||||||
|
map = Mapper(directory=config['pylons.paths']['controllers'],
|
||||||
|
always_scan=config['debug'])
|
||||||
|
|
||||||
|
# The ErrorController route (handles 404/500 error pages); it should
|
||||||
|
# likely stay at the top, ensuring it can always be resolved
|
||||||
|
map.connect('error/:action/:id', controller='error')
|
||||||
|
|
||||||
|
# CUSTOM ROUTES HERE
|
||||||
|
|
||||||
|
map.connect(':controller/:action/:id')
|
||||||
|
map.connect('*url', controller='template', action='view')
|
||||||
|
|
||||||
|
return map
|
0
gnuviechadminweb/controllers/__init__.py
Normal file
0
gnuviechadminweb/controllers/__init__.py
Normal file
41
gnuviechadminweb/controllers/error.py
Normal file
41
gnuviechadminweb/controllers/error.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import cgi
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
from paste.urlparser import StaticURLParser
|
||||||
|
from pylons.middleware import error_document_template, media_path
|
||||||
|
|
||||||
|
from gnuviechadminweb.lib.base import *
|
||||||
|
|
||||||
|
class ErrorController(BaseController):
|
||||||
|
"""Generates error documents as and when they are required.
|
||||||
|
|
||||||
|
The ErrorDocuments middleware forwards to ErrorController when error
|
||||||
|
related status codes are returned from the application.
|
||||||
|
|
||||||
|
This behaviour can be altered by changing the parameters to the
|
||||||
|
ErrorDocuments middleware in your config/middleware.py file.
|
||||||
|
|
||||||
|
"""
|
||||||
|
def document(self):
|
||||||
|
"""Render the error document"""
|
||||||
|
page = error_document_template % \
|
||||||
|
dict(prefix=request.environ.get('SCRIPT_NAME', ''),
|
||||||
|
code=cgi.escape(request.params.get('code', '')),
|
||||||
|
message=cgi.escape(request.params.get('message', '')))
|
||||||
|
return page
|
||||||
|
|
||||||
|
def img(self, id):
|
||||||
|
"""Serve Pylons' stock images"""
|
||||||
|
return self._serve_file(os.path.join(media_path, 'img'), id)
|
||||||
|
|
||||||
|
def style(self, id):
|
||||||
|
"""Serve Pylons' stock stylesheets"""
|
||||||
|
return self._serve_file(os.path.join(media_path, 'style'), id)
|
||||||
|
|
||||||
|
def _serve_file(self, root, path):
|
||||||
|
"""Call Paste's FileApp (a WSGI application) to serve the file
|
||||||
|
at the specified path
|
||||||
|
"""
|
||||||
|
static = StaticURLParser(root)
|
||||||
|
request.environ['PATH_INFO'] = '/%s' % path
|
||||||
|
return static(request.environ, self.start_response)
|
27
gnuviechadminweb/controllers/template.py
Normal file
27
gnuviechadminweb/controllers/template.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
from gnuviechadminweb.lib.base import *
|
||||||
|
|
||||||
|
class TemplateController(BaseController):
|
||||||
|
|
||||||
|
def view(self, url):
|
||||||
|
"""By default, the final controller tried to fulfill the request
|
||||||
|
when no other routes match. It may be used to display a template
|
||||||
|
when all else fails, e.g.::
|
||||||
|
|
||||||
|
def view(self, url):
|
||||||
|
return render('/%s' % url)
|
||||||
|
|
||||||
|
Or if you're using Mako and want to explicitly send a 404 (Not
|
||||||
|
Found) response code when the requested template doesn't exist::
|
||||||
|
|
||||||
|
import mako.exceptions
|
||||||
|
|
||||||
|
def view(self, url):
|
||||||
|
try:
|
||||||
|
return render('/%s' % url)
|
||||||
|
except mako.exceptions.TopLevelLookupException:
|
||||||
|
abort(404)
|
||||||
|
|
||||||
|
By default this controller aborts the request with a 404 (Not
|
||||||
|
Found)
|
||||||
|
"""
|
||||||
|
abort(404)
|
0
gnuviechadminweb/lib/__init__.py
Normal file
0
gnuviechadminweb/lib/__init__.py
Normal file
14
gnuviechadminweb/lib/app_globals.py
Normal file
14
gnuviechadminweb/lib/app_globals.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""The application's Globals object"""
|
||||||
|
from pylons import config
|
||||||
|
|
||||||
|
class Globals(object):
|
||||||
|
"""Globals acts as a container for objects available throughout the
|
||||||
|
life of the application
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
"""One instance of Globals is created during application
|
||||||
|
initialization and is available during requests via the 'g'
|
||||||
|
variable
|
||||||
|
"""
|
||||||
|
pass
|
27
gnuviechadminweb/lib/base.py
Normal file
27
gnuviechadminweb/lib/base.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
"""The base Controller API
|
||||||
|
|
||||||
|
Provides the BaseController class for subclassing, and other objects
|
||||||
|
utilized by Controllers.
|
||||||
|
"""
|
||||||
|
from pylons import c, cache, config, g, request, response, session
|
||||||
|
from pylons.controllers import WSGIController
|
||||||
|
from pylons.controllers.util import abort, etag_cache, redirect_to
|
||||||
|
from pylons.decorators import jsonify, validate
|
||||||
|
from pylons.i18n import _, ungettext, N_
|
||||||
|
from pylons.templating import render
|
||||||
|
|
||||||
|
import gnuviechadminweb.lib.helpers as h
|
||||||
|
import gnuviechadminweb.model as model
|
||||||
|
|
||||||
|
class BaseController(WSGIController):
|
||||||
|
|
||||||
|
def __call__(self, environ, start_response):
|
||||||
|
"""Invoke the Controller"""
|
||||||
|
# WSGIController.__call__ dispatches to the Controller method
|
||||||
|
# the request is routed to. This routing information is
|
||||||
|
# available in environ['pylons.routes_dict']
|
||||||
|
return WSGIController.__call__(self, environ, start_response)
|
||||||
|
|
||||||
|
# Include the '_' function in the public names
|
||||||
|
__all__ = [__name for __name in locals().keys() if not __name.startswith('_') \
|
||||||
|
or __name == '_']
|
6
gnuviechadminweb/lib/helpers.py
Normal file
6
gnuviechadminweb/lib/helpers.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
"""Helper functions
|
||||||
|
|
||||||
|
Consists of functions to typically be used within templates, but also
|
||||||
|
available to Controllers. This module is available to both as 'h'.
|
||||||
|
"""
|
||||||
|
from webhelpers import *
|
0
gnuviechadminweb/model/__init__.py
Normal file
0
gnuviechadminweb/model/__init__.py
Normal file
108
gnuviechadminweb/public/index.html
Normal file
108
gnuviechadminweb/public/index.html
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
<!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>gnuviechadminweb/public/</tt> directory is searched for static files
|
||||||
|
<i>before</i> your controllers are run. Remove this file (<tt>gnuviechadminweb/public/index.html</tt>)
|
||||||
|
and edit the routes in <tt>gnuviechadminweb/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>
|
||||||
|
gnuviechadminweb$ paster controller hello
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
This generates the following the following code in <tt>gnuviechadminweb/controllers/hello.py</tt>:
|
||||||
|
<pre>
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from gnuviechadminweb.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>gnuviechadminweb/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>
|
40
gnuviechadminweb/tests/__init__.py
Normal file
40
gnuviechadminweb/tests/__init__.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
"""Pylons application test package
|
||||||
|
|
||||||
|
When the test runner finds and executes tests within this directory,
|
||||||
|
this file will be loaded to setup the test environment.
|
||||||
|
|
||||||
|
It registers the root directory of the project in sys.path and
|
||||||
|
pkg_resources, in case the project hasn't been installed with
|
||||||
|
setuptools. It also initializes the application via websetup (paster
|
||||||
|
setup-app) with the project's test.ini configuration file.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
import pkg_resources
|
||||||
|
import paste.fixture
|
||||||
|
import paste.script.appinstall
|
||||||
|
from paste.deploy import loadapp
|
||||||
|
from routes import url_for
|
||||||
|
|
||||||
|
__all__ = ['url_for', 'TestController']
|
||||||
|
|
||||||
|
here_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
conf_dir = os.path.dirname(os.path.dirname(here_dir))
|
||||||
|
|
||||||
|
sys.path.insert(0, conf_dir)
|
||||||
|
pkg_resources.working_set.add_entry(conf_dir)
|
||||||
|
pkg_resources.require('Paste')
|
||||||
|
pkg_resources.require('PasteScript')
|
||||||
|
|
||||||
|
test_file = os.path.join(conf_dir, 'test.ini')
|
||||||
|
cmd = paste.script.appinstall.SetupCommand('setup-app')
|
||||||
|
cmd.run([test_file])
|
||||||
|
|
||||||
|
class TestController(TestCase):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
wsgiapp = loadapp('config:test.ini', relative_to=conf_dir)
|
||||||
|
self.app = paste.fixture.TestApp(wsgiapp)
|
||||||
|
TestCase.__init__(self, *args, **kwargs)
|
0
gnuviechadminweb/tests/functional/__init__.py
Normal file
0
gnuviechadminweb/tests/functional/__init__.py
Normal file
0
gnuviechadminweb/tests/test_models.py
Normal file
0
gnuviechadminweb/tests/test_models.py
Normal file
14
gnuviechadminweb/websetup.py
Normal file
14
gnuviechadminweb/websetup.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""Setup the gnuviechadminweb application"""
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from paste.deploy import appconfig
|
||||||
|
from pylons import config
|
||||||
|
|
||||||
|
from gnuviechadminweb.config.environment import load_environment
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
def setup_config(command, filename, section, vars):
|
||||||
|
"""Place any commands to setup gnuviechadminweb here"""
|
||||||
|
conf = appconfig('config:' + filename)
|
||||||
|
load_environment(conf.global_conf, conf.local_conf)
|
59
setup.cfg
Normal file
59
setup.cfg
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
[egg_info]
|
||||||
|
tag_build = dev
|
||||||
|
tag_svn_revision = true
|
||||||
|
|
||||||
|
[easy_install]
|
||||||
|
find_links = http://www.pylonshq.com/download/
|
||||||
|
|
||||||
|
[pudge]
|
||||||
|
theme = pythonpaste.org
|
||||||
|
|
||||||
|
# Add extra doc files here with spaces between them
|
||||||
|
docs = docs/index.txt
|
||||||
|
|
||||||
|
# Doc Settings
|
||||||
|
doc_base = docs/
|
||||||
|
dest = docs/html
|
||||||
|
|
||||||
|
# Add extra modules here separated with commas
|
||||||
|
modules = gnuviechadminweb
|
||||||
|
title = Gnuviechadminweb
|
||||||
|
organization = Pylons
|
||||||
|
|
||||||
|
# Highlight code-block sections with Pygments
|
||||||
|
highlighter = pygments
|
||||||
|
|
||||||
|
# Optionally add extra links
|
||||||
|
#organization_url = http://pylonshq.com/
|
||||||
|
#trac_url = http://pylonshq.com/project
|
||||||
|
settings = no_about=true
|
||||||
|
|
||||||
|
# Optionally add extra settings
|
||||||
|
# link1=/community/ Community
|
||||||
|
# link2=/download/ Download
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
doc-dir=docs/html
|
||||||
|
make-dirs=1
|
||||||
|
|
||||||
|
# Babel configuration
|
||||||
|
[compile_catalog]
|
||||||
|
domain = gnuviechadminweb
|
||||||
|
directory = gnuviechadminweb/i18n
|
||||||
|
statistics = true
|
||||||
|
|
||||||
|
[extract_messages]
|
||||||
|
add_comments = TRANSLATORS:
|
||||||
|
output_file = gnuviechadminweb/i18n/gnuviechadminweb.pot
|
||||||
|
width = 80
|
||||||
|
|
||||||
|
[init_catalog]
|
||||||
|
domain = gnuviechadminweb
|
||||||
|
input_file = gnuviechadminweb/i18n/gnuviechadminweb.pot
|
||||||
|
output_dir = gnuviechadminweb/i18n
|
||||||
|
|
||||||
|
[update_catalog]
|
||||||
|
domain = gnuviechadminweb
|
||||||
|
input_file = gnuviechadminweb/i18n/gnuviechadminweb.pot
|
||||||
|
output_dir = gnuviechadminweb/i18n
|
||||||
|
previous = true
|
31
setup.py
Normal file
31
setup.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
try:
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
except ImportError:
|
||||||
|
from ez_setup import use_setuptools
|
||||||
|
use_setuptools()
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name='gnuviechadminweb',
|
||||||
|
version="",
|
||||||
|
#description='',
|
||||||
|
#author='',
|
||||||
|
#author_email='',
|
||||||
|
#url='',
|
||||||
|
install_requires=["Pylons>=0.9.6.2"],
|
||||||
|
packages=find_packages(exclude=['ez_setup']),
|
||||||
|
include_package_data=True,
|
||||||
|
test_suite='nose.collector',
|
||||||
|
package_data={'gnuviechadminweb': ['i18n/*/LC_MESSAGES/*.mo']},
|
||||||
|
#message_extractors = {'gnuviechadminweb': [
|
||||||
|
# ('**.py', 'python', None),
|
||||||
|
# ('templates/**.mako', 'mako', None),
|
||||||
|
# ('public/**', 'ignore', None)]},
|
||||||
|
entry_points="""
|
||||||
|
[paste.app_factory]
|
||||||
|
main = gnuviechadminweb.config.middleware:make_app
|
||||||
|
|
||||||
|
[paste.app_install]
|
||||||
|
main = pylons.util:PylonsInstaller
|
||||||
|
""",
|
||||||
|
)
|
21
test.ini
Normal file
21
test.ini
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#
|
||||||
|
# gnuviechadminweb - Pylons testing environment configuration
|
||||||
|
#
|
||||||
|
# The %(here)s variable will be replaced with the parent directory of this file
|
||||||
|
#
|
||||||
|
[DEFAULT]
|
||||||
|
debug = true
|
||||||
|
# Uncomment and replace with the address which should receive any error reports
|
||||||
|
#email_to = you@yourdomain.com
|
||||||
|
smtp_server = localhost
|
||||||
|
error_email_from = paste@localhost
|
||||||
|
|
||||||
|
[server:main]
|
||||||
|
use = egg:Paste#http
|
||||||
|
host = 0.0.0.0
|
||||||
|
port = 5000
|
||||||
|
|
||||||
|
[app:main]
|
||||||
|
use = config:development.ini
|
||||||
|
|
||||||
|
# Add additional test specific configuration options as necessary.
|
Loading…
Reference in a new issue