diff --git a/docs/gl_objects/boards.rst b/docs/gl_objects/boards.rst index 009937186..3bdbb51c2 100644 --- a/docs/gl_objects/boards.rst +++ b/docs/gl_objects/boards.rst @@ -32,16 +32,25 @@ Examples Get the list of existing boards for a project or a group:: # item is a Project or a Group - boards = item.boards.list() + boards = project_or_group.boards.list() Get a single board for a project or a group:: - board = group.boards.get(board_id) + board = project_or_group.boards.get(board_id) -.. note:: +Create a board:: - Boards cannot be created using the API, they need to be created using the - UI. + board = project_or_group.boards.create({'name': 'new-board'}) + +.. note:: Board creation is not supported in the GitLab CE edition. + +Delete a board:: + + board.delete() + # or + project_or_group.boards.delete(board_id) + +.. note:: Board deletion is not supported in the GitLab CE edition. Board lists =========== diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 486c0f3ed..a03430890 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -580,14 +580,15 @@ class GroupBoardListManager(CRUDMixin, RESTManager): _update_attrs = (('position', ), tuple()) -class GroupBoard(RESTObject): +class GroupBoard(ObjectDeleteMixin, RESTObject): _managers = (('lists', 'GroupBoardListManager'), ) -class GroupBoardManager(RetrieveMixin, RESTManager): +class GroupBoardManager(NoUpdateMixin, RESTManager): _path = '/groups/%(group_id)s/boards' _obj_cls = GroupBoard _from_parent_attrs = {'group_id': 'id'} + _create_attrs = (('name', ), tuple()) class GroupCustomAttribute(ObjectDeleteMixin, RESTObject): @@ -1004,14 +1005,15 @@ class ProjectBoardListManager(CRUDMixin, RESTManager): _update_attrs = (('position', ), tuple()) -class ProjectBoard(RESTObject): +class ProjectBoard(ObjectDeleteMixin, RESTObject): _managers = (('lists', 'ProjectBoardListManager'), ) -class ProjectBoardManager(RetrieveMixin, RESTManager): +class ProjectBoardManager(NoUpdateMixin, RESTManager): _path = '/projects/%(project_id)s/boards' _obj_cls = ProjectBoard _from_parent_attrs = {'project_id': 'id'} + _create_attrs = (('name', ), tuple()) class ProjectBranch(ObjectDeleteMixin, RESTObject): diff --git a/tools/ee-test.py b/tools/ee-test.py index 512d983dc..a6d7fb786 100755 --- a/tools/ee-test.py +++ b/tools/ee-test.py @@ -66,3 +66,20 @@ def end_log(): group1.ldap_sync() group1.delete_ldap_group_link(LDAP_CN) end_log() + +start_log('Boards') +# bit of cleanup just in case +for board in project1.boards.list(): + if board.name == 'testboard': + board.delete() +board = project1.boards.create({'name': 'testboard'}) +board = project1.boards.get(board.id) +project1.boards.delete(board.id) + +for board in group1.boards.list(): + if board.name == 'testboard': + board.delete() +board = group1.boards.create({'name': 'testboard'}) +board = group1.boards.get(board.id) +group1.boards.delete(board.id) +end_log()