用于Products.PloneMeeting用例的扩展rest api服务
项目描述
plonemeeting.restapi
plone.restapi特定端点用于Products.PloneMeeting
安装
通过将其添加到您的buildout中安装plonemeeting.restapi
[buildout] ... eggs = plonemeeting.restapi
然后运行 bin/buildout
贡献
许可证
该项目受GPLv2许可证的许可。
变更日志
版本 1.x 用于 PloneMeeting 4.1.x,版本 2.x 用于 PloneMeeting 4.2.x 及以上。
2.7 (2024-06-07)
修复了 create_element_using_ws_rest 的法语翻译。[gbastien]
2.6 (2024-05-27)
适配了 test_restapi_add_item_with_annexes_children 以展示附件 content_category 的 only_pdf 参数被考虑在内。[gbastien]
添加了 testServiceDelete 以展示 DELETE 方法按预期工作。[gbastien]
修复了 create_element_using_ws_rest_comments 的法语翻译。[gbastien]
2.5 (2024-03-19)
当使用 fullobjects 时,只有在使用 include_nextprev=true 明确要求时才序列化 next/previous。[gbastien]
2.4 (2024-03-14)
修复了 test_restapi_add_clean_meeting,当生成新日期时使用 datetime 和 timedelta 来避免生成不存在的日期,这里生成的是 2025/02/29,这个日期不存在。[gbastien]
当使用 @users?extra_include=categories 时,只有在 MeetingConfig 中启用时才返回分类,对于 classifiers 也是如此,这避免了当分类不被使用时用户可选的分类。[gbastien]
当在 metadata_fields 中询问时,为 review_state 和 creators 添加了特殊行为。
review_state 将返回一个包含 review_state id 和翻译标题的 token/title。
creators 将返回一个包含每个创建者 id 和全名的 token/title 列表。
[gbastien]
2.3 (2023-12-11)
适配了代码,因为 Products.PloneMeeting.utils.add_wf_history_action 被移动到 imio.history.utils.add_event_to_wf_history,而 ToolPloneMeeting.getAdvicePortalTypes 和 ToolPloneMeeting.getAdvicePortalTypeIds 被移动到 utils。[gbastien]
2.2 (2023-09-12)
即使 include_base_data=false,也始终在结果中包含 @type 信息,因为它与 UidSearchGet.required_meta_type_id 一起使用。[gbastien]
2.1 (2023-06-27)
在 base.serialize_attendees 中,不要使用序列化结果中的 UID,因为它可能不存在,当使用 include_base_data=false 时。[gbastien]
2.0.2 (2023-05-31)
在会议和项目上添加了 @attendees GET,并在会议和项目上添加了 @attendee GET/PATCH。在会议和项目上添加了 extra_include=attendees。[gbastien]
管理 metadata_fields=internal_number。[gbastien]
2.0.1 (2023-03-07)
修复了与 imio.pm.ws 测试一起执行测试时的测试隔离问题。[gbastien]
2.0 (2023-03-06)
停止支持 PloneMeeting 4.1.x。[gbastien]
将 config 添加到 extra_include 允许的参数中,以返回有关会议配置的信息 [mpeeters]
确保当使用 __children__ 参数时,in_name_of 参数只处理一次 [mpeeters]
只有当未提供 externalIdentifier 时才强制使用 UID 参数 [mpeeters]
添加了 test_restapi_add_item_manually_linked_items 以检查是否可以创建项目并使用 MeetingItem.manuallyLinkedItems 功能。[gbastien]
适配了代码,因为 MeetingConfig.useGroupsAsCategories 被删除。字段 MeetingItem.category 是一个可选字段,由 MeetingConfig.usedItemAttributes 管理就像其他任何可选字段一样。[gbastien]
默认将 date 添加到会议信息中。[mpeeters]
1.0rc18 (2022-08-26)
当未指定 config_id 时,允许使用 type 参数与 in_name_of 一起使用 [mpeeters]
修复了 BasePost._turn_ids_into_uids 以管理 My organization 之外的机构,这是字段 MeetingItem.associatedGroups 的情况。[gbastien]
重构了行为,以便我们使用 ISerializeToJson 序列化程序,当任何参数被给出时。[gbastien]
完成了 @config 服务(现在使用 SearchGet)以返回所有 MeetingConfigs 当 config_id=*。[gbastien]
重构了 @get 端点以使用 SearchGet,因此我们可以使用 in_name_of。[gbastien]
添加了 DeserializeFromJson._need_update_local_roles,它将在创建项目时需要时更新 update_local_roles,这需要在某些情况下,例如当使用 internalNotes 创建项目时,因为此字段依赖于需要设置为可写性的 local_role/permission。[gbastien]
为 IPloneSiteRoot 而不是 IFolderish 注册了 @get GET 端点。[gbastien]
增加了在响应中获取字段可选选项的功能。可以提供参数 include_choices_for=field_name,在这种情况下,结果中添加了键 field_name__choices,包含可选值的 token/title。 [gbastien]
重构了 @item extra_include=linked_items,使用目录查询来过滤结果,以便参数和功能与其他端点相似。移除了可能危险并构建目录查询的 utils.filter_data。正式化了便捷目录索引名称的替换(传递参数 type 对应索引 portal_type 或 state 对应 review_state)。 [gbastien]
当使用 @get 或 @search 中的 in_name_of 时,不再需要参数 config_id。添加了 bbb.py 以回滚从 ToolPloneMeeting 中的方法 get_filtered_plone_groups_for_user 和 getActiveConfigs,使其在使用 PloneMeeting 4.1.x 时可用。 [gbastien]
1.0rc17 (2022-07-01)
重做损坏的发布… [gbastien]
1.0rc16 (2022-07-01)
在项目上添加了 extra_include=linked_items。这将附加项目链接项,可以请求各种 modes:默认的 auto 将返回所有自动链接项,手动 将返回手动链接项,前驱 将返回第一个前驱,前驱 将返回所有前驱,后继 将返回直接 后继,而 every_successors 将返回后继链。 [gbastien]
添加了 utils.filter_data,允许过滤给定数据。 [gbastien]
将 BaseSerializeToJson._get_param 重命名为 BaseSerializeToJson.get_param 或它被视为私有方法不直接使用,但实际上必须使用 utils.get_param。 [gbastien]
1.0rc15 (2022-06-14)
移除了在版本 plonemeeting.restapi=1.0rc13 中引入的临时修复,以避免创建空项。这已在 plone.restapi=7.8.0 中修复。 [gbastien]
1.0rc14 (2022-05-10)
对于所有错误,使用 BadRequest 而不是 Exception,这将返回错误代码 400 而不是用于内部服务器错误的 500。 [gbastien]
1.0rc13 (2022-04-28)
在测试中启用环境变量 RESTAPI_DEBUG。 [gbastien]
防止创建空项。暂时完全覆盖了来自 plone.restapi 的 DeserializeFromJson.__call__,直到问题 https://github.com/plone/plone.restapi/issues/1386 被修复。 [gbastien]
1.0rc12 (2022-02-15)
修复了 base.serialize_annexes,确保在没有给定的 uids 时获取不到附件。传递 no uids 到 get_categorized_elements 表示 不要根据 uids 过滤。 [gbastien]
1.0rc11 (2022-02-14)
恢复了 Products.PloneMeeting 4.1.x/4.2.x 的向后兼容性。 [gbastien]
1.0rc10 (2022-02-03)
如果创建元素后返回完整的对象序列化,则仅在创建元素时显示 未知数据 警告。 [gbastien]
修复了带有附件的会议创建。 [gbastien]
使附件序列化器包含基本数据中的 file。 [gbastien]
修复了在创建 DX 内容时 clean_html=False,clean_html 总是应用。 [gbastien]
1.0rc9 (2022-01-27)
添加了升级步骤到 2000,将重新应用 rolemap 步骤,以确保旧安装正在将服务限制为 Member 角色。 [gbastien]
1.0rc8 (2022-01-21)
在添加元素(AT 或 DX)时添加了 HTML 清洁(默认启用)。 [gbastien]
在项目会议中添加了 extra_include=annexes。 [gbastien]
1.0rc7 (2022-01-14)
确保在 _available_extra_includes 中正确定义了每个 extra_include。现在如果没有定义在那里,它将被忽略。 [gbastien]
1.0rc6 (2022-01-07)
为 Meeting 和 MeetingItem 添加了 extra_include=pod_templates。 [gbastien]
修复了 utils.get_current_user_id 和 adopt_user 的使用。 [gbastien]
1.0rc5 (2022-01-03)
在返回附件附加值时忽略 last_updated。 [gbastien]
1.0rc4 (2021-11-26)
在 ToolPloneMeeting.get_orgs_for_user 中参数 the_objects 的默认值已更改(从 True 更改为 False)。 [gbastien]
修改了 utils.may_access_config_endpoints,使其仅当 cfg 不为 None 时检查 tool.isManager。[gbastien]
当词汇表中找不到值时,让 PMChoiceFieldSerializer 使用 MissingTerms 适配器。[gbastien]
1.0rc3(2021-11-08)
扩展了 @users plone.restapi 端点,默认返回单个用户的详细信息,或允许查询多个用户。
extra_include=groups 将添加用户所属的组织;
此外,传递 extra_include_groups_suffixes=creators 将添加用户是创作者的组织(可以使用任何后缀);
extra_include=app_groups 将添加用户的 Plone 组;
extra_include=configs 将返回用户可以访问的 MeetingConfigs;
extra_include=categories,将返回用户可以为每个 MeetingConfig 使用的类别;
此外,extra_include_categories_config=meeting-config-id 参数将根据给定的 MeetingConfig id 过滤结果;
extra_include=classifiers,将返回用户可以为每个 MeetingConfig 使用的分类器;
此外,extra_include_classifiers_config=meeting-config-id 参数将根据给定的 MeetingConfig ids 过滤结果。
[gbastien]
添加了 @annex POST 端点,以便能够在现有元素上添加附件。[gbastien]
修改了 @get GET 端点的默认行为,默认返回序列化数据的摘要版本,要获取完整的序列化,则必须提供参数 fullobjects。[gbastien]
序列化器现在可以完成一个 @extra_includes 键,该键列出了可用的 extra_include 值。[gbastien]
1.0rc2(2021-09-28)
使用 Products.PloneMeeting.utils.convert2xhtml 将 text/html 数据转换为正确的格式(图像转换为 base64 数据并符合 xhtml 规范)。[gbastien]
简化对 @item POST(添加项目)的外部服务调用。
处理参数 ignore_not_used_data:true,如果提供了可选字段,则会添加警告而不是抛出错误(在这种情况下,提供的可选字段值将被忽略);
处理参数 ignore_validation_for,如果字段不在数据中或为空,则跳过给定字段的验证。这使得可以添加没有所有数据的项,该项必须在 Web UI 中完成。
[gbastien]
确保 externalIdentifier 总是以字符串的形式存储,因为它可能在 @add 端点中以整数的形式传递,如果将其存储为整数,则无法在后续使用 @search 端点通过 portal_catalog 进行搜索。[gbastien]
修复了 PMLazyCatalogResultSerializer.__call__ 以避免在对应对象不再存在时(对于脑或调用序列化器时发生 KeyError)出现 UnboundLocalError 或结果中出现重复。[gbastien]
处理内容匿名化。为此,添加了 utils.handle_html,该函数将处理所有 html 数据(AT pr DX)并确保它符合我们的需求
作为 base64 数据的图像;
使用 appy.pod 预处理器以确保我们有有效的 XHTML;
如有必要,匿名化内容。
[gbastien]
1.0rc1(2021-08-17)
使摘要序列化器能够处理 extra_include 和 additional_values。为此,需要更改 plone.restapi 处理摘要序列化器的方式,因为默认情况下,对于脑接口只有一个摘要序列化器,但我们需要能够为不同的接口(项目、会议等)注册摘要适配器。[gbastien]
恢复了 Products.PloneMeeting 4.1.x/4.2.x 的向后兼容性。 [gbastien]
为列表字段定义了正确的序列化器,以便在每个情况下都有 token/value 表示(AT/DX 对于单值和多值选择)。[gbastien]
为 MeetingItem 添加了一些新的 extra_include:classifier、groups_in_charge 和 associated_groups。将名为 proposingGroup 的 extra_include 重命名为 proposing_group。[gbastien]
在附件序列化器中使用 additional_values 以获取分类元素信息,而不是使用另一个参数 include_categorized_infos。[gbastien]
1.0b2(2021-07-16)
由于将会议从AT移动到DX,现在已适配代码和测试。[gbastien]
在@config GET端点中管理extra_include=classifiers。[gbastien]
当在@search端点中提供type参数时,不再需要config_id参数。当type不是item/meeting时,我们将其作为portal_type添加到query中。config_id仅在type为item或meeting时需要。[gbastien]
现在可以在任何布尔属性(to_print、publishable、confidential、to_sign/signed)上对annexes endpoint进行过滤。[gbastien]
适配了总是返回所有变体(deliberation/public_deliberation/public_deliberation_decided)的extra_include=deliberation,现在extra_include的值是我们想要获取的变体名称。[gbastien]
在MeetingItem序列化器中考虑extra_include_fullobjects。为了处理这个问题,有必要实现一个Meeting的摘要序列化器。[gbastien]
添加了test_restapi_search_items_extra_include_deliberation_images测试,显示图像作为base64数据值接收。[gbastien]
1.0b1(2021-02-03)
覆盖了来自imio.restapi的默认PMBrainJSONSummarySerializer,该PMBrainJSONSummarySerializer已覆盖来自plone.restapi的默认序列化器,以包含默认启用的元数据enabled。还定义了对象(不是大脑)的PMJSONSummarySerializer以具有任何对象的摘要表示。这使得在使用@config?extra_include=associated_groups时,能够获取MeetingConfig及其关联组的摘要序列化器。[gbastien]
改变了我们覆盖的@search的行为:之前,它覆盖了默认的@search,并且需要一个config_id才能工作,现在config_id是可选的,当提供时,将简化对项目或会议的搜索,但如果未提供,则端点将具有默认的@search行为。然而,如果提供了参数type,那么也必须提供config_id。[gbastien]
1.0a6(2021-01-06)
Products.PloneMeeting.utils.fplog已从imio.helpers.security.fplog移动,并相应地适配了代码。[gbastien]
1.0a5(2020-12-07)
已将extra_include_proposing_groups、extra_include_groups_in_charge和extra_include_associated_groups参数添加到@config GET端点。[gbastien]
默认情况下,将端点的访问权限限制为Member角色,默认情况下由plone.restapi赋予Anonymous角色。[gbastien]
1.0a4(2020-10-14)
完成测试,以显示在项目创建时MeetingItem.adviceIndex未正确初始化。[gbastien]
已添加到IMeetingItem序列化器的extra_include_meeting参数。[gbastien]
完成了IMeeting序列化器的_additional_values,包括formatted_date、formatted_date_short和formatted_date_long。[gbastien]
1.0a3(2020-09-10)
修复了test_restapi_config_extra_include_categories测试,因为以前的AT MeetingCategory现在是DX meetingcategory,它使用字段enabled而不是工作流review_state active。[gbastien]
添加了test_restapi_add_item_wf_transitions测试,该测试与imio.restapi<1.0a11不兼容。[gbastien]
在添加新项目时,在workflow_history中插入事件create_element_using_ws_rest,在created事件之后。[gbastien]
1.0a2(2020-06-24)
添加了测试test_restapi_annex_type_only_for_meeting_managers,确保受限于MeetingManagers的content_category(使用content_category.only_for_meeting_managers)的附件以相同的方式渲染。[gbastien]
尝试构建一个更简单的API
将@search_items转换为@search,将@search_meetings转换为@search?type=meeting;
将参数getConfigId重命名为config_id;
添加了in_name_of参数,使得如果原始用户是(Meeting)Manager,则可以使用端点作为其他用户。
[gbastien]
添加了 @item POST 端点,以便可以创建带附件或不带附件的项目
需要定义新的 AT 字段 deserializer,以便在设置字段值之前应用 WF
管理可选字段(在未启用时无法使用);
将附件管理为项目的 __children__;
通过仅在第一级定义 config_id 来简化使用(因此不适用于附件);
通过在创建数据中使用组织 ids 而不是 UIDs 来简化使用;
管理 in_name_of 参数。
[gbastien]
从 imio.restapi 覆盖 @infos 端点,以添加我们自己的信息。[gbastien]
当 type=meeting 时,向 @search 添加了参数 meetings_accepting_items=True,这将仅查询接受项目的会议,但查询可能还会与其他任意索引一起完成。[gbastien]
添加了返回给定 config_id 的 MeetingConfig 信息的 @config 端点。可用参数包括 include_categories(返回启用/禁用类别)、include_pod_templates(返回启用 POD 模板)和 include_searches(返回启用的 DashboardCollections)。[gbastien]
添加了接收 UID 并返回找到的对象的 @get 端点。便利端点 @item 执行相同的操作,但只需检查返回的元素是否是 MeetingItem。[gbastien]
向 @search 添加了参数 base_search_uid=collection_uid,这使得可以使用在 DashboardCollection 上定义的 query。[gbastien]
1.0a1 (2020-01-10)
初始版本。[gbastien]
项目详情
plonemeeting.restapi-2.7.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e72122e4f865994936579980c753c432d1482e2a9310a0ed3526c1fcd8bd98e |
|
MD5 | 8ecd1c71c21f869103ac908dd5ff1b9e |
|
BLAKE2b-256 | b54fa51c19923493203b4e5366b897365edf14679d52b26a078e0e7ab79f8f00 |