Add changes to edit package audit log entry

This commit is contained in:
rubenwardy
2023-05-12 00:17:15 +01:00
parent 1fc4852e77
commit 19fa91d319
2 changed files with 69 additions and 3 deletions

View File

@@ -16,6 +16,9 @@
import re
import secrets
from typing import Dict
import typing
from .flask import *
from .models import *
@@ -68,3 +71,57 @@ def has_blocked_domains(text: str, username: str, location: str) -> bool:
return True
return False
def diff_dictionaries(one: Dict, two: Dict):
if len(set(one.keys()).difference(set(two.keys()))) != 0:
raise "Mismatching keys"
retval = []
for key, before in one.items():
after = two[key]
if before is dict:
diff = diff_dictionaries(before, after)
if len(diff) != 0:
retval.append({
"key": key,
"changes": diff,
})
elif before != after:
retval.append({
"key": key,
"before": before,
"after": after,
})
return retval
def describe_difference(diff: List, available_space: int) -> typing.Optional[str]:
if len(diff) == 0 or available_space <= 0:
return None
if len(diff) == 1 and "before" in diff[0] and "after" in diff[0]:
key = diff[0]["key"]
before = diff[0]["before"]
after = diff[0]["after"]
if isinstance(before, str) and isinstance(after, str):
return f"{key}: {before} -> {after}"
if isinstance(before, list) and isinstance(after, list):
removed = []
added = []
for x in before:
if x not in after:
removed.append(x)
for x in after:
if x not in before:
added.append(x)
parts = ["-" + str(x) for x in removed] + ["+" + str(x) for x in added]
return f"{key}: {', '.join(parts)}"
return ", ".join([x["key"] for x in diff])