Add excluded keys to make diff
parent
94fcbbc55e
commit
de7ab4c474
|
@ -17,12 +17,12 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
def make_diff(first:dict, second:dict, not_found_value=None, excluded_keys:tuple=()) -> dict:
|
def make_diff(first: dict, second: dict, not_found_value=None,
|
||||||
|
excluded_keys: tuple = ()) -> dict:
|
||||||
"""
|
"""
|
||||||
Compute a diff between two dicts.
|
Compute a diff between two dicts.
|
||||||
"""
|
"""
|
||||||
diff = {}
|
diff = {}
|
||||||
|
|
||||||
# Check all keys in first dict
|
# Check all keys in first dict
|
||||||
for key in first:
|
for key in first:
|
||||||
if key not in second:
|
if key not in second:
|
||||||
|
|
|
@ -347,6 +347,7 @@ def userstory_freezer(us) -> dict:
|
||||||
"subject": us.subject,
|
"subject": us.subject,
|
||||||
"description": us.description,
|
"description": us.description,
|
||||||
"description_html": mdrender(us.project, us.description),
|
"description_html": mdrender(us.project, us.description),
|
||||||
|
"assigned_to": us.assigned_to_id,
|
||||||
"assigned_users": [u.id for u in us.assigned_users.all()],
|
"assigned_users": [u.id for u in us.assigned_users.all()],
|
||||||
"milestone": us.milestone_id,
|
"milestone": us.milestone_id,
|
||||||
"client_requirement": us.client_requirement,
|
"client_requirement": us.client_requirement,
|
||||||
|
|
|
@ -85,6 +85,10 @@ _not_important_fields = {
|
||||||
"tasks.task": frozenset(["us_order", "taskboard_order"]),
|
"tasks.task": frozenset(["us_order", "taskboard_order"]),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_deprecated_fields = {
|
||||||
|
"userstories.userstory": frozenset(["assigned_to"]),
|
||||||
|
}
|
||||||
|
|
||||||
log = logging.getLogger("taiga.history")
|
log = logging.getLogger("taiga.history")
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,7 +220,15 @@ def is_hidden_snapshot(obj: FrozenDiff) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def make_diff(oldobj: FrozenObj, newobj: FrozenObj) -> FrozenDiff:
|
def get_excluded_fields(typename: str) -> tuple:
|
||||||
|
"""
|
||||||
|
Get excluded and deprected fields to avoid in the diff
|
||||||
|
"""
|
||||||
|
return _deprecated_fields.get(typename)
|
||||||
|
|
||||||
|
|
||||||
|
def make_diff(oldobj: FrozenObj, newobj: FrozenObj,
|
||||||
|
excluded_keys: tuple = ()) -> FrozenDiff:
|
||||||
"""
|
"""
|
||||||
Compute a diff between two frozen objects.
|
Compute a diff between two frozen objects.
|
||||||
"""
|
"""
|
||||||
|
@ -229,7 +241,7 @@ def make_diff(oldobj: FrozenObj, newobj: FrozenObj) -> FrozenDiff:
|
||||||
first = oldobj.snapshot
|
first = oldobj.snapshot
|
||||||
second = newobj.snapshot
|
second = newobj.snapshot
|
||||||
|
|
||||||
diff = make_diff_from_dicts(first, second)
|
diff = make_diff_from_dicts(first, second, None, excluded_keys)
|
||||||
|
|
||||||
return FrozenDiff(newobj.key, diff, newobj.snapshot)
|
return FrozenDiff(newobj.key, diff, newobj.snapshot)
|
||||||
|
|
||||||
|
@ -338,7 +350,8 @@ def take_snapshot(obj: object, *, comment: str="", user=None, delete: bool=False
|
||||||
else:
|
else:
|
||||||
raise RuntimeError("Unexpected condition")
|
raise RuntimeError("Unexpected condition")
|
||||||
|
|
||||||
fdiff = make_diff(old_fobj, new_fobj)
|
excluded_fields = get_excluded_fields(typename)
|
||||||
|
fdiff = make_diff(old_fobj, new_fobj, excluded_fields)
|
||||||
|
|
||||||
# If diff and comment are empty, do
|
# If diff and comment are empty, do
|
||||||
# not create empty history entry
|
# not create empty history entry
|
||||||
|
|
Loading…
Reference in New Issue