Skip to content

Commit db5004d

Browse files
committed
introduce get operation processing methods
1 parent 8a7b116 commit db5004d

1 file changed

Lines changed: 32 additions & 5 deletions

File tree

redminelib/managers/base.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,22 @@ def new_manager(self, resource_name, **params):
5454
manager.params = params
5555
return manager
5656

57+
def _construct_get_url(self, path):
58+
"""
59+
Constructs URL for get method.
60+
61+
:param string path: absolute URL path.
62+
"""
63+
return self.redmine.url + path
64+
65+
def _prepare_get_request(self, request):
66+
"""
67+
Makes the necessary preparations for get request data.
68+
69+
:param dict request: Request data.
70+
"""
71+
return self.resource_class.bulk_decode(request, self)
72+
5773
def get(self, resource_id, **params):
5874
"""
5975
Returns a Resource object from Redmine by resource id.
@@ -72,20 +88,31 @@ def get(self, resource_id, **params):
7288
return resource
7389

7490
try:
75-
self.url = self.redmine.url + self.resource_class.query_one.format(resource_id, **params)
76-
except KeyError as exception:
77-
raise exceptions.ValidationError('{0} argument is required'.format(exception))
91+
self.url = self._construct_get_url(self.resource_class.query_one.format(resource_id, **params))
92+
except KeyError as e:
93+
raise exceptions.ValidationError('{0} argument is required'.format(e))
7894

79-
self.params = self.resource_class.bulk_decode(params, self)
95+
self.params = self._prepare_get_request(params)
8096
self.container = self.resource_class.container_one
8197

8298
try:
83-
return self.to_resource(self.redmine.engine.request('get', self.url, params=self.params)[self.container])
99+
response = self.redmine.engine.request('get', self.url, params=self.params)
84100
except exceptions.ResourceNotFoundError as e:
85101
if self.resource_class.requirements:
86102
raise exceptions.ResourceRequirementsError(self.resource_class.requirements)
87103
raise e
88104

105+
return self._process_get_response(self.params, response)
106+
107+
def _process_get_response(self, request, response):
108+
"""
109+
Processes get response and constructs resource object.
110+
111+
:param dict request: Original request data.
112+
:param any response: Response received from Redmine for this request data.
113+
"""
114+
return self.to_resource(response[self.container])
115+
89116
def all(self, **params):
90117
"""
91118
Returns a ResourceSet object with all Resource objects.

0 commit comments

Comments
 (0)