Skip to content

Commit

Permalink
Add support for board creation/deletion (EE)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gauvain Pocentek committed Jun 10, 2018
1 parent d6a61af commit f4c4e52
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 9 deletions.
19 changes: 14 additions & 5 deletions docs/gl_objects/boards.rst
Expand Up @@ -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
===========
Expand Down
10 changes: 6 additions & 4 deletions gitlab/v4/objects.py
Expand Up @@ -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):
Expand Down Expand Up @@ -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):
Expand Down
17 changes: 17 additions & 0 deletions tools/ee-test.py
Expand Up @@ -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()

0 comments on commit f4c4e52

Please sign in to comment.