summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RELEASE_NOTES.rst20
-rw-r--r--gitlab/mixins.py9
-rw-r--r--gitlab/v4/objects.py7
3 files changed, 32 insertions, 4 deletions
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 29f4ccd..59175d6 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -22,6 +22,26 @@ Changes from 1.3 to 1.4
* python-gitlab now handles the server rate limiting feature. It will pause for
the required time when reaching the limit (`documentation
<http://python-gitlab.readthedocs.io/en/master/api-usage.html#rate-limits>`__)
+* The ``GetFromListMixin.get()`` method is deprecated and will be removed in
+ the next python-gitlab version. The goal of this mixin/method is to provide a
+ way to get an object by looping through a list for GitLab objects that don't
+ support the GET method. The method `is broken
+ <https://github.com/python-gitlab/python-gitlab/issues/499>`__ and conflicts
+ with the GET method now supported by some GitLab objects.
+
+ You can implement your own method with something like:
+
+ .. code-block:: python
+
+ def get_from_list(self, id):
+ for obj in self.list(as_list=False):
+ if obj.get_id() == id:
+ return obj
+
+* The ``GroupMemberManager``, ``NamespaceManager`` and ``ProjectBoardManager``
+ managers now use the GET API from GitLab instead of the
+ ``GetFromListMixin.get()`` method.
+
Changes from 1.2 to 1.3
=======================
diff --git a/gitlab/mixins.py b/gitlab/mixins.py
index 88fea2d..d3e5727 100644
--- a/gitlab/mixins.py
+++ b/gitlab/mixins.py
@@ -15,6 +15,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import warnings
+
import gitlab
from gitlab import base
from gitlab import cli
@@ -130,9 +132,13 @@ class ListMixin(object):
class GetFromListMixin(ListMixin):
+ """This mixin is deprecated."""
+
def get(self, id, **kwargs):
"""Retrieve a single object.
+ This Method is deprecated.
+
Args:
id (int or str): ID of the object to retrieve
**kwargs: Extra options to send to the Gitlab server (e.g. sudo)
@@ -144,6 +150,9 @@ class GetFromListMixin(ListMixin):
GitlabAuthenticationError: If authentication is not correct
GitlabGetError: If the server cannot perform the request
"""
+ warnings.warn('The get() method for this object is deprecated '
+ 'and will be removed in a future version.',
+ DeprecationWarning)
try:
gen = self.list()
except exc.GitlabListError:
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 1cb8fe7..0e28f5c 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -547,8 +547,7 @@ class GroupMember(SaveMixin, ObjectDeleteMixin, RESTObject):
_short_print_attr = 'username'
-class GroupMemberManager(ListMixin, GetMixin, CreateMixin, UpdateMixin,
- DeleteMixin, RESTManager):
+class GroupMemberManager(CRUDMixin, RESTManager):
_path = '/groups/%(group_id)s/members'
_obj_cls = GroupMember
_from_parent_attrs = {'group_id': 'id'}
@@ -822,7 +821,7 @@ class Namespace(RESTObject):
pass
-class NamespaceManager(GetFromListMixin, RESTManager):
+class NamespaceManager(RetrieveMixin, RESTManager):
_path = '/namespaces'
_obj_cls = Namespace
_list_filters = ('search', )
@@ -854,7 +853,7 @@ class ProjectBoard(RESTObject):
_managers = (('lists', 'ProjectBoardListManager'), )
-class ProjectBoardManager(GetFromListMixin, RESTManager):
+class ProjectBoardManager(RetrieveMixin, RESTManager):
_path = '/projects/%(project_id)s/boards'
_obj_cls = ProjectBoard
_from_parent_attrs = {'project_id': 'id'}