如何添加 Weblate REST 翻译文件上传所需的权限?
How to add required permission for Weblate REST translations file upload?
我正在编写 Weblate(版本 4.3.2)安装脚本,我已经使用 curl
从 Weblate REST API 成功获取现有本地化并传递 Authorization
[= Weblate 配置文件设置中的 15=] 值(登录,从右上角打开配置文件菜单,select Settings
- API Access
并复制粘贴“个人 API 密钥”) .
简而言之,GET /api/translations/(string:project)/(string:component)/(string:language)/file/
请求根据 https://docs.weblate.org/en/weblate-4.3.2/api.html#get--api-translations-(string-project)-(string-component)-(string-language)-file- 上的文档工作,我得到了预期的结果,性能非常好。
但是,https://docs.weblate.org/en/weblate-4.3.2/api.html#post--api-translations-(string-project)-(string-component)-(string-language)-file- 中记录的 POST /api/translations/(string:project)/(string:component)/(string:language)/file/
请求总是失败并导致以下响应:
HTTP/2 403
server: WSGIServer/0.2 CPython/3.8.10
content-type: application/json
vary: Accept,Cookie
allow: GET, POST, PUT, HEAD, OPTIONS
x-ratelimit-limit: 5000
x-ratelimit-remaining: 4878
x-ratelimit-reset: 107
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
referrer-policy: same-origin
与响应正文
{"detail":"You do not have permission to perform this action."}
我正在尝试使用 Weblate 安装的默认管理员帐户,因此我希望它具有所有必需的权限。如果令牌不正确,我会收到不同的错误,所以我很确定这与令牌错误无关。响应中的 HTTP/2 状态是由我们的反向代理引起的,我假设 Weblate 通常只提供 HTTP/1.1 流量。
我还在项目中授予了所有可能的权限 - 浏览所有项目 - (项目名称) - 管理(菜单) - 用户;即“管理”、“词汇表”、“语言”、“内存”、“屏幕截图”、“来源”、“翻译”、“VCS”。
此外,我还使用了可通过右上角的扳手图标访问的后端 Django 管理界面以及 selecting 工具和 Django 管理界面。我已经授予了我认为可能会影响权限的所有组。实际上,此用户帐户对“用户组”具有以下值:
Users,Viewers,All@Sources,All@Languages,All@Administration,All@Translate,All@Glossary,All@Memory,All@Screenshots,All@VCS
并且它已启用“活动”和“超级用户”状态。
你能推荐其他尝试的方法吗?我似乎是明确的权限问题,但我缺少什么?
很可能 method
或 conflicts
参数错误。 API 代码在这些情况下会引发权限错误,但它应该告诉用户哪里出了问题。
错误消息在下一个版本中应该更有用,我在 https://github.com/WeblateOrg/weblate/commit/4abf2193ed57cb7822db804376c6adde9cccb753
中对此进行了改进
我正在编写 Weblate(版本 4.3.2)安装脚本,我已经使用 curl
从 Weblate REST API 成功获取现有本地化并传递 Authorization
[= Weblate 配置文件设置中的 15=] 值(登录,从右上角打开配置文件菜单,select Settings
- API Access
并复制粘贴“个人 API 密钥”) .
简而言之,GET /api/translations/(string:project)/(string:component)/(string:language)/file/
请求根据 https://docs.weblate.org/en/weblate-4.3.2/api.html#get--api-translations-(string-project)-(string-component)-(string-language)-file- 上的文档工作,我得到了预期的结果,性能非常好。
但是,https://docs.weblate.org/en/weblate-4.3.2/api.html#post--api-translations-(string-project)-(string-component)-(string-language)-file- 中记录的 POST /api/translations/(string:project)/(string:component)/(string:language)/file/
请求总是失败并导致以下响应:
HTTP/2 403
server: WSGIServer/0.2 CPython/3.8.10
content-type: application/json
vary: Accept,Cookie
allow: GET, POST, PUT, HEAD, OPTIONS
x-ratelimit-limit: 5000
x-ratelimit-remaining: 4878
x-ratelimit-reset: 107
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
referrer-policy: same-origin
与响应正文
{"detail":"You do not have permission to perform this action."}
我正在尝试使用 Weblate 安装的默认管理员帐户,因此我希望它具有所有必需的权限。如果令牌不正确,我会收到不同的错误,所以我很确定这与令牌错误无关。响应中的 HTTP/2 状态是由我们的反向代理引起的,我假设 Weblate 通常只提供 HTTP/1.1 流量。
我还在项目中授予了所有可能的权限 - 浏览所有项目 - (项目名称) - 管理(菜单) - 用户;即“管理”、“词汇表”、“语言”、“内存”、“屏幕截图”、“来源”、“翻译”、“VCS”。
此外,我还使用了可通过右上角的扳手图标访问的后端 Django 管理界面以及 selecting 工具和 Django 管理界面。我已经授予了我认为可能会影响权限的所有组。实际上,此用户帐户对“用户组”具有以下值:
Users,Viewers,All@Sources,All@Languages,All@Administration,All@Translate,All@Glossary,All@Memory,All@Screenshots,All@VCS
并且它已启用“活动”和“超级用户”状态。
你能推荐其他尝试的方法吗?我似乎是明确的权限问题,但我缺少什么?
很可能 method
或 conflicts
参数错误。 API 代码在这些情况下会引发权限错误,但它应该告诉用户哪里出了问题。
错误消息在下一个版本中应该更有用,我在 https://github.com/WeblateOrg/weblate/commit/4abf2193ed57cb7822db804376c6adde9cccb753
中对此进行了改进