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.py
, entities.py
, schema.py
或 hooks.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打包的所有文件(您将找到常规文件control
,rules
,changelog
……未安装)文件
__pkginfo__.py
提供组件元数据,尤其是多维数据集使用的分发和当前版本(服务器端和Web界面)或子多维数据集。
至少你应该有文件 __pkginfo__.py
.
1.1.1. 这个 __init__.py
和 site_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',
],
},
# ...
)