Save related stories in history items for epics
parent
46006706c5
commit
6bdfe25503
|
@ -187,6 +187,18 @@ def _generic_extract(obj:object, fields:list, default=None) -> dict:
|
|||
return result
|
||||
|
||||
|
||||
@as_tuple
|
||||
def extract_user_stories(obj) -> list:
|
||||
for user_story in obj.user_stories.all():
|
||||
|
||||
yield {"id": user_story.id,
|
||||
"ref": user_story.ref,
|
||||
"subject": user_story.subject,
|
||||
"project": {
|
||||
"id": user_story.project.id,
|
||||
"name": user_story.project.name,
|
||||
"slug": user_story.project.slug}}
|
||||
|
||||
@as_tuple
|
||||
def extract_attachments(obj) -> list:
|
||||
for attach in obj.attachments.all():
|
||||
|
@ -285,8 +297,6 @@ def epic_freezer(epic) -> dict:
|
|||
"ref": epic.ref,
|
||||
"owner": epic.owner_id,
|
||||
"status": epic.status.id if epic.status else None,
|
||||
"is_closed": epic.is_closed,
|
||||
"finish_date": str(epic.finish_date),
|
||||
"epics_order": epic.epics_order,
|
||||
"subject": epic.subject,
|
||||
"description": epic.description,
|
||||
|
@ -300,6 +310,7 @@ def epic_freezer(epic) -> dict:
|
|||
"blocked_note": epic.blocked_note,
|
||||
"blocked_note_html": mdrender(epic.project, epic.blocked_note),
|
||||
"custom_attributes": extract_epic_custom_attributes(epic),
|
||||
"user_stories": extract_user_stories(epic),
|
||||
}
|
||||
|
||||
return snapshot
|
||||
|
|
|
@ -258,6 +258,24 @@ class HistoryEntry(models.Model):
|
|||
if custom_attributes["new"] or custom_attributes["changed"] or custom_attributes["deleted"]:
|
||||
value = custom_attributes
|
||||
|
||||
elif key == "user_stories":
|
||||
user_stories = {
|
||||
"new": [],
|
||||
"deleted": [],
|
||||
}
|
||||
|
||||
olduss = {x["id"]:x for x in self.diff["user_stories"][0]}
|
||||
newuss = {x["id"]:x for x in self.diff["user_stories"][1]}
|
||||
|
||||
for usid in set(tuple(olduss.keys()) + tuple(newuss.keys())):
|
||||
if usid in olduss and usid not in newuss:
|
||||
user_stories["deleted"].append(olduss[usid])
|
||||
elif usid not in olduss and usid in newuss:
|
||||
user_stories["new"].append(newuss[usid])
|
||||
|
||||
if user_stories["new"] or user_stories["changed"] or user_stories["deleted"]:
|
||||
value = user_stories
|
||||
|
||||
elif key in self.values:
|
||||
value = [resolve_value(key, x) for x in self.diff[key]]
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue