Skip to content

Commit

Permalink
Add More APIs (#11)
Browse files Browse the repository at this point in the history
* Add method for creating the argparser
 * Add method for creating the configparser
 * Refactor command_setup to call new methods

Signed-off-by: David Brown <dmlb2000@gmail.com>
  • Loading branch information
dmlb2000 committed Nov 4, 2020
1 parent cae3491 commit 3a4e07e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 10 deletions.
6 changes: 4 additions & 2 deletions pacifica/auth/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""Pacifica Authentication Module."""
import functools
import cherrypy
from .application import error_page_default, quickstart, command_setup
from .application import error_page_default, quickstart, command_setup, create_argparser, create_configparser


def auth_session(func):
Expand All @@ -21,5 +21,7 @@ def wrapper(self, *args, **kwargs):
'auth_session',
'quickstart',
'error_page_default',
'command_setup'
'command_setup',
'create_argparser',
'create_configparser'
]
34 changes: 26 additions & 8 deletions pacifica/auth/application.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""Base application module."""
from argparse import ArgumentParser
from argparse import ArgumentParser, Namespace
from os import makedirs, getenv
from os.path import isdir, join, dirname
import json
Expand Down Expand Up @@ -101,24 +101,42 @@ def load_user():
cherrypy.tools.session = cherrypy.Tool('on_end_resource', session_commit)


def command_setup(argv, description, user_class, user_import_path, config_callback=None):
"""Common setup for commands to execute."""
parser = ArgumentParser(description=description)
pacifica_auth_arguments(parser)
args = parser.parse_args(argv)
def create_configparser(args: Namespace, config_callback=None):
"""Create the config parser and return it calling callback if given."""
configparser = ConfigParser()
common_config(configparser)
if callable(config_callback):
config_callback(configparser)
configparser.read(args.config)
return configparser


def create_argparser(description, parser_callback=None):
"""Create the argparser and return it."""
parser = ArgumentParser(description=description)
pacifica_auth_arguments(parser)
if callable(parser_callback):
parser_callback(parser)
return parser


# pylint: disable=too-many-arguments
def command_setup(argv, description, user_class, user_import_path, config_callback=None, parser_callback=None):
"""Common setup for commands to execute."""
parser = create_argparser(description, parser_callback)
args = parser.parse_args(argv)
configparser = create_configparser(args, config_callback)
social_settings(configparser, user_class, user_import_path)
return configparser


# pylint: disable=too-many-arguments
def quickstart(argv, description, user_class, user_import_path, swagger_path, config_callback=None):
def quickstart(
argv, description, user_class, user_import_path,
swagger_path, config_callback=None, parser_callback=None
):
"""Simple wrapper around cherrypy quickstart."""
configparser = command_setup(argv, description, user_class, user_import_path, config_callback)
configparser = command_setup(argv, description, user_class, user_import_path, config_callback, parser_callback)
cherrypy.quickstart(
Root(configparser.get('cherrypy', 'social_module'), configparser.get('cherrypy', 'app_dir')),
'/',
Expand Down

0 comments on commit 3a4e07e

Please sign in to comment.