diff --git a/security_monkey/common/PolicyDiff.py b/security_monkey/common/PolicyDiff.py
index 0a4a7fd73..f12a50e28 100644
--- a/security_monkey/common/PolicyDiff.py
+++ b/security_monkey/common/PolicyDiff.py
@@ -155,7 +155,7 @@ def diff_dict(dicta, dictb, indentation):
for keya in dicta.keys():
if not keya in dictb:
brackets = get_brackets(dicta[keya])
- if type(dicta[keya]) in [str, unicode, int, float, bool, None]:
+ if type(dicta[keya]) in [str, unicode, int, float, bool, type(None)]:
retstr += added("{4}\"{0}\": {2}{1}{3},".format(keya, print_item(dicta[keya], 'added', indentation + 1), brackets['open'], brackets['close'], i(indentation)))
if type(dicta[keya]) in [list, dict]:
retstr += added("{4}\"{0}\": {2}
\n{1}{4}{3},".format(keya, print_item(dicta[keya], 'added', indentation + 1), brackets['open'], brackets['close'], i(indentation)))
@@ -170,7 +170,7 @@ def diff_dict(dicta, dictb, indentation):
for keyb in dictb.keys():
if not keyb in dicta:
brackets = get_brackets(dictb[keyb])
- if type(dictb[keyb]) in [str, unicode, int, float, bool, None]:
+ if type(dictb[keyb]) in [str, unicode, int, float, bool, type(None)]:
retstr += deleted("{4}\"{0}\": {2}{1}{3},".format(keyb, print_item(dictb[keyb], 'deleted', indentation + 1), brackets['open'], brackets['close'], i(indentation)))
if type(dictb[keyb]) in [list, dict]:
retstr += deleted("{4}\"{0}\": {2}
\n{1}{4}{3},".format(keyb, print_item(dictb[keyb], 'deleted', indentation + 1), brackets['open'], brackets['close'], i(indentation)))
@@ -380,6 +380,8 @@ def __init__(self, new_policy, old_policy):
except:
print "Could not read policy in as json. Type: {} Policy: {}".format(type(new_policy), new_policy)
self._new_policy = new_policy
+ else:
+ self._new_policy = json.loads(json.dumps(new_policy))
if isinstance(old_policy, basestring):
try:
@@ -387,16 +389,8 @@ def __init__(self, new_policy, old_policy):
except:
print "Could not read policy in as json. Type: {} Policy: {}".format(type(old_policy), old_policy)
self._old_policy = old_policy
-
- if type(new_policy) is list or isinstance(new_policy, dict):
- self._new_policy = new_policy
- if type(self._new_policy) is collections.defaultdict:
- self._new_policy = dict(self._new_policy)
-
- if type(old_policy) is list or isinstance(old_policy, dict):
- self._old_policy = old_policy
- if type(self._old_policy) is collections.defaultdict:
- self._old_policy = dict(self._old_policy)
+ else:
+ self._old_policy = json.loads(json.dumps(old_policy))
if self._old_policy is None or self._new_policy is None:
raise ValueError("PolicyDiff could not process old policy or new policy or both.")
@@ -422,7 +416,7 @@ def produceDiffHTML(self):
brackets = get_brackets(self._new_policy)
- if type(self._new_policy) is dict or type(self._new_policy) is collections.OrderedDict:
+ if type(self._new_policy) is dict:
inner_html = diff_dict(self._new_policy, self._old_policy, 1)
elif type(self._new_policy) is list:
inner_html = diff_list(self._new_policy, self._old_policy, 1)