Fixed the task post save signal that update US and milestones status
parent
8ef6c0c539
commit
4c24b7505e
|
@ -112,7 +112,7 @@ def tasks_close_handler(sender, instance, **kwargs):
|
||||||
if exclude_task.pk:
|
if exclude_task.pk:
|
||||||
qs = qs.exclude(pk=exclude_task.pk)
|
qs = qs.exclude(pk=exclude_task.pk)
|
||||||
|
|
||||||
return all(task.status.is_closed for task in qs)
|
return not all(task.status.is_closed for task in qs)
|
||||||
|
|
||||||
def milestone_has_open_userstories(milestone):
|
def milestone_has_open_userstories(milestone):
|
||||||
qs = milestone.user_stories.exclude(is_closed=True)
|
qs = milestone.user_stories.exclude(is_closed=True)
|
||||||
|
@ -128,13 +128,47 @@ def tasks_close_handler(sender, instance, **kwargs):
|
||||||
instance.finished_date = None
|
instance.finished_date = None
|
||||||
if instance.user_story_id:
|
if instance.user_story_id:
|
||||||
instance.user_story.is_closed = False
|
instance.user_story.is_closed = False
|
||||||
instance.user_story.save(update_fields=["is_closed"])
|
instance.user_story.finish_date = None
|
||||||
|
instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
else:
|
else:
|
||||||
instance.finished_date = timezone.now()
|
instance.finished_date = timezone.now()
|
||||||
if instance.user_story_id and us_has_open_tasks(us=instance.user_story,
|
if instance.user_story_id and not us_has_open_tasks(us=instance.user_story,
|
||||||
exclude_task=instance):
|
exclude_task=instance):
|
||||||
instance.user_story.is_closed = True
|
instance.user_story.is_closed = True
|
||||||
instance.user_story.save(update_fields=["is_closed"])
|
instance.user_story.finish_date = timezone.now()
|
||||||
|
instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
|
elif not instance.id:
|
||||||
|
if not orig_instance.status.is_closed:
|
||||||
|
instance.finished_date = None
|
||||||
|
if instance.user_story_id:
|
||||||
|
instance.user_story.is_closed = False
|
||||||
|
instance.user_story.finish_date = None
|
||||||
|
instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
|
else:
|
||||||
|
instance.finished_date = timezone.now()
|
||||||
|
if instance.user_story_id and not us_has_open_tasks(us=instance.user_story,
|
||||||
|
exclude_task=instance):
|
||||||
|
instance.user_story.is_closed = True
|
||||||
|
instance.user_story.finish_date = timezone.now()
|
||||||
|
instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
|
|
||||||
|
# If the task change its US
|
||||||
|
if instance.user_story_id != orig_instance.user_story_id:
|
||||||
|
if (orig_instance.user_story_id and not orig_instance.status.is_closed
|
||||||
|
and not us_has_open_tasks(us=orig_instance.user_story, exclude_task=orig_instance)):
|
||||||
|
orig_instance.user_story.is_closed = True
|
||||||
|
orig_instance.user_story.finish_date = timezone.now()
|
||||||
|
orig_instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
|
|
||||||
|
if instance.user_story_id:
|
||||||
|
if instance.user_story.is_closed:
|
||||||
|
if instance.status.is_closed:
|
||||||
|
instance.user_story.finish_date = timezone.now()
|
||||||
|
instance.user_story.save(update_fields=["finish_date"])
|
||||||
|
else:
|
||||||
|
instance.user_story.is_closed = False
|
||||||
|
instance.user_story.finish_date = None
|
||||||
|
instance.user_story.save(update_fields=["is_closed", "finish_date"])
|
||||||
|
|
||||||
if instance.milestone_id:
|
if instance.milestone_id:
|
||||||
if instance.status.is_closed and not instance.milestone.closed:
|
if instance.status.is_closed and not instance.milestone.closed:
|
||||||
|
|
Loading…
Reference in New Issue