diff --git a/moulinette/__init__.py b/moulinette/__init__.py index c4e9913d..ad4f6531 100755 --- a/moulinette/__init__.py +++ b/moulinette/__init__.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +from os import environ from moulinette.core import ( MoulinetteError, Moulinette18n, @@ -30,22 +31,34 @@ __all__ = [ "api", "cli", "m18n", - "env", - "init_interface", "MoulinetteError", + "Moulinette" ] -msettings = dict() m18n = Moulinette18n() +class classproperty(object): + def __init__(self, f): + self.f = f + def __get__(self, obj, owner): + return self.f(owner) -def prompt(**kwargs): - return msettings["interface"].prompt(**kwargs) +class Moulinette(): + + _interface = None + + def prompt(*args, **kwargs): + return Moulinette.interface.prompt(*args, **kwargs) -def display(**kwargs): - return msettings["interface"].display(**kwargs) + def display(*args, **kwargs): + return Moulinette.interface.display(*args, **kwargs) + + @classproperty + def interface(cls): + return cls._interface + # Package functions @@ -127,8 +140,3 @@ def cli(args, top_parser, output_as=None, timeout=None): logging.getLogger("moulinette").error(e.strerror) return 1 return 0 - - -def env(): - """Initialise moulinette specific configuration.""" - return init_moulinette_env() diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index 419db221..9855cd95 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -11,9 +11,9 @@ from time import time from collections import OrderedDict from importlib import import_module -from moulinette import m18n, msettings -from moulinette.cache import open_cachefile +from moulinette import m18n, Moulinette from moulinette.globals import init_moulinette_env +from moulinette.cache import open_cachefile from moulinette.core import ( MoulinetteError, MoulinetteLock, @@ -97,7 +97,7 @@ class CommentParameter(_ExtraParameter): def __call__(self, message, arg_name, arg_value): if arg_value is None: return - return msettings['interface'].display(m18n.n(message)) + return Moulinette.display(m18n.n(message)) @classmethod def validate(klass, value, arg_name): @@ -134,7 +134,7 @@ class AskParameter(_ExtraParameter): try: # Ask for the argument value - return msettings['interface'].prompt(m18n.n(message)) + return Moulinette.prompt(m18n.n(message)) except NotImplementedError: return arg_value @@ -172,7 +172,7 @@ class PasswordParameter(AskParameter): try: # Ask for the password - return msettings['interface'].prompt(m18n.n(message), True, True) + return Moulinette.prompt(m18n.n(message), True, True) except NotImplementedError: return arg_value @@ -499,7 +499,7 @@ class ActionsMap(object): return authenticator = self.get_authenticator(auth_method) - msettings['interface'].authenticate(authenticator) + Moulinette.interface.authenticate(authenticator) def process(self, args, timeout=None, **kwargs): """ diff --git a/moulinette/authentication.py b/moulinette/authentication.py index af8246e6..f555fd33 100644 --- a/moulinette/authentication.py +++ b/moulinette/authentication.py @@ -6,7 +6,6 @@ import hashlib import hmac from moulinette.utils.text import random_ascii -from moulinette.cache import open_cachefile, get_cachedir, cachefile_exists from moulinette.core import MoulinetteError, MoulinetteAuthenticationError logger = logging.getLogger("moulinette.authenticator") diff --git a/moulinette/cache.py b/moulinette/cache.py index c6c8df5e..f71c3fca 100644 --- a/moulinette/cache.py +++ b/moulinette/cache.py @@ -42,10 +42,3 @@ def open_cachefile(filename, mode="r", subdir=""): cache_dir = get_cachedir(subdir, make_dir=True if mode[0] == "w" else False) file_path = os.path.join(cache_dir, filename) return open(file_path, mode) - - -def cachefile_exists(filename, subdir=""): - - cache_dir = get_cachedir(subdir, make_dir=False) - file_path = os.path.join(cache_dir, filename) - return os.path.exists(file_path) diff --git a/moulinette/interfaces/__init__.py b/moulinette/interfaces/__init__.py index 5d8821cb..27b9d4d6 100644 --- a/moulinette/interfaces/__init__.py +++ b/moulinette/interfaces/__init__.py @@ -6,7 +6,7 @@ import argparse import copy from collections import deque, OrderedDict -from moulinette import msettings, m18n +from moulinette import Moulinette, m18n from moulinette.core import MoulinetteError logger = logging.getLogger("moulinette.interface") diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 55fe66d4..c8be5558 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -13,7 +13,7 @@ from geventwebsocket import WebSocketError from bottle import request, response, Bottle, HTTPResponse from bottle import abort -from moulinette import m18n, env, msettings +from moulinette import m18n, Moulinette from moulinette.actionsmap import ActionsMap from moulinette.core import MoulinetteError, MoulinetteValidationError from moulinette.interfaces import ( @@ -734,7 +734,7 @@ class Interface: self._app = app - msettings["interface"] = self + Moulinette._interface = self def run(self, host="localhost", port=80): """Run the moulinette diff --git a/moulinette/interfaces/cli.py b/moulinette/interfaces/cli.py index 84a204eb..ed7fcbc3 100644 --- a/moulinette/interfaces/cli.py +++ b/moulinette/interfaces/cli.py @@ -11,7 +11,7 @@ from datetime import date, datetime import argcomplete -from moulinette import m18n, msettings +from moulinette import m18n, Moulinette from moulinette.actionsmap import ActionsMap from moulinette.core import MoulinetteError, MoulinetteValidationError from moulinette.interfaces import ( @@ -473,7 +473,7 @@ class Interface: load_only_category=load_only_category, ) - msettings["interface"] = self + Moulinette._interface = self def run(self, args, output_as=None, timeout=None): """Run the moulinette diff --git a/setup.py b/setup.py index 653483ea..e315070c 100755 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ import os import sys from setuptools import setup, find_packages -from moulinette.globals import init_moulinette_env +from moulinette import init_moulinette_env LOCALES_DIR = init_moulinette_env()['LOCALES_DIR'] diff --git a/test/test_actionsmap.py b/test/test_actionsmap.py index 259fc78b..62e0b4de 100644 --- a/test/test_actionsmap.py +++ b/test/test_actionsmap.py @@ -11,7 +11,7 @@ from moulinette.actionsmap import ( ) from moulinette.core import MoulinetteError -from moulinette import m18n, msettings +from moulinette import m18n, Moulinette @pytest.fixture @@ -73,7 +73,7 @@ def test_ask_parameter(iface, mocker): from moulinette.core import Moulinette18n - msettings["interface"] = iface + Moulinette._interface = iface mocker.patch.object(Moulinette18n, "n", return_value="awesome_test") mocker.patch.object(iface, "prompt", return_value="awesome_test") arg = ask("foobar", "a", None) @@ -87,7 +87,7 @@ def test_password_parameter(iface, mocker): from moulinette.core import Moulinette18n - msettings["interface"] = iface + Moulinette._interface = iface mocker.patch.object(Moulinette18n, "n", return_value="awesome_test") mocker.patch.object(iface, "prompt", return_value="awesome_test") arg = ask("foobar", "a", None) diff --git a/test/test_auth.py b/test/test_auth.py index 51ad2007..145dc40f 100644 --- a/test/test_auth.py +++ b/test/test_auth.py @@ -100,9 +100,6 @@ class TestAuthAPI: self.login(moulinette_webapi) assert "session.moulitest" in moulinette_webapi.cookies - print("====================cookie") - print(moulinette_webapi.cookiejar) - print(moulinette_webapi.cookies) assert ( moulinette_webapi.get("/test-auth/default", status=200).text