def create_fixture_app(app): local.worker = local.Process() local.request = local.Process() app = wsgi.create_WSGIApp(app) app.set_sessions_manager(SessionsWithPickledStates()) app.start() return fixture.TestApp(app)
def create_FixtureApp(app): local.worker = local.Process() local.request = local.Process() app = wsgi.create_WSGIApp(app) app.set_sessions_manager(SessionsWithPickledStates()) app.start() return TestApp(app)
def run(parser, options, args): """launch an object In: - ``parser`` -- the ``optparse.OptParser`` object used to parse the configuration file - ``options`` -- options in the command lines - ``args`` -- arguments in the command lines The unique argument is the path of the object to launch. The path syntax is described into the module ``nagare.admin.reference``. For example, ``/tmp/counter.py:Counter`` is the path to the class ``Counter`` of the module ``tmp.counter.py`` """ if len(args) != 2: parser.error('Bad number of arguments') if 'nagare_reloaded' not in os.environ: return reloader.restart_with_monitor() # With the ``serve-module`` command, the automatic reloader is always activated reloader.install(excluded_directories=(pkg_resources.get_default_cache(),)) # Load the object if os.path.sep in args[0]: path = 'file ' + args[0] else: path = 'python ' + args[0] app = reference.load_object(path)[0] # Wrap it into a WSGIApp app = wsgi.create_WSGIApp(app) # Always use the standalone publisher (Python HTTP server) publishers = dict([(entry.name, entry) for entry in pkg_resources.iter_entry_points('nagare.publishers')]) publisher = publishers['standalone'].load()() wsgi_pipe = debugged_app(app) if options.debug else app publisher.register_application(args[0], args[1], app, wsgi_pipe) app.set_config('', {'application': {'redirect_after_post': False, 'name': args[1], 'always_html': True}}, None) app.set_publisher(publisher) # Always use the standalone session manager (in memory sessions) sessions_managers = dict([(entry.name, entry) for entry in pkg_resources.iter_entry_points('nagare.sessions')]) sessions_manager = sessions_managers['standalone'].load()() app.set_sessions_manager(sessions_manager) # Set the application logger level to DEBUG log.configure({'logger': {'level': 'DEBUG'}}, args[1]) log.activate() log.set_logger('nagare.application.' + args[1]) # The static contents of the framework are served by the standalone server publisher.register_static('nagare', lambda path, r=pkg_resources.Requirement.parse('nagare'): get_file_from_package(r, path)) # Launch the object publisher.serve(None, dict(host=options.host, port=options.port), None)
def activate_WSGIApp( app, cfgfile, aconf, error, project_name='', static_path=None, static_url=None, data_path=None, publisher=None, sessions_manager=None, debug=False ): """Set all the properties of a WSGIApp application In: - ``app`` -- the WSGIApp application or the application root object factory - ``cfgfile`` -- the path to the configuration file - ``aconf`` -- the ``ConfigObj`` object, created from the configuration file - ``error`` -- the function to call in case of configuration errors - ``project_name`` -- name of the distutils distribution where the app is located - ``static_path`` -- the directory where the static contents of the application are located - ``static_url`` -- the url of the static contents of the application - ``data_path`` -- the directory where the data of the application are located - ``publisher`` -- the publisher of the application - ``session_manager`` -- the sessions manager - ``debug`` -- flag to display the generated SQL statements Return: - a tuple: - the ``wsgi.WSGIApp`` object - tuples (application databases settings, application databases populate functions) """ databases = [] populates = [] # Get all the databases settings for (section, content) in aconf['database'].items(): if isinstance(content, configobj.Section): database = get_database(content, content['debug'] or debug) if database: databases.append(database) populates.append(content['populate']) del aconf['database'][section] database = get_database(aconf['database'], aconf['database']['debug'] or debug) if database: databases.append(database) populates.append(aconf['database']['populate']) app = wsgi.create_WSGIApp(app) app.set_config(cfgfile, aconf, error) if static_path is not None: app.set_static_path(static_path) if static_url is not None: app.set_static_url(static_url) if data_path is not None: app.set_data_path(data_path) if publisher: app.set_publisher(publisher) if sessions_manager: app.set_sessions_manager(sessions_manager) if databases: app.set_databases(databases) if project_name: app.set_project(project_name) return (app, zip(databases, populates))
def activate_WSGIApp(app, cfgfile, aconf, error, project_name='', static_path=None, static_url=None, data_path=None, publisher=None, sessions_manager=None, debug=False): """Set all the properties of a WSGIApp application In: - ``app`` -- the WSGIApp application or the application root object factory - ``cfgfile`` -- the path to the configuration file - ``aconf`` -- the ``ConfigObj`` object, created from the configuration file - ``error`` -- the function to call in case of configuration errors - ``project_name`` -- name of the distutils distribution where the app is located - ``static_path`` -- the directory where the static contents of the application are located - ``static_url`` -- the url of the static contents of the application - ``data_path`` -- the directory where the data of the application are located - ``publisher`` -- the publisher of the application - ``session_manager`` -- the sessions manager - ``debug`` -- flag to display the generated SQL statements Return: - a tuple: - the ``wsgi.WSGIApp`` object - tuples (application databases settings, application databases populate functions) """ databases = [] populates = [] # Get all the databases settings for section, content in aconf['database'].items(): if isinstance(content, configobj.Section): database = get_database(content, content['debug'] or debug) if database: databases.append(database) populates.append(content['populate']) del aconf['database'][section] database = get_database(aconf['database'], aconf['database']['debug'] or debug) if database: databases.append(database) populates.append(aconf['database']['populate']) app = wsgi.create_WSGIApp(app) app.set_config(cfgfile, aconf, error) if static_path is not None: app.set_static_path(static_path) if static_url is not None: app.set_static_url(static_url) if data_path is not None: app.set_data_path(data_path) if publisher: app.set_publisher(publisher) if sessions_manager: app.set_sessions_manager(sessions_manager) if databases: app.set_databases(databases) if project_name: app.set_project(project_name) return app, zip(databases, populates)