将组和角色更新到python-redmine中的项目



我正在努力找出如何制作简单的Python脚本,将我的一个Redmine项目更改为公共并添加指定的角色。我设法转变为公众,但角色和团体-不是那么多……

如果有人能帮我就太好了。我已经阅读了python-redmine: http://python-redmine.readthedocs.org/的文档,但我没有看到任何与我的问题相关的内容。

Python 2.7.3 @ Debian 7

这是我的例子:

from redmine import Redmine
redmine = Redmine('http://example.net', key='mykey')
project = redmine.project.get('project-ident-2014')
mygroup = redmine.group.get(4, include='memberships,users')
myrole = redmine.role.get(6)
redmine.project.update(33, is_public=True, group=mygroup, role=myrole)

下面的错误输出:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/redmine/managers.py", line 212, in update
return self.redmine.request('put', url, data=data)
File "/usr/local/lib/python2.7/dist-packages/redmine/__init__.py", line 67, in request
kwargs['data'] = json.dumps(data)
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 263, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 177, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <redmine.resources.Role #6 "Uczestnik dyżurów"> is not JSON serializable

成员资格可以通过http://www.redmine.org/projects/redmine/wiki/Rest_Memberships进行操作,但这可能不像我在IRC上告诉您的那样,通过本地Redmine对象进行操作那么容易。我不太了解python,但似乎python-redmine已经知道如何使用"会员"资源。不过,您可能必须分别处理添加组和使项目公开的步骤。

这里有一个ruby脚本,可以做你想做的(把它放在"script"目录下)

#!/usr/bin/env ruby
#load redmine app
require File.expand_path('../../config/environment', __FILE__)
#find your project by its identifier
project = Project.find("project-ident-2014")
#define the group you want to add to the project
group = Group.find(4)
#define the role you want to give to this group
role = Role.find(6)
#add a membership with those roles
Member.create!(:principal => group, :project => project, :roles => [role])
#make the project public
project.update_attribute(:is_public, true)

希望有帮助!

Python-redmine只是实现redmine基本API的包装器。所以对于你的需要,redmine没有api: http://www.redmine.org/projects/redmine/wiki/Rest_Projects

API from Projects只支持更新这些值(Redmine v2.5.2):

'name',
'description',
'homepage',
'is_public',
'identifier',
'custom_field_values',
'custom_fields',
'tracker_ids',
'issue_custom_field_ids'
'enabled_module_names'
'inherit_members'

为了解决你的问题,你可以写一个redmine插件,它会响应你的请求并做所有的事情。

最新更新