Commit 15769262dac58be90be5b39c7f052d5d0874491c
Merge pull request #56 from Leits/upd_operations
Fix create_data_dict for work with list
Showing
1 changed file
with
15 additions
and
5 deletions
1 | # -*- coding: utf-8 - | 1 | # -*- coding: utf-8 - |
2 | from datetime import timedelta | 2 | from datetime import timedelta |
3 | from dateutil.parser import parse | 3 | from dateutil.parser import parse |
4 | -from dpath.util import set as xpathset | 4 | +from dpath.util import new as xpathnew |
5 | from iso8601 import parse_date | 5 | from iso8601 import parse_date |
6 | from json import load | 6 | from json import load |
7 | from jsonpath_rw import parse as parse_path | 7 | from jsonpath_rw import parse as parse_path |
@@ -26,6 +26,7 @@ from .initial_data import ( | @@ -26,6 +26,7 @@ from .initial_data import ( | ||
26 | from .local_time import get_now, TZ | 26 | from .local_time import get_now, TZ |
27 | import os | 27 | import os |
28 | from barbecue import chef | 28 | from barbecue import chef |
29 | +import re | ||
29 | 30 | ||
30 | 31 | ||
31 | def get_current_tzdate(): | 32 | def get_current_tzdate(): |
@@ -150,7 +151,7 @@ def set_access_key(tender, access_token): | @@ -150,7 +151,7 @@ def set_access_key(tender, access_token): | ||
150 | 151 | ||
151 | 152 | ||
152 | def set_to_object(obj, attribute, value): | 153 | def set_to_object(obj, attribute, value): |
153 | - xpathset(obj, attribute.replace('.', '/'), value) | 154 | + xpathnew(obj, attribute, value, separator='.') |
154 | return obj | 155 | return obj |
155 | 156 | ||
156 | 157 | ||
@@ -182,10 +183,19 @@ def merge_dicts(left, right): | @@ -182,10 +183,19 @@ def merge_dicts(left, right): | ||
182 | return new | 183 | return new |
183 | 184 | ||
184 | 185 | ||
185 | -def create_data_dict(path_to_key=None, value=None): | 186 | +def create_data_dict(path_to_value=None, value=None): |
186 | data_dict = munchify({'data': {}}) | 187 | data_dict = munchify({'data': {}}) |
187 | - if isinstance(path_to_key, basestring) and isinstance(value, basestring): | ||
188 | - data_dict = set_to_object(data_dict, path_to_key, value) | 188 | + if isinstance(path_to_value, basestring) and value: |
189 | + list_items = re.search('\d+', path_to_value) | ||
190 | + if list_items: | ||
191 | + list_items = list_items.group(0) | ||
192 | + path_to_value = path_to_value.split('[' + list_items + ']') | ||
193 | + path_to_value.insert(1, '.' + list_items) | ||
194 | + set_to_object(data_dict, path_to_value[0], []) | ||
195 | + set_to_object(data_dict, ''.join(path_to_value[:2]), {}) | ||
196 | + set_to_object(data_dict, ''.join(path_to_value), value) | ||
197 | + else: | ||
198 | + data_dict = set_to_object(data_dict, path_to_value, value) | ||
189 | return data_dict | 199 | return data_dict |
190 | 200 | ||
191 | 201 |
Please
register
or
login
to post a comment