Ver Fonte

- Add command and subcommand argument

fanch há 1 ano atrás
pai
commit
b73d8a36c9

+ 1 - 1
setup.py

@@ -29,7 +29,7 @@ def get_files(path):
 
 setup(
     name="djangotools",
-    version="0.1.4",
+    version="0.1.6",
     description="A short description of the project.",
     author="François GAUTRAIS",
     install_requires=install_requires,

+ 0 - 1
src/djangotools/cmdline/common/args.py

@@ -4,7 +4,6 @@ import sys
 
 from djangotools.cmdline.common.command import Command, Argument, SubCommand
 from djangotools.config import load_app
-from django.conf import settings
 
 class ArgsParser(argparse.ArgumentParser):
 

+ 2 - 1
src/djangotools/cmdline/common/command.py

@@ -3,7 +3,6 @@ from pathlib import Path
 
 from django.core.exceptions import ImproperlyConfigured
 
-from djangotools.common.module_loader import iter_module_content
 
 
 class CommandData:
@@ -64,6 +63,8 @@ class Command(BaseCommandMxin):
 
     @staticmethod
     def load(commands_dirs=None):
+
+        from djangotools.common.module_loader import iter_module_content
         ret = {}
         for name, val in  iter_module_content(commands_dirs, classe=Command):
             if val.NAME:

+ 9 - 4
src/djangotools/common/url.py

@@ -1,10 +1,15 @@
-from django.conf import settings
+
 from django.shortcuts import redirect as _redirect
 from pathlib import Path
-base = settings.BASE_URL
-if base[0] != "/": base = "/"+base
+base = None
 def get_url(url):
-    if url[0] == "/": url = url[1:]
+    global base
+    if base is None:
+        from django.conf import settings
+        base = settings.BASE_URL
+        if base and base[0] != "/": base = "/"+base
+
+    if base and url[0] == "/": url = url[1:]
     return str(Path(base, url))[1:]
 
 def redirect(to, *args, permanent=False, **kwargs):

+ 3 - 0
src/djangotools/config/base.py

@@ -75,6 +75,7 @@ class ConfigLoader:
         ("ROOT_TEMPLATE", "index.html"),
         ("LOGIN_CONTEXT", "login"),
         ("BASE_URL", "/"),
+        ("REDIRECT_LOGIN_ERROR_ARG", "error"),
         ("LOGIN_URL", "login"),
         ("LOGOUT_URL", "disconnect"),
         ("AUTH_URL", "auth"),
@@ -103,6 +104,8 @@ class ConfigLoader:
             self.app_dir = Directory(global_muodule["app_dir"])
         else:
             raise ValueError("")
+        self.app_dir = self.app_dir.resolve()
+        print(f"Utilisation de app_dir={self.app_dir}")
 
         self.data_dir = Directory(self.app_dir / self.DATA)
         self.secret_dir = Directory(self.app_dir / self.SECRET)

+ 1 - 1
src/djangotools/views/context/base.py

@@ -33,7 +33,7 @@ def get_settings(request):
 
 
 base_url = settings.BASE_URL
-if not base_url.startswith("/"): base_url = "/"+base_url
+if base_url and not base_url.startswith("/"): base_url = "/"+base_url
 #if base_url.endswith("/"): base_url = base_url[:-1]
 class ContextData:
     page = None

+ 1 - 0
src/djangotools/views/misc.py

@@ -82,6 +82,7 @@ Router.get(settings.LOGIN_URL, need_auth=False, redirect_login=True)(render_page
 def auth(request):
     params = request.POST
     redirect = request.GET.get("redirect", "")
+    redirect_login_error = settings.REDIRECT_LOGIN_ERROR_ARG
     user = params.get("login", None)
     password = params.get("password", None)
     if request.user and request.user.is_authenticated: