库自动设置apphooks

djangocms-apphook-setup的Python项目详细描述


Join the Gitter chatLatest PyPI versionPython versionsLatest Travis CI build statusTest coverageCode ClimateLicense

在项目启动时自动设置apphooks的实用程序函数。

支持的django版本:

  • django 1.8至1.11

支持的Django CMS版本:

  • Django CMS 3.4至3.5

功能

本实用程序中包含的MIXIN允许自动添加一个ApPHOK到Django CMS 项目第一次访问网站。

这是Django CMS应用程序开发人员通过扩展自己的应用程序来使用的 CMSApp类。

这种行为简化了项目的初始设置,降低了最终用户的障碍。

此处包含的设置功能执行以下操作:

  • 检查AppHook是否已添加到CMS页
  • 如果是,则跳过任何进一步的步骤
  • 如果没有:
    • 创建主页(如果不存在)
    • 创建主页的子页
    • 将应用程序apphook添加到其中

如果应用程序使用aldryn-apphooks-config,则创建apphook配置实例 并与apphook一起添加到应用程序页。

注意

为了避免在创建页面期间出现AldrynSearch问题, 页面是伪造的;这通常不是问题,因为页面将重新编制索引 每当内容更新时。

用法

这个实用程序可以通过扩展CMSApp类,添加auto_setup属性来使用 在cms_app.py

@apphook_pool.register
class App4(AutoCMSAppMixin, CMSConfigApp):
    name = _('App4')
    urls = ['sample_app_4.urls']
    app_name = 'app4'
    app_config = App4Config
    # djangocms-apphook-setup attribute
    auto_setup = {
        'enabled': True,
        'home title': 'home title',
        'page title': 'page 4 title',
        'namespace': 'namespace',
        'config_fields': {'random_option': True},
        'config_translated_fields': {'app_title': 'app title', 'object_name': 'name'},
        'sites': True,
    }


# trigger djangocms-apphook-setup function
App4.setup()

自定义apphookconfig实例创建

config_fieldsconfig_translated_fields应该涵盖大多数用例 要创建apphookconfig实例,可能需要对进程进行更多控制。

为此,可以重写AutoCMSAppMixin._create_configAutoCMSAppMixin._create_config_translation

默认实现:

@classmethod
def _create_config(cls):
    return cls.app_config.objects.create(
        namespace=cls.auto_setup['namespace'], **cls.auto_setup['config_fields']
    )

@classmethod
def _create_config_translation(cls, config, lang):
    config.set_current_language(lang, initialize=True)
    for field, data in cls.auto_setup['config_translated_fields'].items():
        setattr(config, field, data)
    config.save_translations()

如果返回apphookconfig实例,则可以完全重新定义方法。 在_create_config中。

配置选项

设置函数的行为可以通过在 auto_setup属性:

  • enabled:如果True调用了安装程序;一个好的选择是使用设置来控制 允许应用程序用户禁用该行为(默认值:True
  • home title:如果由setup函数创建,则主页的标题;此必须设置在 应用程序,否则设置函数将以警告退出。
  • page title:由setup函数创建的页的标题;此必须设置在 应用程序{TT1}$,否则安装函数将以警告退出。
  • namespace:附加apphook时使用的应用程序实例名;必须在 如果{tt22}$定义了应用程序{tt1}$,否则安装函数将退出。 带着警告。
  • config_fields:创建apphookconfigmodel实例时使用的字段;使用此属性 对于非翻译字段。
  • config_translated_fields:创建apphookconfigmodel实例时使用的字段; 对转换字段使用此属性(当前仅支持django-parler)。
  • sites:要为其创建页面的站点ID列表;如果设置为True(默认值) 将为所有网站创建页面。为所有站点创建一个apphook配置; 实例仅在第一页创建时创建。

测试注意事项

由于此实用程序在导入时触发设置功能,因此必须采取额外的步骤 在测试中卸载测试之间的模块(这仅在测试安装程序时需要)。

要包含在setUp方法中的示例清理:

def setUp(self):
    super(SetupAppBaseTest, self).setUp()
    from cms.apphook_pool import apphook_pool

    delete = [
        'my_app',
        'my_app.cms_app',
    ]
    for module in delete:
        if module in sys.modules:
            del sys.modules[module]
    MyApphoolConfigModel.cmsapp = None
    apphook_pool.clear()

历史记录

0.3.0(2018-01-15)

  • 添加对多站点设置的支持
  • 添加DJANGO 1.11支持
  • 添加Django CMS 3.5支持

0.2.0(2016-12-04)

  • 添加对多站点设置的支持
  • 添加django 1.9、1.10支持
  • 添加Django CMS 3.4支持

0.1.2(2015-12-22)

  • Monekypatch Aldryn_搜索索引以避免错误

0.1.1(2015-11-02)

  • 更容易扩展apphookconfig的创建

0.1.0(2015-10-24)

  • 第一个实验版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java扫描器到字节[]?   java JSON对象泄漏窗口   n个列表中的java笛卡尔积   使用jfreechart的具有上限线的java堆叠条形图   java ANTLR以递归方式替换令牌   使用ORDER BY对端点中的值进行排序的java查询   java JFace为SWT添加了什么?   多线程Java:在后台用大量行更新JTable   T具有不兼容的Java泛型边界   java如何获取订阅我的公共viber帐户的订阅者的信息?   java正则表达式:获取嵌套重复组   java Jackson正在忽略XmlAccessorType。没有一个