1.1. 立方体的标准结构

名为“mycube”的多维数据集是python包“cubicWeb mycube”,其结构如下:

cubicweb-mycube/
|
|-- cubicweb_mycube/
|   |
|   |-- data/
|   |   |-- cubes.mycube.css
|   |   |-- cubes.mycube.js
|   |   `-- external_resources
|   |
|   |
|   |-- entities.py
|   |
|   |-- i18n/
|   |   |-- en.po
|   |   |-- es.po
|   |   `-- fr.po
|   |
|   |-- __init__.py
|   |
|   |
|   |-- migration/
|   |   |-- postcreate.py
|   |   `-- precreate.py
|   |
|   |-- __pkginfo__.py
|   |
|   |-- schema.py
|   |
|   |
|   |-- site_cubicweb.py
|   |
|   |-- hooks.py
|   |
|   |
|   `-- views.py
|-- debian/
|   |-- changelog
|   |-- compat
|   |-- control
|   |-- copyright
|   |-- cubicweb-mycube.prerm
|   `-- rules
|-- MANIFEST.in
|-- setup.py
`-- test/
    |-- data/
    |   `-- bootstrap_cubes
    |-- pytestconf.py
    |-- realdb_test_mycube.py
    `-- test_mycube.py

我们可以使用子包而不是python模块 views.pyentities.pyschema.pyhooks.py .例如,我们可以有:

cubicweb-mycube/
|
|-- cubicweb_mycube/
|   |
    |-- entities.py
.   |-- hooks.py
.   `-- views/
.       |-- __init__.py
        |-- forms.py
        |-- primary.py
        `-- widgets.py

哪里:

  • schema 包含架构定义(仅服务器端)

  • entities 包含实体定义(服务器端和Web界面)

  • hooks 包含挂钩和/或视图通知(仅服务器端)

  • views 包含Web界面组件(仅限Web界面)

  • test 包含与多维数据集相关的测试(未安装)

  • i18n 包含支持语言的邮件目录(服务器端和Web界面)

  • data 包含静态内容(图像、CSS、javascript代码)的数据文件…(仅限Web界面)

  • migration 包含新实例的初始化文件 (postcreate.py )以及一个包含组件依赖项的文件,该依赖项取决于版本 (depends.map

  • debian 包含管理Debian打包的所有文件(您将找到常规文件 controlruleschangelog ……未安装)

  • 文件 __pkginfo__.py 提供组件元数据,尤其是多维数据集使用的分发和当前版本(服务器端和Web界面)或子多维数据集。

至少你应该有文件 __pkginfo__.py .

1.1.1. 这个 __init__.pysite_cubicweb.py 文件夹

1.1.2. 这个 __pkginfo__.py 文件

它包含描述多维数据集的元数据,主要用于打包。

本模块的两个重要属性是 __depends__ 和 __recommends__ 指示多维数据集工作所需安装内容(以及必要时的每个版本)的字典。

对其他多维数据集的依赖关系的形式应为“cubicWeb-<cubename>”。

创建实例时,将自动安装依赖项,而不建议安装依赖项。

建议可能被视为一种“弱依赖”。例如,推荐一个立方体最重要的效果是,如果立方体A推荐立方体B,立方体B将在立方体A之前加载(当a依赖于b时,同样的事情也会发生)。

有时需要这种行为:在模式创建上,您可能依赖于在另一个模式中定义的某些内容;在数据库创建上,依赖于由另一个模式的后处理创建的某些内容,等等。

1.2. 这个 setup.py 文件

这是基于标准设置工具的设置模块,它从 __pkginfo__.py . 在 setup 函数调用,它还应在 cubicweb.cubes 分组以便CubicWeb可以发现多维数据集(尤其是它们的自定义 cubicweb-ctl 命令):

setup(
  # ...
  entry_points={
      'cubicweb.cubes': [
          'mycube=cubicweb_mycube',
      ],
  },
  # ...
)

1.2.1. migration/precreate.py and migration/postcreate.py

1.2.2. 外部资源,如图像、javascript和css文件

1.2.3. 开箱即用测试

1.2.4. 包装与配送