跳转到主要内容

用于Products.PloneMeeting用例的扩展rest api服务

项目描述

https://coveralls.io/repos/IMIO/plonemeeting.restapi/badge.png?branch=master PyPI badge

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_categoryonly_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_statecreators 添加了特殊行为。

    • 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.getAdvicePortalTypesToolPloneMeeting.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)以返回所有 MeetingConfigsconfig_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_typestate 对应 review_state)。 [gbastien]

  • 当使用 @get@search 中的 in_name_of 时,不再需要参数 config_id。添加了 bbb.py 以回滚从 ToolPloneMeeting 中的方法 get_filtered_plone_groups_for_usergetActiveConfigs,使其在使用 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)

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=Falseclean_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)

  • MeetingMeetingItem 添加了 extra_include=pod_templates。 [gbastien]

  • 修复了 utils.get_current_user_idadopt_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.convert2xhtmltext/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_includeadditional_values。为此,需要更改 plone.restapi 处理摘要序列化器的方式,因为默认情况下,对于脑接口只有一个摘要序列化器,但我们需要能够为不同的接口(项目、会议等)注册摘要适配器。[gbastien]

  • 恢复了 Products.PloneMeeting 4.1.x/4.2.x 的向后兼容性。 [gbastien]

  • 为列表字段定义了正确的序列化器,以便在每个情况下都有 token/value 表示(AT/DX 对于单值和多值选择)。[gbastien]

  • MeetingItem 添加了一些新的 extra_includeclassifiergroups_in_chargeassociated_groups。将名为 proposingGroupextra_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仅在typeitemmeeting时需要。[gbastien]

  • 现在可以在任何布尔属性(to_printpublishableconfidentialto_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_groupsextra_include_groups_in_chargeextra_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_dateformatted_date_shortformatted_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,确保受限于MeetingManagerscontent_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_idMeetingConfig 信息的 @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 (83.1 kB 查看哈希值)

上传时间 源代码

由以下支持