42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# ------------------------------------------------------------
|
|
# Módulo para acciones en el cliente HTML
|
|
# ------------------------------------------------------------
|
|
|
|
import os
|
|
from inspect import isclass
|
|
|
|
from controller import Controller
|
|
from platformcode import config, logger
|
|
|
|
|
|
def load_controllers():
|
|
controllers = []
|
|
path = os.path.join(config.get_runtime_path(),"platformcode\controllers")
|
|
for fname in os.listdir(path):
|
|
mod, ext = os.path.splitext(fname)
|
|
fname = os.path.join(path, fname)
|
|
if os.path.isfile(fname) and ext == '.py' and not mod.startswith('_'):
|
|
try:
|
|
exec "import " + mod + " as controller"
|
|
except:
|
|
import traceback
|
|
logger.error(traceback.format_exc())
|
|
|
|
for c in dir(controller):
|
|
cls = getattr(controller, c)
|
|
|
|
if not c.startswith('_') and isclass(cls) and issubclass(cls, Controller) and Controller != cls:
|
|
controllers.append(cls)
|
|
return controllers
|
|
|
|
|
|
controllers = load_controllers()
|
|
|
|
|
|
def find_controller(url):
|
|
result = []
|
|
for c in controllers:
|
|
if c().match(url):
|
|
return c
|