Example #1
0
def make_app(global_conf, full_stack=True, static_files=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 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.

    ``static_files``
        Whether this application serves its own static files; disable
        when another web server is responsible for serving them.

    ``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
    config = load_environment(global_conf, app_conf)

    # The Pylons WSGI app
    app = PylonsApp(config=config)

    # Routing/Session/Cache Middleware
    app = RoutesMiddleware(app, config["routes.map"], singleton=False)
    app = SessionMiddleware(app, config)

    # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)

    if asbool(full_stack):
        # Handle Python exceptions
        app = ErrorHandler(app, global_conf, **config["pylons.errorware"])

        # Display error documents for 401, 403, 404 status codes (and
        # 500 when debug is disabled)
        if asbool(config["debug"]):
            app = StatusCodeRedirect(app)
        else:
            app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])

    # Establish the Registry for this application
    app = RegistryManager(app)

    if asbool(static_files):
        # Serve static files
        static_app = StaticURLParser(config["pylons.paths"]["static_files"])
        app = Cascade([static_app, app])
    app.config = config
    return app
Example #2
0

# Invoke websetup with the current config file
# SetupCommand('setup-app').run([pylons.test.pylonsapp.config['__file__']])

# additional imports ...
import os
from paste.deploy import appconfig
from fademo.config.environment import load_environment

here_dir = os.path.dirname(__file__)
conf_dir = os.path.dirname(os.path.dirname(here_dir))

test_file = os.path.join(conf_dir, 'test.ini')
conf = appconfig('config:' + test_file)
config = load_environment(conf.global_conf, conf.local_conf)
environ = {}

engine = engine_from_config(config, 'sqlalchemy.')
model.init_model(engine)
metadata = elixir.metadata
Session = elixir.session = meta.Session

class Individual(Entity):
    """Table 'Individual'.

    >>> me = Individual('Groucho')

    # 'name' field is converted to lowercase
    >>> me.name
    'groucho'
Example #3
0
def setup_app(command, conf, vars):
    """Place any commands to setup fademo here"""
    # Don't reload the app if it was loaded under the testing environment
    if not pylons.test.pylonsapp:
        config = load_environment(conf.global_conf, conf.local_conf)
    import datetime
    import hashlib
    drop_all()
    model.metadata.create_all()
    for name in (u'Administrators', u'Moderators', u'Users'):
        g = model.user.Group(
                name = name,
                description = u"%s group" % name,
                created = datetime.datetime.utcnow(),
                active = True)
        model.Session.add(g)
    g = model.Session.query(
            model.user.Group).filter_by(
                name="Administrators").first()
    ug = model.Session.query(
            model.user.Group).filter_by(
                name="Users").first()
    for i, name in enumerate(('admin', 'bob', 'josette', 'bernard', 'gertrude', 'jacques', 'lise', 'robert', 'jacqueline')):
        user = model.user.User(
                    username = name.title(),
                    password=hashlib.sha1(name).hexdigest(),
                    password_check=hashlib.sha1(name).hexdigest(),
                    email="*****@*****.**" % name,
                    created = datetime.datetime.utcnow(),
                    active = True)
        model.Session.add(user)
        ug.users.append(user)
        if i < 3:
            g.users.append(user)

    for i, name in enumerate(('read', 'write', 'admin')):
        perm = model.user.Permission(
                name = name.title(),
                description = '%s permission' % name.title(),
                )
        model.Session.add(perm)
        if i > 1:
            g.permissions.append(perm)
        else:
            ug.permissions.append(perm)

    for i in range(50):
        article = demo.Article(
                title='Article %s' % i,
                text='''Heading
=====================

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur
imperdiet porta. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Proin sollicitudin, mi sit amet blandit
dignissim, lacus ante sagittis est, in congue lectus nulla non urna. Nunc a
justo ut lacus laoreet facilisis. Nullam blandit posuere mauris semper
pellentesque. Sed leo neque, vulputate sed pharetra vel, rhoncus at nisl.
Aenean eget nibh turpis. Quisque semper lacus sodales libero dictum pretium.
Phasellus euismod, odio sit amet vehicula pharetra, nunc diam imperdiet dui,
non malesuada neque erat ac augue. Sed elit ipsum, placerat vitae accumsan
quis, tempor in tellus. Vestibulum tempus consequat libero, sit amet
pellentesque lacus interdum in. Vestibulum in nunc at nulla ultrices laoreet.

* Morbi id orci augue, porta malesuada mi.
* Proin rhoncus tellus non orci iaculis pretium.
* Praesent aliquet commodo urna, vitae laoreet arcu porttitor ut.
* Nullam sollicitudin blandit risus, eu luctus nisl scelerisque eget.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent consectetur
imperdiet porta. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Proin sollicitudin, mi sit amet blandit
dignissim, lacus ante sagittis est, in congue lectus nulla non urna. Nunc a
justo ut lacus laoreet facilisis. Nullam blandit posuere mauris semper
pellentesque. Sed leo neque, vulputate sed pharetra vel, rhoncus at nisl.
Aenean eget nibh turpis. Quisque semper lacus sodales libero dictum pretium.
Phasellus euismod, odio sit amet vehicula pharetra, nunc diam imperdiet dui,
non malesuada neque erat ac augue. Sed elit ipsum, placerat vitae accumsan
quis, tempor in tellus. Vestibulum tempus consequat libero, sit amet
pellentesque lacus interdum in. Vestibulum in nunc at nulla ultrices laoreet.
''',
            publication_date = datetime.datetime.utcnow())
        model.Session.add(article)

    for i in range(100):
        widgets = demo.Widgets(
                autocomplete=random.choice(['%sanux' % s for s in 'BCDFGHJKLMNP']+['']),
                color = random.choice(["#EEEEEE", "#FFFF88", "#FF7400", "#CDEB8B", "#6BBA70"]),
                slider = random.choice(range(0, 100, 10)),
                )
        model.Session.add(widgets)

    model.Session.commit()