diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-01 12:13:46 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-01 12:13:46 +0100 |
commit | 5082879dcfbe322bb16e4c2387c25ec4f4407cb1 (patch) | |
tree | bcb261cefc6b4c5708a07989e16bfe4275027da3 | |
parent | 4744200d982f7fc556d1202330b218850bd232d6 (diff) | |
download | gitlab-5082879dcfbe322bb16e4c2387c25ec4f4407cb1.tar.gz |
Add support for wiki pages
-rw-r--r-- | docs/api-objects.rst | 1 | ||||
-rw-r--r-- | docs/gl_objects/wikis.py | 21 | ||||
-rw-r--r-- | docs/gl_objects/wikis.rst | 46 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 15 | ||||
-rw-r--r-- | tools/python_test_v4.py | 12 |
5 files changed, 95 insertions, 0 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst index 4b40ce1..e549924 100644 --- a/docs/api-objects.rst +++ b/docs/api-objects.rst @@ -30,3 +30,4 @@ API examples gl_objects/todos gl_objects/users gl_objects/sidekiq + gl_objects/wikis diff --git a/docs/gl_objects/wikis.py b/docs/gl_objects/wikis.py new file mode 100644 index 0000000..0c92fe6 --- /dev/null +++ b/docs/gl_objects/wikis.py @@ -0,0 +1,21 @@ +# list +pages = project.wikis.list() +# end list + +# get +page = project.wikis.get(page_slug) +# end get + +# create +page = project.wikis.create({'title': 'Wiki Page 1', + 'content': open(a_file).read()}) +# end create + +# update +page.content = 'My new content' +page.save() +# end update + +# delete +page.delete() +# end delete diff --git a/docs/gl_objects/wikis.rst b/docs/gl_objects/wikis.rst new file mode 100644 index 0000000..0934654 --- /dev/null +++ b/docs/gl_objects/wikis.rst @@ -0,0 +1,46 @@ +########## +Wiki pages +########## + + +References +========== + +* v4 API: + + + :class:`gitlab.v4.objects.ProjectWiki` + + :class:`gitlab.v4.objects.ProjectWikiManager` + + :attr:`gitlab.v4.objects.Project.wikis` + +Examples +-------- + +Get the list of wiki pages for a project: + +.. literalinclude:: wikis.py + :start-after: # list + :end-before: # end list + +Get a single wiki page: + +.. literalinclude:: wikis.py + :start-after: # get + :end-before: # end get + +Create a wiki page: + +.. literalinclude:: wikis.py + :start-after: # create + :end-before: # end create + +Update a wiki page: + +.. literalinclude:: wikis.py + :start-after: # update + :end-before: # end update + +Delete a wiki page: + +.. literalinclude:: wikis.py + :start-after: # delete + :end-before: # end delete diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 992259d..a57adff 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1947,6 +1947,20 @@ class ProjectRunnerManager(NoUpdateMixin, RESTManager): _create_attrs = (('runner_id', ), tuple()) +class ProjectWiki(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = 'slug' + _short_print_attr = 'slug' + + +class ProjectWikiManager(CRUDMixin, RESTManager): + _path = '/projects/%(project_id)s/wikis' + _obj_cls = ProjectWiki + _from_parent_attrs = {'project_id': 'id'} + _create_attrs = (('title', 'content'), ('format', )) + _update_attrs = (tuple(), ('title', 'content', 'format')) + _list_filters = ('with_content', ) + + class Project(SaveMixin, ObjectDeleteMixin, RESTObject): _short_print_attr = 'path' _managers = ( @@ -1978,6 +1992,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject): ('users', 'ProjectUserManager'), ('triggers', 'ProjectTriggerManager'), ('variables', 'ProjectVariableManager'), + ('wikis', 'ProjectWikiManager'), ) @cli.register_custom_action('Project', tuple(), ('path', 'ref')) diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py index 8a8be68..0b1793a 100644 --- a/tools/python_test_v4.py +++ b/tools/python_test_v4.py @@ -496,6 +496,18 @@ assert(admin_project.star_count == 0) #lists = board.lists.list() #assert(len(lists) == begin_size - 1) +# project wiki +wiki_content = 'Wiki page content' +wp = admin_project.wikis.create({'title': 'wikipage', 'content': wiki_content}) +assert(len(admin_project.wikis.list()) == 1) +wp = admin_project.wikis.get(wp.slug) +assert(wp.content == wiki_content) +# update and delete seem broken +# wp.content = 'new content' +# wp.save() +# wp.delete() +# assert(len(admin_project.wikis.list()) == 0) + # namespaces ns = gl.namespaces.list(all=True) assert(len(ns) != 0) |