跳转到主要内容

cone.app的jQuery File Upload集成

项目描述

Latest PyPI version Number of PyPI downloads https://travis-ci.org/bluedynamics/cone.fileupload.svg?branch=master https://coveralls.io/repos/github/bluedynamics/cone.fileupload/badge.svg?branch=master

此软件包将jQueryFileUpload集成到cone中。

目前包含版本10.32.0。

jQuery File Upload包含的文件

  • jquery.iframe-transport.js

  • jquery.fileupload.js

  • jquery.fileupload-process.js

  • jquery.fileupload-ui.js

  • jquery.fileupload-validate.js

此外,还包含Javascript-Templates的v3.20.0版本。

用法

由于cone.app不了解底层数据,cone.fileupload只提供抽象服务器实现。

因此,我们首先需要提供一个模型。

from cone.app.model import BaseNode
from pyramid.security import ALL_PERMISSIONS
from pyramid.security import Allow
from pyramid.security import Deny
from pyramid.security import Everyone

ACL = [
    (Allow, 'role:manager', ['add', 'delete']),
    (Allow, Everyone, ['login']),
    (Deny, Everyone, ALL_PERMISSIONS),
]

class Container(BaseNode):
    __acl__ = ACL

    def __call__(self):
        """Persistence happens here.
        """

class File(BaseNode):
    __acl__ = ACL
    # allow setting any value types
    allow_non_node_children = True

现在我们需要为我们的模型提供一个具体的FileUploadHandle实现。

from cone.fileupload.browser.fileupload import FileUploadHandle
from pyramid.view import view_config

@view_config(
    name='fileupload_handle',
    context=Container, # <- here the view gets bound to our model
    accept='application/json',
    renderer='json',
    permission='add')
class ContainerFileUploadHandle(FileUploadHandle):

    def create_file(self, stream, filename, mimetype):
        # this function gets called for persisting uploaded files
        file = self.model[filename] = File()
        file['body'] = stream.read()
        return {
            'name': filename,
            'size': len(file['body']),
            'view_url': '/{0}'.format(file.name),
            'download_url': '/{0}/download'.format(file.name),
            'delete_url': '/{0}/filedelete_handle'.format(file.name),
            'delete_type': 'GET',
        }

    def read_existing(self):
        # this function gets called for initial reading of existing files
        files = list()
        for node in self.model.values():
            files.append({
                'name': node.name,
                'size': len(node['body']),
                'view_url': '/{0}'.format(node.name),
                'download_url': '/{0}/download'.format(node.name),
                'delete_url': '/{0}/filedelete_handle'.format(node.name),
                'delete_type': 'GET',
            })
        return files

可选地,我们可能想要为我们的模型提供一个定制的文件上传面板。

from cone.tile import tile
from cone.fileupload.browser.fileupload import FileUploadTile

@tile(
    name='fileupload',
    path='cone.fileupload:browser/fileupload.pt',
    interface=Container,
    permission='add')
class ContainerFileUploadTile(FileUploadTile):
    accept_file_types = r'/(\.|\/)(gif|jpg)$/i'

文件上传操作要么以名称fileupload_toolbar的专用面板形式呈现,要么集成到上下文菜单中。如果希望在上下文菜单中显示操作,则必须在模型属性上设置fileupload_contextmenu_actions标志。

贡献者

  • Robert Niederreiter

更改

0.7 (2022-01-19)

  • 现代化JavaScript设置。

  • i18n_messages_srcupload_template_srcdownload_template_src属性添加到FileUploadTile

  • 将可选的download_url添加到文件数据字典中。

  • 从文件数据字典中删除thumbnailUrl

重大更改

  • 在文件data字典中将url重命名为view_url

  • 在文件data字典中将deleteUrl重命名为delete_url

  • 在文件data字典中将deleteType重命名为delete_type

0.6 (2021-11-21)

  • 文件上传动作可选地从右键菜单中工作。[rnix]

  • 将按钮工具栏移动到专用瓷砖中进行自定义。[rnix]

  • 将jquery fileupload的包含文件和插件减少到所需的那些。[rnix]

  • 将jquery fileupload更新到版本10.32.0。[rnix]

0.5 (2021-11-08)

  • 在测试和文档中将废弃的allow_non_node_childs重命名为allow_non_node_children。[rnix]

0.4 (2020-05-30)

  • 初始pypi发布 [rnix]

0.3

  • Python 3兼容性。[rnix]

  • 将doctests转换为unittests。[rnix]

  • 使用cone.app.main_hook装饰器。[rnix]

  • 将资源注册移动到主钩子。[rnix]

  • 升级到cone.app 1.0b1。[rnix]

0.2

  • 代码组织。[rnix]

0.1

  • 让它工作 [rnix]

许可协议

版权所有(c)2013-2021,BlueDynamics Alliance,奥地利 版权所有(c)2021,Cone贡献者。保留所有权利。

在不违反以下条件的情况下,允许重新分配和使用源代码和二进制形式,无论是否修改:

  • 源代码重新分配必须保留上述版权声明、本条件列表和以下免责声明。

  • 二进制形式的重新分配必须复制上述版权声明、本条件列表和以下免责声明在提供的文档和其他材料中。

本软件由版权所有者和贡献者提供“按原样”并且不提供任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的隐含保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润的丧失;或业务中断)承担责任,无论这种损害是否由本软件的使用或本软件的任何缺陷、错误或疏忽引起,即使已被告知此类损害的可能性。

项目详情


下载文件

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

源代码分布

cone.fileupload-0.7.tar.gz (43.8 kB 查看散列)

源代码

支持者