summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2018-06-10 10:02:49 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2018-06-10 10:02:49 +0200
commitf4c4e52fd8962638ab79429a49fd4a699048bafc (patch)
treeb78c3c845665560f15257b3a3c9b2d729a297b2d
parentd6a61afc0c599a85d74947617cb13ab39b4929fc (diff)
downloadgitlab-f4c4e52fd8962638ab79429a49fd4a699048bafc.tar.gz
Add support for board creation/deletion (EE)
-rw-r--r--docs/gl_objects/boards.rst19
-rw-r--r--gitlab/v4/objects.py10
-rwxr-xr-xtools/ee-test.py17
3 files changed, 37 insertions, 9 deletions
diff --git a/docs/gl_objects/boards.rst b/docs/gl_objects/boards.rst
index 0099371..3bdbb51 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 486c0f3..a034308 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 512d983..a6d7fb7 100755
--- a/tools/ee-test.py
+++ b/tools/ee-test.py
@@ -66,3 +66,20 @@ group1.add_ldap_group_link(LDAP_CN, 30, LDAP_PROVIDER)
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()