Add support for auto importing dependecies

- No need to use: from .dependencies import *  # NOQA

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-11-10 16:53:29 -04:00
parent 894db8eb19
commit 7ff9bcb707
22 changed files with 23 additions and 22 deletions

View File

@@ -10,7 +10,6 @@ from mayan.apps.common.html_widgets import TwoStateWidget
from mayan.apps.navigation.classes import SourceColumn
from .classes import Dependency, DependencyGroup, DependencyGroupEntry
from .dependencies import * # NOQA
from .links import (
link_check_version, link_dependency_group_entry_detail,
link_dependency_group_entry_list, link_dependency_group_list,
@@ -29,6 +28,8 @@ class DependenciesApp(MayanAppConfig):
def ready(self):
super(DependenciesApp, self).ready()
Dependency.initialize()
SourceColumn(
attribute='get_label', label=_('Label'), order=-1, source=Dependency
)

View File

@@ -2,6 +2,8 @@ from __future__ import print_function, unicode_literals
import fileinput
import json
from importlib import import_module
import logging
import pkg_resources
import shutil
import sys
@@ -158,6 +160,18 @@ class DependencyGroupEntry(object):
class Dependency(object):
_registry = {}
@staticmethod
def initialize():
for app in apps.get_app_configs():
try:
import_module('{}.dependencies'.format(app.name))
except ImportError as exception:
if force_text(exception) not in ('No module named dependencies', 'No module named \'{}.dependencies\''.format(app.name)):
logger.error(
'Error importing %s dependencies.py file; %s', app.name,
exception
)
@staticmethod
def return_sorted(dependencies):
return sorted(dependencies, key=lambda x: x.get_label())