Beispiel #1
0
def ModelScan():
    import apps
    from importlib import import_module
    from custom_model import AppPage
    for app in apps.apps_list:
        app = app[0]
        app_name = 'apps.%s'%app
        try:
            app_models = import_module('.models', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()
        
        SYS_MENUS[app] = {'_default_grup':[]}
        app_global = import_module('apps.%s'%app)
        if hasattr(app_global,'menus'):
            m_menus = app_global.menus
            for e in m_menus:
                SYS_MENUS[app][e[0]] = []
                
        for attr in dir(app_models):
            m=app_models.__getattribute__(attr)
            try:
                if issubclass(m, AppPage) and m.__name__ not in ['AppPage','GridModel']:
                    APP_PAGES.append( ('%s.%s'%(app,m.__name__), m) )
                    if SYS_MENUS[app].has_key(m.menu_grup):
                        if m.visible:
                            SYS_MENUS[app][m.menu_grup].append( (m.verbose_name, '/page/%s/%s/'%(app,m.__name__), m.icon_class, '') )
                    else:
                        SYS_MENUS[app]['_default_grup'].append( (m.verbose_name, '/page/%s/%s/'%(app,m.__name__), m.icon_class, '') )
                elif len(m.__bases__)>0 and m.__bases__[0].__name__ in ('CrudModel','BaseModel','Model') and m.__name__ not in ['Model','CrudModel','BaseModel']:
                    SYS_MODELS.append( ('%s.%s'%(app,m.__name__), m) )
                    from mocrud.admin import ModelAdmin,admin
                    m_admin = None
                    if hasattr(m,"Admin"):
                        if issubclass(m.Admin, ModelAdmin):
                            m_admin = m.Admin
                    if m_admin==None:
                        m.Admin = m_admin = ModelAdmin
                        admin.register(app,m)
                    else:
                        admin.register(app,m,m_admin)
                    o_admin = admin[m]    
                    if SYS_MENUS[app].has_key(m_admin.menu_grup):
                        if m_admin.visible:
                            SYS_MENUS[app][m_admin.menu_grup].append( (o_admin.get_display_name(), '/admin/%s/'%(o_admin.get_admin_name()), m_admin.icon_class, o_admin.get_admin_name()) )
                    else:
                        SYS_MENUS[app]['_default_grup'].append( (o_admin.get_display_name(), '/admin/%s/'%(o_admin.get_admin_name()), m_admin.icon_class, o_admin.get_admin_name()) )
            except TypeError:
                pass
    if len(SYS_MODELS)>0:
        from mocrud.admin import admin
        admin.setup()
    print '>>> APP_PAGES--------------',APP_PAGES
    print '>>> SYS_MENUS-------------',SYS_MENUS
    print '>>> SYS_MODELS------------',SYS_MODELS
Beispiel #2
0
def ModelScan():
    import mosys
    from importlib import import_module
    from custom_model import AppPage,FormAction
    # 加载所有model
    for app in mosys.apps.apps_list:
        app = app[0]
        app_name = '%s.%s'%(mosys.apps.__name__,app)
        try:
            app_models = import_module('.models', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()
        for attr in dir(app_models):
            m=app_models.__getattribute__(attr)
            try:
                if len(m.__bases__)>0 and ( m.__bases__[0].__name__ in ('CrudModel','BaseModel','Model') or  ( len(m.__bases__[0].__bases__)>0 and m.__bases__[0].__bases__[0].__name__ in ('CrudModel','BaseModel','Model')  )  ) and m.__name__ not in ['Model','CrudModel','BaseModel']:
                    SYS_MODELS.append( ('%s.%s'%(app,m.__name__), m) )
            except AttributeError:
                pass
            except TypeError:
                pass
    
    for app in mosys.apps.apps_list:
        app = app[0]
        app_name = '%s.%s'%(mosys.apps.__name__,app)
        try:
            app_models = import_module('.models', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()
            
        try:
            app_admins = import_module('.admins', app_name)
            app_ops = import_module('.operates', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()
        
        # app级key值得初始化
        SYS_MENUS[app] = {'_default_grup':[]}
        FORM_ACTIONS[app] = {}
        # 菜单配置处理
        app_global = import_module('%s.%s'%(mosys.apps.__name__,app))
        if hasattr(app_global,'menus'):
            m_menus = app_global.menus
            for e in m_menus:
                SYS_MENUS[app][e[0]] = []
        # 第二次大循环开始        
        for attr in dir(app_models):
            m=app_models.__getattribute__(attr)
            try:
                if issubclass(m, AppPage) and m.__name__ not in ['AppPage','GridModel']:
                    if not m.app_menu:
                        m.app_menu = app
                    APP_PAGES.append( ('%s.%s'%(app,m.__name__), m) )
                    if SYS_MENUS[app].has_key(m.menu_grup):
                        if m.visible:
                            SYS_MENUS[app][m.menu_grup].append( (m.verbose_name, '/page/%s/%s/'%(app,m.__name__), m.icon_class, '', m.menu_index) )
                    else:
                        if m.visible:
                            SYS_MENUS[app]['_default_grup'].append( (m.verbose_name, '/page/%s/%s/'%(app,m.__name__), m.icon_class, '', m.menu_index) )
                if issubclass(m, FormAction):
                    model_name = m.model_name
                    if FORM_ACTIONS[app].has_key(model_name):
                        if m.visible:
                            FORM_ACTIONS[app][model_name].append( (m.__name__, m) )
                    else:
                        FORM_ACTIONS[app][model_name] = []
                        if m.visible:
                            FORM_ACTIONS[app][model_name].append( (m.__name__, m) )
                elif len(m.__bases__)>0 and ( m.__bases__[0].__name__ in ('CrudModel','BaseModel','Model') or  ( len(m.__bases__[0].__bases__)>0 and m.__bases__[0].__bases__[0].__name__ in ('CrudModel','BaseModel','Model')  )  ) and m.__name__ not in ['Model','CrudModel','BaseModel']:
                    if hasattr(m,"load"):
                        if not m.load:
                            continue
                    #SYS_MODELS.append( ('%s.%s'%(app,m.__name__), m) )
                    from mocrud.admin import ModelAdmin,admin
                    m_admin = None
                    if hasattr(m,"Admin"):
                        if issubclass(m.Admin, ModelAdmin):
                            m_admin = m.Admin
                    if m_admin==None:
                        m.Admin = m_admin = ModelAdmin
                        admin.register(app,m)
                    else:
                        admin.register(app,m,m_admin)
                    o_admin = admin[m]    
                    if SYS_MENUS[app].has_key(m_admin.menu_grup):
                        if m_admin.visible:
                            SYS_MENUS[app][m_admin.menu_grup].append( (o_admin.get_display_name(), '/admin/%s/'%(o_admin.get_admin_name()), m_admin.icon_class, o_admin.get_admin_name(), o_admin.menu_index) )
                    else:
                        SYS_MENUS[app]['_default_grup'].append( (o_admin.get_display_name(), '/admin/%s/'%(o_admin.get_admin_name()), m_admin.icon_class, o_admin.get_admin_name(), o_admin.menu_index) )
            except AttributeError:
                pass
            except TypeError:
                pass
#    for app in mosys.apps.apps_list:
#        app = app[0]
#        app_name = '%s.%s'%(mosys.apps.__name__,app)
#        try:
#            app_models = import_module('.admins', app_name)
#            app_models = import_module('.operates', app_name)
#        except ImportError:
#            import traceback
#            traceback.print_exc()
    if len(SYS_MODELS)>0:
        from mocrud.admin import admin
        admin.setup()
        m_pages = admin.get_pages()
        for m in m_pages:
            app = m.app_menu
            if SYS_MENUS.has_key(app):
                if SYS_MENUS[app].has_key(m.menu_grup):
                    if m.visible:
                        SYS_MENUS[app][m.menu_grup].append( (m.verbose_name, '/admin/fp/%s/'%m.__class__.__name__, m.icon_class, m.__class__.__name__, m.menu_index) )
                else:
                    if m.visible:
                        SYS_MENUS[app]['_default_grup'].append( (m.verbose_name, '/admin/fp/%s/'%m.__class__.__name__, m.icon_class, m.__class__.__name__, m.menu_index) )
    
    print '>>> APP_PAGES--------------',APP_PAGES
    print '>>> SYS_MENUS-------------',SYS_MENUS
    print '>>> SYS_MODELS------------',SYS_MODELS
Beispiel #3
0
def ModelScan():
    import mosys
    from importlib import import_module
    from custom_model import AppPage, FormAction
    # 加载所有model
    for app in mosys.apps.apps_list:
        app = app[0]
        app_name = '%s.%s' % (mosys.apps.__name__, app)
        try:
            app_models = import_module('.models', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()
        for attr in dir(app_models):
            m = app_models.__getattribute__(attr)
            try:
                if len(m.__bases__) > 0 and (
                        m.__bases__[0].__name__
                        in ('CrudModel', 'BaseModel', 'Model') or
                    (len(m.__bases__[0].__bases__) > 0
                     and m.__bases__[0].__bases__[0].__name__ in
                     ('CrudModel', 'BaseModel', 'Model'))
                ) and m.__name__ not in ['Model', 'CrudModel', 'BaseModel']:
                    SYS_MODELS.append(('%s.%s' % (app, m.__name__), m))
            except AttributeError:
                pass
            except TypeError:
                pass

    for app in mosys.apps.apps_list:
        app = app[0]
        app_name = '%s.%s' % (mosys.apps.__name__, app)
        try:
            app_models = import_module('.models', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()

        try:
            app_admins = import_module('.admins', app_name)
            app_ops = import_module('.operates', app_name)
        except ImportError:
            import traceback
            traceback.print_exc()

        # app级key值得初始化
        SYS_MENUS[app] = {'_default_grup': []}
        FORM_ACTIONS[app] = {}
        # 菜单配置处理
        app_global = import_module('%s.%s' % (mosys.apps.__name__, app))
        if hasattr(app_global, 'menus'):
            m_menus = app_global.menus
            for e in m_menus:
                SYS_MENUS[app][e[0]] = []
        # 第二次大循环开始
        for attr in dir(app_models):
            m = app_models.__getattribute__(attr)
            try:
                if issubclass(m, AppPage) and m.__name__ not in [
                        'AppPage', 'GridModel'
                ]:
                    if not m.app_menu:
                        m.app_menu = app
                    APP_PAGES.append(('%s.%s' % (app, m.__name__), m))
                    if SYS_MENUS[app].has_key(m.menu_grup):
                        if m.visible:
                            SYS_MENUS[app][m.menu_grup].append(
                                (m.verbose_name,
                                 '/page/%s/%s/' % (app, m.__name__),
                                 m.icon_class, '', m.menu_index))
                    else:
                        if m.visible:
                            SYS_MENUS[app]['_default_grup'].append(
                                (m.verbose_name,
                                 '/page/%s/%s/' % (app, m.__name__),
                                 m.icon_class, '', m.menu_index))
                if issubclass(m, FormAction):
                    model_name = m.model_name
                    if FORM_ACTIONS[app].has_key(model_name):
                        if m.visible:
                            FORM_ACTIONS[app][model_name].append(
                                (m.__name__, m))
                    else:
                        FORM_ACTIONS[app][model_name] = []
                        if m.visible:
                            FORM_ACTIONS[app][model_name].append(
                                (m.__name__, m))
                elif len(m.__bases__) > 0 and (
                        m.__bases__[0].__name__
                        in ('CrudModel', 'BaseModel', 'Model') or
                    (len(m.__bases__[0].__bases__) > 0
                     and m.__bases__[0].__bases__[0].__name__ in
                     ('CrudModel', 'BaseModel', 'Model'))
                ) and m.__name__ not in ['Model', 'CrudModel', 'BaseModel']:
                    if hasattr(m, "load"):
                        if not m.load:
                            continue
                    #SYS_MODELS.append( ('%s.%s'%(app,m.__name__), m) )
                    from mocrud.admin import ModelAdmin, admin
                    m_admin = None
                    if hasattr(m, "Admin"):
                        if issubclass(m.Admin, ModelAdmin):
                            m_admin = m.Admin
                    if m_admin == None:
                        m.Admin = m_admin = ModelAdmin
                        admin.register(app, m)
                    else:
                        admin.register(app, m, m_admin)
                    o_admin = admin[m]
                    if SYS_MENUS[app].has_key(m_admin.menu_grup):
                        if m_admin.visible:
                            SYS_MENUS[app][m_admin.menu_grup].append(
                                (o_admin.get_display_name(),
                                 '/admin/%s/' % (o_admin.get_admin_name()),
                                 m_admin.icon_class, o_admin.get_admin_name(),
                                 o_admin.menu_index))
                    else:
                        SYS_MENUS[app]['_default_grup'].append(
                            (o_admin.get_display_name(), '/admin/%s/' %
                             (o_admin.get_admin_name()), m_admin.icon_class,
                             o_admin.get_admin_name(), o_admin.menu_index))
            except AttributeError:
                pass
            except TypeError:
                pass


#    for app in mosys.apps.apps_list:
#        app = app[0]
#        app_name = '%s.%s'%(mosys.apps.__name__,app)
#        try:
#            app_models = import_module('.admins', app_name)
#            app_models = import_module('.operates', app_name)
#        except ImportError:
#            import traceback
#            traceback.print_exc()
    if len(SYS_MODELS) > 0:
        from mocrud.admin import admin
        admin.setup()
        m_pages = admin.get_pages()
        for m in m_pages:
            app = m.app_menu
            if SYS_MENUS.has_key(app):
                if SYS_MENUS[app].has_key(m.menu_grup):
                    if m.visible:
                        SYS_MENUS[app][m.menu_grup].append(
                            (m.verbose_name,
                             '/admin/fp/%s/' % m.__class__.__name__,
                             m.icon_class, m.__class__.__name__, m.menu_index))
                else:
                    if m.visible:
                        SYS_MENUS[app]['_default_grup'].append(
                            (m.verbose_name,
                             '/admin/fp/%s/' % m.__class__.__name__,
                             m.icon_class, m.__class__.__name__, m.menu_index))

    print '>>> APP_PAGES--------------', APP_PAGES
    print '>>> SYS_MENUS-------------', SYS_MENUS
    print '>>> SYS_MODELS------------', SYS_MODELS