@@ -37,17 +37,24 @@ def _prepare_domain(string):
37
37
user_id , code = o .path .split ('/' )[2 :4 ]
38
38
return "{0}://{1}/rest/{2}/{3}" .format (o .scheme , o .netloc , user_id , code )
39
39
40
- def _prepare_params (self , params ):
40
+ def _prepare_params (self , params , prev = '' ):
41
41
"""Transforms list of params to a valid bitrix array."""
42
-
43
- new_params = {}
44
- for index , value in params .items ():
45
- if type (value ) is dict :
46
- for i , v in value .items ():
47
- new_params ['%s[%s]' % (index , i )] = v
48
- else :
49
- new_params [index ] = value
50
- return new_params
42
+ if isinstance (params , dict ):
43
+ ret = ''
44
+ for key , value in params .items ():
45
+ if isinstance (value , dict ):
46
+ if prev :
47
+ key = "{0}[{1}]" .format (prev , key )
48
+ ret += self ._prepare_params (value , key )
49
+ elif (isinstance (value , list ) or isinstance (value , tuple )) and len (value ) > 0 :
50
+ for offset , val in enumerate (value ):
51
+ ret += "{0}[{1}][{2}]={3}&" .format (prev , key , offset , val )
52
+ else :
53
+ if prev :
54
+ ret += "{0}[{1}]={2}&" .format (prev , key , value )
55
+ else :
56
+ ret += "{0}={1}&" .format (key , value )
57
+ return ret
51
58
52
59
def callMethod (self , method , ** params ):
53
60
"""Calls a REST method with specified parameters.
@@ -75,9 +82,9 @@ def callMethod(self, method, **params):
75
82
76
83
if 'error' in r :
77
84
raise BitrixError (r )
78
- if 'page ' not in params :
79
- params ['page ' ] = 1
80
- if 'next' in r and r ['total' ] > ( r [ 'next' ] * params ['page' ]) :
81
- params ['page ' ] += 1
85
+ if 'start ' not in params :
86
+ params ['start ' ] = 0
87
+ if 'next' in r and r ['total' ] > params ['start' ] :
88
+ params ['start ' ] += 50
82
89
return r ['result' ] + self .callMethod (method , ** params )
83
90
return r ['result' ]
0 commit comments