跳转到主要内容

为Plone项目生成sampledata的UI和实用方法

项目描述

为什么使用这个?

标准化的sampledata使得在项目上工作变得容易得多(尤其是在团队合作时)。

此软件包简化了为您的plone项目生成sampledata的过程。

如何使用它

对于在项目上工作的开发者,有一个视图列出了所有可用的sampledata插件,并可以运行它们。

https://127.0.0.1/plone/@@sampledata

Screenshot of the @@sampledata with enabled example plugin

默认情况下,视图不会列出任何插件。上面的屏幕显示了通过 <include package="wm.sampledata.example" /> 激活的示例插件。

编写和注册您自定义的sampledata插件非常简单

from wm.sampledata import utils

class MyPlugin(object):
    implements(ISampleDataPlugin)

    title = u"My Plugin Content"
    description = u"Creates a portlet and a random image"

    def generate(self, context):
        portlet = StaticAssignment(u"Sample Portlet", "<p>some content</p>")
        utils.addPortlet(context, 'plone.leftcolumn', portlet)

        utils.createImage(context, 'random-nature.jpg',
                    file = utils.getRandomImage(category='nature', gray=False),
                    title=u"Random Image",
                    description=u"Downloaded from lorempixel.com")

        utils.createImage(context, 'random-sportscar.jpg',
                    file = utils.getRandomFlickrImage(keywords=['car','sport'],
                                                      match_all_keywords=True,
                                                      gray=False),
                    title=u"Random Flickr Image",
                    description=u"Downloaded from loremflickr.com")

myPlugin = MyPlugin()
component.provideUtility(myPlugin,
                         ISampleDataPlugin
                         'my.plugin')

请参阅 wm.sampledata.example 以获取自定义插件的完整示例。

您还可以将插件(甚至其他插件组)分组,这样用户只需运行一个插件即可正确设置他们的sampledata。

from wm.sampledata import PluginGroup

class TestPortal(PluginGroup):

    PLUGINS = [
       MyPlugin,  # also 'my.plugin' could be used
       MainMenu,
       AnotherPluginGroup,
    ]

title = u"Complete Test Portal"
description = u"Creates Main Menu items, Sampledata Folder and Portlets"

请注意,您也可以在PLUGINS中使用实用程序名称,但直接使用类在大多数情况下更为简单。

wm.sampledata.utils中有一系列日益增长的实用方法(例如,用于处理部件和文件,或从http://lorempixel.com下载图片),您可以在插件中使用这些方法。

安装

只需将wm.sampledata添加到构建out的实例eggs中 - 在带有z3c.autoinclude的Plone版本中不需要zcml标签(Plone>=3.3)。

[buildout]
...
eggs =
    ...
    wm.sampledata

为什么还要另一个包?

有其他几个用于生成测试/示例数据的包,但它们都不适合我的用例。(这涉及为可插拔的示例数据生成器提供用户界面,以便开发人员/皮肤设计师在项目开发时可以使用标准化数据)

以前我在plone.users上询问了其他人在Plone上做什么

z3c.sampledata

将执行相同的功能以及更多(依赖项、组、每个插件的配置UI)

对我来说,在zope2实例上运行它过于复杂,并且它似乎是为zope3量身定制的。

基本上,如果能使用wm.sampledata来使用z3c.sampledata并为它提供针对Plone的特定插件将非常棒。

zopyx.ipsumplone

似乎提供了非常相似的实用方法。没有可插拔的生成器,没有用户界面

ely.contentgenerator

提供了一种xml语法来创建示例内容,可能在自定义插件中使用。

collective.contentgenerator

看起来这个是为创建(随机)示例数据用于压力测试而设计的

collective.lorem

内容动作,用于填充内容为lorem-ipsum文本,并提供实用方法 createStandardContent 用于创建随机内容(新闻、文档、文件、图片)和 createNestedStructure 用于创建任意嵌套文件夹结构。

collective.loremipsum

允许创建成员(使用从fakenamegenerator.com获取的名称)

zettwerk.setup

包含用于setuphandlers的实用方法。在structure.py中的方法提供了一个从字典列表创建内容的方法。

待办事项

包含通过API从http://www.randomtext.me/获取的Ipsum Ipsum文本

(有关其他有趣的/有趣的生成器,请参阅http://designshack.net/articles/inspiration/30-useful-and-hilarious-lorem-ipsum-generators/

在实用方法中使用plone.api或替换它们

最终提供api以使用fakenamegenerator.com获取名称(collective.loremipsum已经使用该功能)

贡献

如果您有任何改进想法或知道此包的另一个替代方案,请提交工单给我发邮件

变更日志

0.7.0 (2021-04-29)

  • 设置环境变量CI=true可禁用图片下载(用于运行生成示例数据的测试)

0.6.1 (2019-10-29)

  • 在setup.py中使用兼容pypi的电子邮件地址

0.6.0 (2019-10-29)

  • 使用python-requests下载图片

  • 破坏性更改:将图像数据作为字符串返回(无需StringIO缓冲区)

  • utils.get_placeholder_image 允许从https://placeholder.com/ 获取图像 [fRiSi]

0.5.2 (2016-06-14)

  • 修复用户代理切换器以与Mac/Windows兼容。 [pcdummy]

0.5.1 (2016-05-03)

  • 为图像下载器添加用户代理。 [pcdummy]

0.5 (2016-03-31)

  • util.getFlickrImageutils.getRandomFlickrImage 允许从loremflickr.com获取图像。 [pcdummy, fRiSi]

0.4 (2016-03-08)

  • 类可以用于定义插件组以及实用程序名称 [pcdummy]

0.3 (2014-08-25)

  • utils.doWorkflowTransition在内部使用plone_utils,因为portal_workflow.doActionFor在发布时不会设置有效日期

  • 在finally子句中抛出的错误在debug=True时不显示

  • 添加了实用函数createFile,以创建与createImage创建图像内容相同方式的文件内容。

  • 用invokeFactory替换_createObjectByType,尽管性能略有提高,但它有一些不良副作用。例如,_at_creation_flag没有得到适当处理

  • 添加了实用函数 raptus_hide_forraptus_show_for,以便在特定的 raptus.article 组件中隐藏和显示内容项。

    (有关 raptus.article 的更多信息,请参阅 https://pypi.python.org/pypi/raptus.article.default)

0.2.2 (2013-05-08)

  • 在错误时添加了跟踪记录 [saily]

  • 添加了实用函数 (utils.getImageutils.getRandomImage),用于从 lorempixel.com 下载图片(请参阅 wm.sampledata.example 了解用法)[fRiSi]

  • 为 blockPortlets 添加了更直观的语法(更改会导致向后兼容性改变)[fRiSi]

0.2.1 (2012-05-29)

0.2 (2011-12-02)

  • SampledataView.runPlugin 返回 Plugin.generate 的结果。这使得在单元测试中检查插件是否成功运行变得容易。

0.1 (2011-01-31)

  • 初始版本

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

wm.sampledata-0.7.0.tar.gz (86.7 kB 查看哈希值)

上传时间

由以下组织支持

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