跳转到主要内容

自动设置应用钩子的库

项目描述

Join the Gitter chat Latest PyPI version Python versions Latest CI build status Test coverage Code Climate License

在项目启动时自动设置应用钩子的实用函数。

支持的 Django 版本

  • Django: 3.2, 4.1, 4.2

支持的 django CMS 版本

  • django CMS: 3.9, 3.11

功能

此实用函数中包含的混合类允许在首次访问网站时自动将应用钩子添加到 django CMS 项目中。

此功能旨在供 django CMS 应用开发者使用,通过扩展他们自己的 CMSApp 类来实现。

此行为简化了项目的初始设置,并降低了最终用户的门槛。

此处包含的设置函数执行以下操作

  • 检查应用钩子是否已添加到 CMS 页面

  • 如果是,则跳过任何后续步骤

  • 如果不是

    • 创建主页(如果不存在)

    • 创建主页的子页面

    • 将应用应用钩子添加到其中

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

用法

此实用工具可以通过扩展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()

您可以在_create_config中返回一个ApphookConfig实例的情况下,完全重新定义这些方法。

配置选项

可以通过在auto_setup属性中设置以下键来自定义设置函数的行为

  • enabled:如果True则调用设置;一个不错的选择是使用设置来控制此功能,以便允许应用程序用户禁用该行为(默认:True

  • home title:如果由设置函数创建,则为主页的标题;此标题必须在应用程序CMSApp中设置,否则设置函数将带警告退出。

  • page title:由设置函数创建的页面的标题;此标题必须在应用程序CMSApp中设置,否则设置函数将带警告退出。

  • namespace:当附加Apphook时使用的应用程序实例名称;如果定义了app_name,则此名称必须在应用程序CMSApp中设置,否则设置函数将带警告退出。

  • 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.5.1 (2024-01-16)

功能

  • 切换到Coveralls Github操作(#37)

错误修复

  • 固定Django CMS版本< 4,修复README(#45)

0.5.0 (2023-05-07)

功能

  • 添加对Django 4.2 / django CMS 3.11的支持(#16)

  • 更新工具并删除Python 2 / Django < 2.2兼容性(#10214)

0.4.1 (2019-12-22)

  • 修复分类器

0.4.0 (2019-12-22)

  • 添加Django 2.2支持

  • 添加django CMS 3.6,3.7支持

  • 删除Django < 1.11支持

  • 删除django CMS < 3.6支持

  • 修复猴子补丁不一致应用的问题

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_search索引以避免错误

0.1.1 (2015-11-02)

  • 简化ApphookConfig创建的扩展

0.1.0 (2015-10-24)

  • 首个实验性版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

djangocms-apphook-setup-0.5.1.tar.gz (12.1 kB 查看散列)

上传时间 源代码

构建发行版

djangocms_apphook_setup-0.5.1-py2.py3-none-any.whl (7.4 kB 查看散列)

上传时间 Python 2 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面