diff --git a/Makefile.am b/Makefile.am index 06b00f0..c885a8e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = lodel progs plugins lodelsites +SUBDIRS = lodel progs lodelsites EXTRA_DIST = plugins runtest examples tests runtest.sh debian CLEANFILES = runtest diff --git a/configure.ac b/configure.ac index 360e25d..200c2ea 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ AC_CONFIG_FILES([Makefile \ lodel/utils/Makefile \ progs/Makefile \ progs/slim/Makefile \ - plugins/Makefile \ + lodel/plugins/Makefile \ lodelsites/Makefile \ ]) diff --git a/lodel/Makefile.am b/lodel/Makefile.am index 40db679..643777d 100644 --- a/lodel/Makefile.am +++ b/lodel/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS=auth editorial_model leapi plugin settings utils +SUBDIRS=auth editorial_model leapi plugin settings utils plugins lodel_PYTHON = *.py CLEANFILES = buildconf.py diff --git a/lodel/context.py b/lodel/context.py index c58bd34..3ea54a4 100644 --- a/lodel/context.py +++ b/lodel/context.py @@ -38,6 +38,10 @@ class ContextError(Exception): class ContextModuleError(ContextError): pass +def dir_for_context(site_identifier): + return os.path.join(lodelsites.__path__[0], site_identifier) + + ##@brief Designed to permit dynamic packages creation from the lodel package # #The class is added in first position in the sys.metapath variable. Doing this @@ -53,6 +57,9 @@ class ContextModuleError(ContextError): #@note Current implementation is far from perfection. In fact no deletion #mechanisms is written and the virtual package cannot be a subpackage of #the lodel package for the moment... +#@note Current implementation asserts that all plugins are in CWD +#a symlink will be done to create a copy of the plugins folder in +#lodelsites/SITENAME/ folder class LodelMetaPathFinder(importlib.abc.MetaPathFinder): def find_spec(fullname, path, target = None): @@ -62,7 +69,7 @@ class LodelMetaPathFinder(importlib.abc.MetaPathFinder): spl = fullname.split('.') site_identifier = spl[1] #creating a symlink to represent the lodel site package - mod_path = os.path.join(lodelsites.__path__[0], site_identifier) + mod_path = dir_for_context(site_identifier) if not os.path.exists(mod_path): os.symlink(lodel.__path__[0], mod_path, True) #Cache invalidation after we "created" the new package @@ -248,6 +255,14 @@ initialize it anymore") #Add a single context with no site_id cls._contexts = cls._current = cls(None) + ##@brief Return the directory of the package of the current loaded context + @classmethod + def context_dir(cls): + if cls._type == cls.MONOSITE: + return './' + return dir_for_context(cls._current.__id) + + ##@brief Validate a context identifier #@param identifier str : the identifier to validate #@return true if the name is valide else false diff --git a/lodel/plugin/plugins.py b/lodel/plugin/plugins.py index 16601bb..3ffbd49 100644 --- a/lodel/plugin/plugins.py +++ b/lodel/plugin/plugins.py @@ -55,7 +55,7 @@ ACTIVATE_METHOD_NAME = '_activate' ##@brief Discover stage cache filename DISCOVER_CACHE_FILENAME = '.plugin_discover_cache.json' ##@brief Default & failover value for plugins path list -DEFAULT_PLUGINS_PATH_LIST = ['./plugins'] +DEFAULT_PLUGINS_PATH_LIST = [os.path.join(LodelContext.context_dir(),'plugins')] ##@brief List storing the mandatory variables expected in a plugin __init__.py #file diff --git a/plugins/Makefile.am b/lodel/plugins/Makefile.am similarity index 100% rename from plugins/Makefile.am rename to lodel/plugins/Makefile.am diff --git a/plugins/__init__.py b/lodel/plugins/__init__.py similarity index 100% rename from plugins/__init__.py rename to lodel/plugins/__init__.py diff --git a/plugins/dummy/__init__.py b/lodel/plugins/dummy/__init__.py similarity index 100% rename from plugins/dummy/__init__.py rename to lodel/plugins/dummy/__init__.py diff --git a/plugins/dummy/confspec.py b/lodel/plugins/dummy/confspec.py similarity index 100% rename from plugins/dummy/confspec.py rename to lodel/plugins/dummy/confspec.py diff --git a/plugins/dummy/main.py b/lodel/plugins/dummy/main.py similarity index 100% rename from plugins/dummy/main.py rename to lodel/plugins/dummy/main.py diff --git a/plugins/dummy_datasource/__init__.py b/lodel/plugins/dummy_datasource/__init__.py similarity index 100% rename from plugins/dummy_datasource/__init__.py rename to lodel/plugins/dummy_datasource/__init__.py diff --git a/plugins/dummy_datasource/datasource.py b/lodel/plugins/dummy_datasource/datasource.py similarity index 100% rename from plugins/dummy_datasource/datasource.py rename to lodel/plugins/dummy_datasource/datasource.py diff --git a/plugins/dummy_datasource/main.py b/lodel/plugins/dummy_datasource/main.py similarity index 100% rename from plugins/dummy_datasource/main.py rename to lodel/plugins/dummy_datasource/main.py diff --git a/plugins/dummy_datasource/migration_handler.py b/lodel/plugins/dummy_datasource/migration_handler.py similarity index 100% rename from plugins/dummy_datasource/migration_handler.py rename to lodel/plugins/dummy_datasource/migration_handler.py diff --git a/plugins/filesystem_session/__init__.py b/lodel/plugins/filesystem_session/__init__.py similarity index 100% rename from plugins/filesystem_session/__init__.py rename to lodel/plugins/filesystem_session/__init__.py diff --git a/plugins/filesystem_session/confspec.py b/lodel/plugins/filesystem_session/confspec.py similarity index 100% rename from plugins/filesystem_session/confspec.py rename to lodel/plugins/filesystem_session/confspec.py diff --git a/plugins/filesystem_session/filesystem_session.py b/lodel/plugins/filesystem_session/filesystem_session.py similarity index 100% rename from plugins/filesystem_session/filesystem_session.py rename to lodel/plugins/filesystem_session/filesystem_session.py diff --git a/plugins/filesystem_session/main.py b/lodel/plugins/filesystem_session/main.py similarity index 100% rename from plugins/filesystem_session/main.py rename to lodel/plugins/filesystem_session/main.py diff --git a/plugins/mongodb_datasource/__init__.py b/lodel/plugins/mongodb_datasource/__init__.py similarity index 100% rename from plugins/mongodb_datasource/__init__.py rename to lodel/plugins/mongodb_datasource/__init__.py diff --git a/plugins/mongodb_datasource/confspec.py b/lodel/plugins/mongodb_datasource/confspec.py similarity index 100% rename from plugins/mongodb_datasource/confspec.py rename to lodel/plugins/mongodb_datasource/confspec.py diff --git a/plugins/mongodb_datasource/datasource.py b/lodel/plugins/mongodb_datasource/datasource.py similarity index 100% rename from plugins/mongodb_datasource/datasource.py rename to lodel/plugins/mongodb_datasource/datasource.py diff --git a/plugins/mongodb_datasource/exceptions.py b/lodel/plugins/mongodb_datasource/exceptions.py similarity index 100% rename from plugins/mongodb_datasource/exceptions.py rename to lodel/plugins/mongodb_datasource/exceptions.py diff --git a/plugins/mongodb_datasource/main.py b/lodel/plugins/mongodb_datasource/main.py similarity index 100% rename from plugins/mongodb_datasource/main.py rename to lodel/plugins/mongodb_datasource/main.py diff --git a/plugins/mongodb_datasource/migration_handler.py b/lodel/plugins/mongodb_datasource/migration_handler.py similarity index 100% rename from plugins/mongodb_datasource/migration_handler.py rename to lodel/plugins/mongodb_datasource/migration_handler.py diff --git a/plugins/mongodb_datasource/utils.py b/lodel/plugins/mongodb_datasource/utils.py similarity index 100% rename from plugins/mongodb_datasource/utils.py rename to lodel/plugins/mongodb_datasource/utils.py diff --git a/plugins/multisite/__init__.py b/lodel/plugins/multisite/__init__.py similarity index 100% rename from plugins/multisite/__init__.py rename to lodel/plugins/multisite/__init__.py diff --git a/plugins/multisite/main.py b/lodel/plugins/multisite/main.py similarity index 100% rename from plugins/multisite/main.py rename to lodel/plugins/multisite/main.py diff --git a/plugins/ram_sessions/__init__.py b/lodel/plugins/ram_sessions/__init__.py similarity index 100% rename from plugins/ram_sessions/__init__.py rename to lodel/plugins/ram_sessions/__init__.py diff --git a/plugins/ram_sessions/main.py b/lodel/plugins/ram_sessions/main.py similarity index 100% rename from plugins/ram_sessions/main.py rename to lodel/plugins/ram_sessions/main.py diff --git a/plugins/webui/__init__.py b/lodel/plugins/webui/__init__.py similarity index 100% rename from plugins/webui/__init__.py rename to lodel/plugins/webui/__init__.py diff --git a/plugins/webui/client.py b/lodel/plugins/webui/client.py similarity index 100% rename from plugins/webui/client.py rename to lodel/plugins/webui/client.py diff --git a/plugins/webui/confspec.py b/lodel/plugins/webui/confspec.py similarity index 100% rename from plugins/webui/confspec.py rename to lodel/plugins/webui/confspec.py diff --git a/plugins/webui/exceptions.py b/lodel/plugins/webui/exceptions.py similarity index 100% rename from plugins/webui/exceptions.py rename to lodel/plugins/webui/exceptions.py diff --git a/plugins/webui/interface/__init__.py b/lodel/plugins/webui/interface/__init__.py similarity index 100% rename from plugins/webui/interface/__init__.py rename to lodel/plugins/webui/interface/__init__.py diff --git a/plugins/webui/interface/controllers/__init__.py b/lodel/plugins/webui/interface/controllers/__init__.py similarity index 100% rename from plugins/webui/interface/controllers/__init__.py rename to lodel/plugins/webui/interface/controllers/__init__.py diff --git a/plugins/webui/interface/controllers/admin.py b/lodel/plugins/webui/interface/controllers/admin.py similarity index 100% rename from plugins/webui/interface/controllers/admin.py rename to lodel/plugins/webui/interface/controllers/admin.py diff --git a/plugins/webui/interface/controllers/base.py b/lodel/plugins/webui/interface/controllers/base.py similarity index 100% rename from plugins/webui/interface/controllers/base.py rename to lodel/plugins/webui/interface/controllers/base.py diff --git a/plugins/webui/interface/controllers/document.py b/lodel/plugins/webui/interface/controllers/document.py similarity index 100% rename from plugins/webui/interface/controllers/document.py rename to lodel/plugins/webui/interface/controllers/document.py diff --git a/plugins/webui/interface/controllers/listing.py b/lodel/plugins/webui/interface/controllers/listing.py similarity index 100% rename from plugins/webui/interface/controllers/listing.py rename to lodel/plugins/webui/interface/controllers/listing.py diff --git a/plugins/webui/interface/controllers/users.py b/lodel/plugins/webui/interface/controllers/users.py similarity index 100% rename from plugins/webui/interface/controllers/users.py rename to lodel/plugins/webui/interface/controllers/users.py diff --git a/plugins/webui/interface/lodelrequest.py b/lodel/plugins/webui/interface/lodelrequest.py similarity index 100% rename from plugins/webui/interface/lodelrequest.py rename to lodel/plugins/webui/interface/lodelrequest.py diff --git a/plugins/webui/interface/router.py b/lodel/plugins/webui/interface/router.py similarity index 100% rename from plugins/webui/interface/router.py rename to lodel/plugins/webui/interface/router.py diff --git a/plugins/webui/interface/template/__init__.py b/lodel/plugins/webui/interface/template/__init__.py similarity index 100% rename from plugins/webui/interface/template/__init__.py rename to lodel/plugins/webui/interface/template/__init__.py diff --git a/plugins/webui/interface/template/api/__init__.py b/lodel/plugins/webui/interface/template/api/__init__.py similarity index 100% rename from plugins/webui/interface/template/api/__init__.py rename to lodel/plugins/webui/interface/template/api/__init__.py diff --git a/plugins/webui/interface/template/api/api_lodel_templates.py b/lodel/plugins/webui/interface/template/api/api_lodel_templates.py similarity index 100% rename from plugins/webui/interface/template/api/api_lodel_templates.py rename to lodel/plugins/webui/interface/template/api/api_lodel_templates.py diff --git a/plugins/webui/interface/template/exceptions/__init__.py b/lodel/plugins/webui/interface/template/exceptions/__init__.py similarity index 100% rename from plugins/webui/interface/template/exceptions/__init__.py rename to lodel/plugins/webui/interface/template/exceptions/__init__.py diff --git a/plugins/webui/interface/template/exceptions/not_allowed_custom_api_key_error.py b/lodel/plugins/webui/interface/template/exceptions/not_allowed_custom_api_key_error.py similarity index 100% rename from plugins/webui/interface/template/exceptions/not_allowed_custom_api_key_error.py rename to lodel/plugins/webui/interface/template/exceptions/not_allowed_custom_api_key_error.py diff --git a/plugins/webui/interface/template/loader.py b/lodel/plugins/webui/interface/template/loader.py similarity index 100% rename from plugins/webui/interface/template/loader.py rename to lodel/plugins/webui/interface/template/loader.py diff --git a/plugins/webui/interface/urls.py b/lodel/plugins/webui/interface/urls.py similarity index 100% rename from plugins/webui/interface/urls.py rename to lodel/plugins/webui/interface/urls.py diff --git a/plugins/webui/main.py b/lodel/plugins/webui/main.py similarity index 100% rename from plugins/webui/main.py rename to lodel/plugins/webui/main.py diff --git a/plugins/webui/run.py b/lodel/plugins/webui/run.py similarity index 100% rename from plugins/webui/run.py rename to lodel/plugins/webui/run.py diff --git a/plugins/webui/templates/admin/admin.html b/lodel/plugins/webui/templates/admin/admin.html similarity index 100% rename from plugins/webui/templates/admin/admin.html rename to lodel/plugins/webui/templates/admin/admin.html diff --git a/plugins/webui/templates/admin/admin_create.html b/lodel/plugins/webui/templates/admin/admin_create.html similarity index 100% rename from plugins/webui/templates/admin/admin_create.html rename to lodel/plugins/webui/templates/admin/admin_create.html diff --git a/plugins/webui/templates/admin/admin_delete.html b/lodel/plugins/webui/templates/admin/admin_delete.html similarity index 100% rename from plugins/webui/templates/admin/admin_delete.html rename to lodel/plugins/webui/templates/admin/admin_delete.html diff --git a/plugins/webui/templates/admin/admin_edit.html b/lodel/plugins/webui/templates/admin/admin_edit.html similarity index 100% rename from plugins/webui/templates/admin/admin_edit.html rename to lodel/plugins/webui/templates/admin/admin_edit.html diff --git a/plugins/webui/templates/admin/admin_search.html b/lodel/plugins/webui/templates/admin/admin_search.html similarity index 100% rename from plugins/webui/templates/admin/admin_search.html rename to lodel/plugins/webui/templates/admin/admin_search.html diff --git a/plugins/webui/templates/admin/editable_component.html b/lodel/plugins/webui/templates/admin/editable_component.html similarity index 100% rename from plugins/webui/templates/admin/editable_component.html rename to lodel/plugins/webui/templates/admin/editable_component.html diff --git a/plugins/webui/templates/admin/list_classes_admin.html b/lodel/plugins/webui/templates/admin/list_classes_admin.html similarity index 100% rename from plugins/webui/templates/admin/list_classes_admin.html rename to lodel/plugins/webui/templates/admin/list_classes_admin.html diff --git a/plugins/webui/templates/admin/list_classes_create.html b/lodel/plugins/webui/templates/admin/list_classes_create.html similarity index 100% rename from plugins/webui/templates/admin/list_classes_create.html rename to lodel/plugins/webui/templates/admin/list_classes_create.html diff --git a/plugins/webui/templates/admin/list_classes_delete.html b/lodel/plugins/webui/templates/admin/list_classes_delete.html similarity index 100% rename from plugins/webui/templates/admin/list_classes_delete.html rename to lodel/plugins/webui/templates/admin/list_classes_delete.html diff --git a/plugins/webui/templates/admin/show_class_admin.html b/lodel/plugins/webui/templates/admin/show_class_admin.html similarity index 100% rename from plugins/webui/templates/admin/show_class_admin.html rename to lodel/plugins/webui/templates/admin/show_class_admin.html diff --git a/plugins/webui/templates/admin/show_class_delete.html b/lodel/plugins/webui/templates/admin/show_class_delete.html similarity index 100% rename from plugins/webui/templates/admin/show_class_delete.html rename to lodel/plugins/webui/templates/admin/show_class_delete.html diff --git a/plugins/webui/templates/base.html b/lodel/plugins/webui/templates/base.html similarity index 100% rename from plugins/webui/templates/base.html rename to lodel/plugins/webui/templates/base.html diff --git a/plugins/webui/templates/base_backend.html b/lodel/plugins/webui/templates/base_backend.html similarity index 100% rename from plugins/webui/templates/base_backend.html rename to lodel/plugins/webui/templates/base_backend.html diff --git a/plugins/webui/templates/components/components.html b/lodel/plugins/webui/templates/components/components.html similarity index 100% rename from plugins/webui/templates/components/components.html rename to lodel/plugins/webui/templates/components/components.html diff --git a/plugins/webui/templates/css/bootstrap-3.3.7/docs/examples/signin/signin.css b/lodel/plugins/webui/templates/css/bootstrap-3.3.7/docs/examples/signin/signin.css similarity index 100% rename from plugins/webui/templates/css/bootstrap-3.3.7/docs/examples/signin/signin.css rename to lodel/plugins/webui/templates/css/bootstrap-3.3.7/docs/examples/signin/signin.css diff --git a/plugins/webui/templates/css/template.css b/lodel/plugins/webui/templates/css/template.css similarity index 100% rename from plugins/webui/templates/css/template.css rename to lodel/plugins/webui/templates/css/template.css diff --git a/plugins/webui/templates/documents/show.html b/lodel/plugins/webui/templates/documents/show.html similarity index 100% rename from plugins/webui/templates/documents/show.html rename to lodel/plugins/webui/templates/documents/show.html diff --git a/plugins/webui/templates/error.html b/lodel/plugins/webui/templates/error.html similarity index 100% rename from plugins/webui/templates/error.html rename to lodel/plugins/webui/templates/error.html diff --git a/plugins/webui/templates/errors/404.html b/lodel/plugins/webui/templates/errors/404.html similarity index 100% rename from plugins/webui/templates/errors/404.html rename to lodel/plugins/webui/templates/errors/404.html diff --git a/plugins/webui/templates/index/index.html b/lodel/plugins/webui/templates/index/index.html similarity index 100% rename from plugins/webui/templates/index/index.html rename to lodel/plugins/webui/templates/index/index.html diff --git a/plugins/webui/templates/listing/display_obj.html b/lodel/plugins/webui/templates/listing/display_obj.html similarity index 100% rename from plugins/webui/templates/listing/display_obj.html rename to lodel/plugins/webui/templates/listing/display_obj.html diff --git a/plugins/webui/templates/listing/list_classes.html b/lodel/plugins/webui/templates/listing/list_classes.html similarity index 100% rename from plugins/webui/templates/listing/list_classes.html rename to lodel/plugins/webui/templates/listing/list_classes.html diff --git a/plugins/webui/templates/listing/show_class.html b/lodel/plugins/webui/templates/listing/show_class.html similarity index 100% rename from plugins/webui/templates/listing/show_class.html rename to lodel/plugins/webui/templates/listing/show_class.html diff --git a/plugins/webui/templates/listing/show_object.html b/lodel/plugins/webui/templates/listing/show_object.html similarity index 100% rename from plugins/webui/templates/listing/show_object.html rename to lodel/plugins/webui/templates/listing/show_object.html diff --git a/plugins/webui/templates/listing/show_object_detailled.html b/lodel/plugins/webui/templates/listing/show_object_detailled.html similarity index 100% rename from plugins/webui/templates/listing/show_object_detailled.html rename to lodel/plugins/webui/templates/listing/show_object_detailled.html diff --git a/plugins/webui/templates/test.html b/lodel/plugins/webui/templates/test.html similarity index 100% rename from plugins/webui/templates/test.html rename to lodel/plugins/webui/templates/test.html diff --git a/plugins/webui/templates/users/signin.html b/lodel/plugins/webui/templates/users/signin.html similarity index 100% rename from plugins/webui/templates/users/signin.html rename to lodel/plugins/webui/templates/users/signin.html diff --git a/plugins/webui/templates/users/welcome.html b/lodel/plugins/webui/templates/users/welcome.html similarity index 100% rename from plugins/webui/templates/users/welcome.html rename to lodel/plugins/webui/templates/users/welcome.html diff --git a/plugins/webui/uwsgi/uwsgi.ini b/lodel/plugins/webui/uwsgi/uwsgi.ini similarity index 100% rename from plugins/webui/uwsgi/uwsgi.ini rename to lodel/plugins/webui/uwsgi/uwsgi.ini diff --git a/progs/create_instance.sh b/progs/create_instance.sh index 925e361..021867f 100755 --- a/progs/create_instance.sh +++ b/progs/create_instance.sh @@ -7,7 +7,8 @@ usage() { } cp_loader() { - cp -Rv $install_tpl/loader.py $instdir/ + loader="${install_tpl}/loader.py" + cp -Rv $loader $instdir/ # Adding lib path to loader sed -i -E "s#^(LODEL2_LIB_ABS_PATH = )None#\1'$libdir'#" "$loader" } @@ -83,8 +84,12 @@ cp -Rv $install_tpl/conf.d $instdir/ cp -Rv $em_file $instdir/editorial_model.pickle ln -sv $install_tpl/Makefile $instdir/Makefile ln -sv $install_tpl/lodel_admin.py $instdir/lodel_admin.py -ln -sv $libdir/plugins $instdir/plugins +ln -sv $libdir/lodel/plugins $instdir/plugins cp_loader + +echo "BEGIN LS" +ls -la $instdir +echo "END LS" # Adding instance name to conf sed -i -E "s#^sitename = noname#sitename = $name#" "$conf" diff --git a/progs/slim/install_model/loader.py b/progs/slim/install_model/loader.py index c6ff770..eb05399 100644 --- a/progs/slim/install_model/loader.py +++ b/progs/slim/install_model/loader.py @@ -10,7 +10,7 @@ import sys, os, os.path # # Bootstraping # -LODEL2_LIB_ABS_PATH = None +LODEL2_LIB_ABS_PATH = '/home/yannweb/dev/lodel2/lodel2-git' if LODEL2_LIB_ABS_PATH is not None: if not os.path.isdir(LODEL2_LIB_ABS_PATH): print("FATAL ERROR : the LODEL2_LIB_ABS_PATH variable in loader.py is \