跳转到主要内容

允许在您的表单中添加预览按钮

项目描述

一般描述

预览立方体增加了预览表单提交效果的能力。

主要思想是

  • 将表单数据提交到特殊控制器,该控制器将像正常一样在数据库事务中插入/更新数据

  • 生成预览

  • 回滚数据库更改以保持数据库不变

此规则的唯一例外是可下载实体,如图像:当渲染包含新创建/更新的图像的HTML页面(作为预览示例视图)时,实际图像内容将在上述数据库回滚后不久由用户的浏览器查询。在此立方体中采用的解决方案是在磁盘上保存此类内容,并保留一段时间(可以使用预览时间选项设置),以便可以预览并在之后清理。

用法

最简单的用法涉及自动实体表单,通常希望预览刚刚创建或更新的实体:在这种情况下,从cubicweb_preview.utils导入PreviewFormMixin,并使您的表单继承它:您就完成了。例如,要将它应用于所有AutomaticEntityForm表单,请使用

from cubicweb.selectors import yes
from cubicweb_web.views.autoform import AutomaticEntityForm
from cubicweb_preview.views.forms import PreviewFormMixin

class PreviewAutomaticEntityForm(PreviewFormMixin, AutomaticEntityForm):
    __select__ = AutomaticEntityForm.__select__ & yes()

当然,您可以使用PreviewFormMixin的preview_vid和preview_rql属性自定义预览,这些属性将由控制器用于创建结果集(如果preview_rql不为None则使用preview_rql)并对其应用视图(视图名称为preview_vid值,默认为“index”)。

以下是一个使用文件和预览立方体的CubicWeb实例示例,可以在添加或编辑图像时预览所有图像的列表:我们通过preview_rql设置请求所有图像,并使用主视图显示它们。

from cubicweb.selectors import is_instance
from cubicweb_web.views.autoform import AutomaticEntityForm
from cubicweb_preview.views.forms import PreviewFormMixin

class ImageForm(PreviewFormMixin, AutomaticEntityForm):
   __select__ = AutomaticEntityForm.__select__ & is_instance('Image')
   preview_vid = 'primary'
   preview_rql = 'Any X WHERE X is Image'
   preview_mode = 'inline'

请注意,之前创建的图像存储在数据库中,而预览图像临时存储在磁盘上。默认情况下,预览图像将在磁盘上保留一小时,可以使用preview-store-time选项设置。

preview_mode属性接受newtab(默认值,在自定义模板中打开新浏览器窗口/选项卡中的预览),或inline(将在表单下方显示预览)。

作者

此立方体由SecondWeb S.A.S编写,现在由Logilab S.A.维护和开发。

许可协议

此立方体在LGPL-2许可协议下分发。

项目详情


下载文件

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

源分发

cubicweb-preview-3.0.0.tar.gz (23.0 kB 查看哈希值)

上传时间

构建分发

cubicweb_preview-3.0.0-py3-none-any.whl (19.7 kB 查看哈希值)

上传时间 Python 3

支持者:

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