多维数据集创建和架构定义

步骤1:创建虚拟环境

fisrt我需要一个带有cubicWeb的python虚拟环境:

python3 -m venv venv
. venv/bin/activate
pip install cubicweb[pyramid]

步骤2:为我的网站创建新的多维数据集

关于我的开发环境的一个注意事项是:我想在将多维数据集保存在当前目录中的同时使用CubicWeb和多维数据集的打包版本。 ~/src/cubes ::

cd ~/src/cubes
CW_MODE=user

我现在可以创建多维数据集,其中包含此网站的自定义代码,使用:

cubicweb-ctl newcube sytweb

输入简短描述,这将在 cubicweb-sytweb 文件夹。

步骤3:将构建基块拾取到现有多维数据集中

在我的网站中,我想处理的几乎所有东西都已经在现有的多维数据集中进行了建模,我将根据需要对这些多维数据集进行扩展。因此,我将选择以下多维数据集:

  • folder <https://www.cubicweb.org/project/cubicweb-folder> _包含 Folder 实体类型,将同时用作“相册”和映射文件系统文件夹的方法。实体将使用 filed_under 关系。

  • file <https://www.cubicweb.org/project/cubicweb-file> _包含 File 实体类型、库视图和文件系统导入实用程序。

  • person <https://www.cubicweb.org/project/cubicweb-person> _包含 Person 实体类型加上一些基本视图。

  • comment <https://www.cubicweb.org/project/cubicweb-comment> _提供完整的注释系统,允许对支持 comments 通过添加 Comment 实体。

  • tag <https://www.cubicweb.org/project/cubicweb-tag> _提供一个完整的标记系统,作为一种简单而强大的方法来分类支持 tags 通过链接到的关系 Tag 实体。这将允许导航到大量图片中。

好吧,现在我要告诉我的多维数据集需要所有这些编辑 cubicweb-sytweb/cubicweb_sytweb/__pkginfo__.py

__depends__ = {'cubicweb': '>= 3.26.7',
               'cubicweb-file': '>= 1.9.0',
               'cubicweb-folder': '>= 1.1.0',
               'cubicweb-person': '>= 1.2.0',
               'cubicweb-comment': '>= 1.2.0',
               'cubicweb-tag': '>= 1.2.0'
               }

注意,您可以表示应该使用的多维数据集的最小版本, None 指任何可用版本。所有以“cubicWeb-”开头的包都将被识别为多维数据集,而不是裸的python包。

如果您的多维数据集是为Debian打包的,那么最好更新 debian/control 同时归档,这样你就不会忘记它。

现在,我需要安装所有依赖项::

cd cubicweb-sytweb
pip install -e .
pip install cubicweb[etwist]
pip install psycopg2 # for postgresql

步骤4:将多维数据集架构中的所有内容粘合在一起

输入此代码 cubicweb-sytweb/cubicweb_sytweb/schema.py

from yams.buildobjs import RelationDefinition


class comments(RelationDefinition):
    subject = 'Comment'
    object = 'File'
    # a Comment can be on only one File
    # but a File can have several comments
    cardinality = '1*'
    composite = 'object'


class tags(RelationDefinition):
    subject = 'Tag'
    object = 'File'


class filed_under(RelationDefinition):
    subject = 'File'
    object = 'Folder'


class displayed_on(RelationDefinition):
    subject = 'Person'
    object = 'File'

此架构:

  • 允许批注和标记 File 通过添加 commentstags 关系。这应该是我们为这个特性所做的全部工作,因为相关的多维数据集提供了“可插拔部分”,它自动显示在支持关系的实体类型的主视图上。

  • 添加一个 situated_in 关系定义,以便图像实体可以进行地理本地化。

  • 添加新关系 displayed_on 在照片上能看到谁的关系。

这个模式可能会随着时间的推移而发展(至少对于安全处理而言),但是由于让模式发展的可能性是CubicWeb的特性(和目标)之一,因此我们暂时不担心它,稍后在需要时查看它。

步骤5:创建实例

现在我有了一个模式,我想创建一个实例。要使用这个新的“sytweb”多维数据集执行此操作,我运行:

cubicweb-ctl create sytweb sytweb_instance

为了简单起见,您应该使用sqlite数据库,它不需要配置。

别忘了对这个问题说“是”。 Allow anonymous access ? [y/N]:

提示:如果在初始化数据库时出错,可以通过运行以下命令避免再次回答问题:

cubicweb-ctl db-create sytweb_instance

这将使用已经配置的实例,并直接从创建数据库步骤开始,从而跳过“create”命令提出的问题。

实例和数据库完全初始化后,运行::

cubicweb-ctl pyramid -D sytweb_instance

要启动实例,请检查您是否可以在其上连接,等等…然后继续http://localhost:8080(如果修改了另一个端口,也可以使用另一个端口)