diff options
-rw-r--r-- | docs/api-objects.rst | 1 | ||||
-rw-r--r-- | docs/gl_objects/events.rst | 48 | ||||
-rw-r--r-- | docs/gl_objects/projects.py | 6 | ||||
-rw-r--r-- | docs/gl_objects/projects.rst | 30 | ||||
-rw-r--r-- | gitlab/__init__.py | 1 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 29 | ||||
-rw-r--r-- | tools/python_test_v4.py | 8 |
7 files changed, 82 insertions, 41 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst index 6879856..f2e72e2 100644 --- a/docs/api-objects.rst +++ b/docs/api-objects.rst @@ -15,6 +15,7 @@ API examples gl_objects/deploy_keys gl_objects/deployments gl_objects/environments + gl_objects/events gl_objects/features gl_objects/groups gl_objects/issues diff --git a/docs/gl_objects/events.rst b/docs/gl_objects/events.rst new file mode 100644 index 0000000..807dcad --- /dev/null +++ b/docs/gl_objects/events.rst @@ -0,0 +1,48 @@ +###### +Events +###### + +Reference +--------- + +* v4 API: + + + :class:`gitlab.v4.objects.Event` + + :class:`gitlab.v4.objects.EventManager` + + :attr:`gitlab.Gitlab.events` + + :class:`gitlab.v4.objects.ProjectEvent` + + :class:`gitlab.v4.objects.ProjectEventManager` + + :attr:`gitlab.v4.objects.Project.events` + + :class:`gitlab.v4.objects.UserEvent` + + :class:`gitlab.v4.objects.UserEventManager` + + :attr:`gitlab.v4.objects.User.events` + +* v3 API (projects events only): + + + :class:`gitlab.v3.objects.ProjectEvent` + + :class:`gitlab.v3.objects.ProjectEventManager` + + :attr:`gitlab.v3.objects.Project.events` + + :attr:`gitlab.Gitlab.project_events` + +* GitLab API: https://docs.gitlab.com/ce/api/events.html + +Examples +-------- + +You can list events for an entire Gitlab instance (admin), users and projects. +You can filter you events you want to retrieve using the ``action`` and +``target_type`` attributes. The possibole values for these attributes are +available on `the gitlab documentation +<https://docs.gitlab.com/ce/api/events.html>`_. + +List all the events (paginated):: + + events = gl.events.list() + +List the issue events on a project:: + + events = project.events.list(target_type='issue') + +List the user events:: + + events = project.events.list() diff --git a/docs/gl_objects/projects.py b/docs/gl_objects/projects.py index 425bbe2..a633ee8 100644 --- a/docs/gl_objects/projects.py +++ b/docs/gl_objects/projects.py @@ -69,12 +69,6 @@ project.archive() project.unarchive() # end archive -# events list -gl.project_events.list(project_id=1) -# or -project.events.list() -# end events list - # members list members = project.members.list() # end members list diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst index 0395950..0c556f4 100644 --- a/docs/gl_objects/projects.rst +++ b/docs/gl_objects/projects.rst @@ -484,36 +484,6 @@ Delete a note for a resource: :start-after: # notes delete :end-before: # end notes delete -Project events -============== - -Reference ---------- - -* v4 API: - - + :class:`gitlab.v4.objects.ProjectEvent` - + :class:`gitlab.v4.objects.ProjectEventManager` - + :attr:`gitlab.v4.objects.Project.events` - -* v3 API: - - + :class:`gitlab.v3.objects.ProjectEvent` - + :class:`gitlab.v3.objects.ProjectEventManager` - + :attr:`gitlab.v3.objects.Project.events` - + :attr:`gitlab.Gitlab.project_events` - -* GitLab API: https://docs.gitlab.com/ce/api/repository_files.html - -Examples --------- - -List the project events: - -.. literalinclude:: projects.py - :start-after: # events list - :end-before: # end events list - Project members =============== diff --git a/gitlab/__init__.py b/gitlab/__init__.py index 846380f..8a31a48 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -125,6 +125,7 @@ class Gitlab(object): self.teams = objects.TeamManager(self) else: self.dockerfiles = objects.DockerfileManager(self) + self.events = objects.EventManager(self) self.features = objects.FeatureManager(self) self.pagesdomains = objects.PagesDomainManager(self) self.user_activities = objects.UserActivitiesManager(self) diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index a5b603c..f8b0dce 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -112,6 +112,17 @@ class SidekiqManager(RESTManager): return self.gitlab.http_get('/sidekiq/compound_metrics', **kwargs) +class Event(RESTObject): + _id_attr = None + _short_print_attr = 'target_title' + + +class EventManager(ListMixin, RESTManager): + _path = '/events' + _obj_cls = Event + _list_filters = ('action', 'target_type', 'before', 'after', 'sort') + + class UserActivities(RESTObject): _id_attr = 'username' @@ -143,6 +154,16 @@ class UserEmailManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): _create_attrs = (('email', ), tuple()) +class UserEvent(Event): + pass + + +class UserEventManager(EventManager): + _path = '/users/%(user_id)s/events' + _obj_cls = UserEvent + _from_parent_attrs = {'user_id': 'id'} + + class UserGPGKey(ObjectDeleteMixin, RESTObject): pass @@ -224,6 +245,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject): _managers = ( ('customattributes', 'UserCustomAttributeManager'), ('emails', 'UserEmailManager'), + ('events', 'UserEventManager'), ('gpgkeys', 'UserGPGKeyManager'), ('impersonationtokens', 'UserImpersonationTokenManager'), ('keys', 'UserKeyManager'), @@ -1161,12 +1183,11 @@ class ProjectKeyManager(NoUpdateMixin, RESTManager): self.gitlab.http_post(path, **kwargs) -class ProjectEvent(RESTObject): - _id_attr = None - _short_print_attr = 'target_title' +class ProjectEvent(Event): + pass -class ProjectEventManager(ListMixin, RESTManager): +class ProjectEventManager(EventManager): _path = '/projects/%(project_id)s/events' _obj_cls = ProjectEvent _from_parent_attrs = {'project_id': 'id'} diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py index e5d390a..695722f 100644 --- a/tools/python_test_v4.py +++ b/tools/python_test_v4.py @@ -95,6 +95,9 @@ new_user.unblock() # user projects list assert(len(new_user.projects.list()) == 0) +# events list +new_user.events.list() + foobar_user = gl.users.create( {'email': 'foobar@example.com', 'username': 'foobar', 'name': 'Foo Bar', 'password': 'foobar_password'}) @@ -408,7 +411,7 @@ assert(env.external_url == 'http://new.env/whatever') env.delete() assert(len(admin_project.environments.list()) == 0) -# events +# project events admin_project.events.list() # forks @@ -640,3 +643,6 @@ snippet.delete() # user activities gl.user_activities.list() + +# events +gl.events.list() |