Skip to content

Commit 2dd22c6

Browse files
authored
Merge pull request #22 from tommycbird/patch-0.1
Added clean_dict and fixed bug causing missing items in API request
2 parents 71b7a41 + 6df334c commit 2dd22c6

File tree

2 files changed

+63
-11
lines changed

2 files changed

+63
-11
lines changed

route4me/advanced_constraint.py

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,44 @@
11
# -*- coding: utf-8 -*-
22

3+
from .utils import clean_dict
34

4-
class AdvancedConstraint(object):
55

6-
max_cargo_volume = None
7-
max_capacity = None
8-
members_count = 10
9-
available_time_windows = []
10-
tags = []
11-
route4me_members_id = []
12-
depot_address = []
13-
location_sequence_pattern = []
6+
class AdvancedConstraint(object):
147

158
def __init__(self):
16-
pass
9+
self.max_cargo_weight = None
10+
self.max_cargo_volume = None
11+
self.max_capacity = None
12+
self.members_count = 10
13+
self.vehicles_id = []
14+
self.available_time_windows = []
15+
self.tags = []
16+
self.route4me_members_id = []
17+
self.depot_address = {
18+
"alias": None,
19+
"address": None,
20+
"lat": None,
21+
"lng": None,
22+
}
23+
self.location_sequence_pattern = [
24+
"",
25+
{
26+
"alias": None,
27+
"address": None,
28+
"lat": None,
29+
"lng": None,
30+
}
31+
]
32+
self.location_sequence_pattern = [
33+
"",
34+
{
35+
"alias": None,
36+
"address": None,
37+
"lat": None,
38+
"lng": None,
39+
}
40+
]
41+
self.group = None
1742

1843
def to_dict(self):
19-
return self.__dict__
44+
return clean_dict(self.__dict__)

route4me/utils.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,30 @@ def json2obj(data):
2626
:return: object
2727
"""
2828
return json.loads(data, object_hook=_json_object_hook)
29+
30+
31+
def clean_dict(data):
32+
"""
33+
Clean dictionary values
34+
:param data: input dictionary
35+
:return: cleaned dictionary
36+
"""
37+
if isinstance(data, list):
38+
cleaned_list = []
39+
for i in data:
40+
cleaned_item = clean_dict(i)
41+
# Append non-None items
42+
if cleaned_item not in [None, ""]:
43+
cleaned_list.append(cleaned_item)
44+
return cleaned_list if cleaned_list else None
45+
elif isinstance(data, dict):
46+
cleaned_dict = {}
47+
for k, v in data.items():
48+
cleaned_v = clean_dict(v)
49+
# Append non-None key-value pairs
50+
if cleaned_v not in [None, ""]:
51+
cleaned_dict[k] = cleaned_v
52+
return cleaned_dict if cleaned_dict else None
53+
else:
54+
# For non-container type, return as is
55+
return data

0 commit comments

Comments
 (0)