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
|
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
|
@as_tuple
|
||||||
def extract_attachments(obj) -> list:
|
def extract_attachments(obj) -> list:
|
||||||
for attach in obj.attachments.all():
|
for attach in obj.attachments.all():
|
||||||
|
@ -285,8 +297,6 @@ def epic_freezer(epic) -> dict:
|
||||||
"ref": epic.ref,
|
"ref": epic.ref,
|
||||||
"owner": epic.owner_id,
|
"owner": epic.owner_id,
|
||||||
"status": epic.status.id if epic.status else None,
|
"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,
|
"epics_order": epic.epics_order,
|
||||||
"subject": epic.subject,
|
"subject": epic.subject,
|
||||||
"description": epic.description,
|
"description": epic.description,
|
||||||
|
@ -300,6 +310,7 @@ def epic_freezer(epic) -> dict:
|
||||||
"blocked_note": epic.blocked_note,
|
"blocked_note": epic.blocked_note,
|
||||||
"blocked_note_html": mdrender(epic.project, epic.blocked_note),
|
"blocked_note_html": mdrender(epic.project, epic.blocked_note),
|
||||||
"custom_attributes": extract_epic_custom_attributes(epic),
|
"custom_attributes": extract_epic_custom_attributes(epic),
|
||||||
|
"user_stories": extract_user_stories(epic),
|
||||||
}
|
}
|
||||||
|
|
||||||
return snapshot
|
return snapshot
|
||||||
|
|
|
@ -258,6 +258,24 @@ class HistoryEntry(models.Model):
|
||||||
if custom_attributes["new"] or custom_attributes["changed"] or custom_attributes["deleted"]:
|
if custom_attributes["new"] or custom_attributes["changed"] or custom_attributes["deleted"]:
|
||||||
value = custom_attributes
|
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:
|
elif key in self.values:
|
||||||
value = [resolve_value(key, x) for x in self.diff[key]]
|
value = [resolve_value(key, x) for x in self.diff[key]]
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue