@@ -39,7 +39,8 @@ def spaces(self, extra_params=None):
3939 """
4040 return self ._get_json (Space , extra_params = extra_params )
4141
42- def _get_json (self , model , space = None , rel_path = None , extra_params = None , get_all = None ):
42+ def _get_json (self , model , space = None , rel_path = None , extra_params = None ,
43+ get_all = None , get_single = False ):
4344 """
4445 Base level method for fetching data from the API
4546 """
@@ -80,8 +81,16 @@ def _get_json(self, model, space=None, rel_path=None, extra_params=None, get_all
8081 self .cache [url ] = response
8182
8283 if response .status_code == 200 : # OK
83- results = []
8484 json_response = response .json ()
85+
86+ if get_single :
87+ instance = model (data = json_response )
88+ instance .api = self
89+ if space :
90+ instance .space = space
91+ return instance
92+
93+ results = []
8594 for obj in json_response :
8695 instance = model (data = obj )
8796 instance .api = self
@@ -101,7 +110,7 @@ def _get_json(self, model, space=None, rel_path=None, extra_params=None, get_all
101110 results = results + self ._get_json (model , space , rel_path , extra_params , get_all = get_all )
102111 return results
103112 elif response .status_code == 204 : # No Content
104- return []
113+ return None if get_single else []
105114 else : # Most likely a 404 Not Found
106115 raise Exception (
107116 'Code {0} returned from `{1}`. Response text: "{2}".' .format (
@@ -320,12 +329,21 @@ def tickets(self, extra_params=None):
320329 get_all = True , # Retrieve all tickets in the space
321330 )
322331
332+ def ticket (self , n ):
333+ return self .api ._get_json (
334+ Ticket ,
335+ space = self ,
336+ rel_path = self ._build_rel_path ('tickets/{}' .format (n )),
337+ extra_params = {},
338+ get_single = True ,
339+ )
340+
323341 @assembla_filter
324342 def milestones (self , extra_params = None ):
325343 """
326344 All Milestones in this Space
327345 """
328-
346+
329347 # Default params
330348 params = {
331349 'per_page' : settings .MAX_PER_PAGE ,
0 commit comments