@@ -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