Add excluded keys to make diff

remotes/origin/3.4.0rc
Álex Hermida 2018-04-09 21:38:52 +02:00
parent 94fcbbc55e
commit de7ab4c474
3 changed files with 19 additions and 5 deletions

View File

@ -17,12 +17,12 @@
# 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.
"""
diff = {}
# Check all keys in first dict
for key in first:
if key not in second:

View File

@ -347,6 +347,7 @@ def userstory_freezer(us) -> dict:
"subject": us.subject,
"description": 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()],
"milestone": us.milestone_id,
"client_requirement": us.client_requirement,

View File

@ -85,6 +85,10 @@ _not_important_fields = {
"tasks.task": frozenset(["us_order", "taskboard_order"]),
}
_deprecated_fields = {
"userstories.userstory": frozenset(["assigned_to"]),
}
log = logging.getLogger("taiga.history")
@ -216,7 +220,15 @@ def is_hidden_snapshot(obj: FrozenDiff) -> bool:
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.
"""
@ -229,7 +241,7 @@ def make_diff(oldobj: FrozenObj, newobj: FrozenObj) -> FrozenDiff:
first = oldobj.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)
@ -338,7 +350,8 @@ def take_snapshot(obj: object, *, comment: str="", user=None, delete: bool=False
else:
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
# not create empty history entry