From 1a0c9306a12c55852f19d49ab90df511913faf60 Mon Sep 17 00:00:00 2001 From: Lakhan Date: Fri, 29 Nov 2024 13:59:05 +0530 Subject: [PATCH 1/3] added relation, estimate property --- .../emails/notifications/issue-updates.html | 560 ++++++++++-------- 1 file changed, 325 insertions(+), 235 deletions(-) diff --git a/apiserver/templates/emails/notifications/issue-updates.html b/apiserver/templates/emails/notifications/issue-updates.html index c1a48752fdf..da61d891b81 100644 --- a/apiserver/templates/emails/notifications/issue-updates.html +++ b/apiserver/templates/emails/notifications/issue-updates.html @@ -1,243 +1,333 @@ - - - - Updates on issue + + + + Updates on issue - - - - -
- -
- - - - -
-
-
-
- -
-
- - - - -
-

{{ issue.issue_identifier }} updates

-

{{workspace}}/{{project}}/{{issue.issue_identifier}}: {{ issue.name }}

-
-
- {% if actors_involved == 1 %} -

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} .

- {% else %} -

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} and others.

- {% endif %} {% for update in data %} {% if update.changes.name %} -

The issue title has been updated to {{ issue.name}}

- {% endif %} {% if data %} -
- -
-

Updates

-
- -
- - - - - - - -
- {% if update.actor_detail.avatar_url %} {% else %} - - - - -
{{ update.actor_detail.first_name.0 }}
- {% endif %} -
-

{{ update.actor_detail.first_name }} {{ update.actor_detail.last_name }}

-
-

{{ update.activity_time }}

-
- {% if update.changes.target_date %} - - - - - - -
-
-

Due Date:

-
-
- {% if update.changes.target_date.new_value.0 %} -

{{ update.changes.target_date.new_value.0 }}

- {% else %} -

{{ update.changes.target_date.old_value.0 }}

- {% endif %} -
- {% endif %} {% if update.changes.duplicate %} - - - - {% if update.changes.duplicate.new_value.0 %} - - {% endif %} {% if update.changes.duplicate.new_value.2 %} - - {% endif %} {% if update.changes.duplicate.old_value.0 %} - - {% endif %} {% if update.changes.duplicate.old_value.2 %} - - {% endif %} - -
Duplicate: {% for duplicate in update.changes.duplicate.new_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.new_value|length|add:"-2" }} more {% for duplicate in update.changes.duplicate.old_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.old_value|length|add:"-2" }} more
- {% endif %} {% if update.changes.assignees %} - - - - - -
Assignee: {% if update.changes.assignees.new_value.0 %} {{update.changes.assignees.new_value.0}} {% endif %} {% if update.changes.assignees.new_value.1 %} +{{ update.changes.assignees.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.assignees.old_value.0 %} {{update.changes.assignees.old_value.0}} {% endif %} {% if update.changes.assignees.old_value.1 %} +{{ update.changes.assignees.old_value|length|add:"-1"}} more {% endif %}
- {% endif %} {% if update.changes.labels %} - - - - - -
Labels: {% if update.changes.labels.new_value.0 %} {{update.changes.labels.new_value.0}} {% endif %} {% if update.changes.labels.new_value.1 %} +{{ update.changes.labels.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.labels.old_value.0 %} {{update.changes.labels.old_value.0}} {% endif %} {% if update.changes.labels.old_value.1 %} +{{ update.changes.labels.old_value|length|add:"-1"}} more {% endif %}
- {% endif %} {% if update.changes.state %} - - - - - {% if update.changes.state.old_value.0 == 'Backlog' or update.changes.state.old_value.0 == 'In Progress' or update.changes.state.old_value.0 == 'Done' or update.changes.state.old_value.0 == 'Cancelled' %} - - {% endif %} - - - {% if update.changes.state.new_value|last == 'Backlog' or update.changes.state.new_value|last == 'In Progress' or update.changes.state.new_value|last == 'Done' or update.changes.state.new_value|last == 'Cancelled' %} - - {% endif %} - - -
-

State:

-
-

{{ update.changes.state.old_value.0 }}

-
-

{{update.changes.state.new_value|last }}

-
- {% endif %} {% if update.changes.link %} - - - - - - -
-

Links:

-
- {% for link in update.changes.link.new_value %} {{ link }} {% endfor %} {% if update.changes.link.old_value|length > 0 %} {% if update.changes.link.old_value.0 != "None" %} -

2 Links were removed

- {% endif %} {% endif %} -
- {% endif %} {% if update.changes.priority %} - - - - - - + + + + +
+ +
+
-

Priority:

-
-

{{ update.changes.priority.old_value.0 }}

-
+ - -
-

{{ update.changes.priority.new_value|last }}

+
- {% endif %} {% if update.changes.blocking.new_value %} - - - - {% if update.changes.blocking.new_value.0 %} - - {% endif %} {% if update.changes.blocking.new_value.2 %} - - {% endif %} {% if update.changes.blocking.old_value.0 %} - - {% endif %} {% if update.changes.blocking.old_value.2 %} - - {% endif %} - -
Blocking: {% for blocking in update.changes.blocking.new_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.new_value|length|add:"-2" }} more {% for blocking in update.changes.blocking.old_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.old_value|length|add:"-2" }} more
- {% endif %} -
-
- {% endif %} {% endfor %} {% if comments.0 %} -
- -

Comments

- {% for comment in comments %} - - - - - +
- {% if comment.actor_detail.avatar_url %} {% else %} - - - - -
{{ comment.actor_detail.first_name.0 }}
- {% endif %} -
- - - - - {% for actor_comment in comment.actor_comments.new_value %} - - - - {% endfor %} -
-

{{ comment.actor_detail.first_name }} {{ comment.actor_detail.last_name }}

-
-
-

{{ actor_comment|safe }}

-
-
-
- {% endfor %} -
- {% endif %} -
- -
View issue
-
-
- - - - - -
-
- This email was sent to {{ receiver.email }}. If you'd rather not receive this kind of email, you can unsubscribe to the issue or manage your email preferences. - +
+ +
+
+ + + + +
+

{{ issue.issue_identifier }} updates

+

{{workspace}}/{{project}}/{{issue.issue_identifier}}: {{ issue.name }}

+
+
+ {% if actors_involved == 1 %} +

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} .

+ {% else %} +

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} and others.

+ {% endif %} {% for update in data %} {% if update.changes.name %} +

The issue title has been updated to {{ issue.name}}

+ {% endif %} {% if data %} +
+ +
+

Updates

+
+ +
+ + + + + + + +
+ {% if update.actor_detail.avatar_url %} {% else %} + + + + +
{{ update.actor_detail.first_name.0 }}
+ {% endif %} +
+

{{ update.actor_detail.first_name }} {{ update.actor_detail.last_name }}

+
+

{{ update.activity_time }}

+
+ {% if update.changes.target_date %} + + + + + + +
+
+

Due Date:

+
+
+ {% if update.changes.target_date.new_value.0 %} +

{{ update.changes.target_date.new_value.0 }}

+ {% else %} +

{{ update.changes.target_date.old_value.0 }}

+ {% endif %} +
+ {% endif %} {% if update.changes.duplicate %} + + + + {% if update.changes.duplicate.new_value.0 %} + + {% endif %} {% if update.changes.duplicate.new_value.2 %} + + {% endif %} {% if update.changes.duplicate.old_value.0 %} + + {% endif %} {% if update.changes.duplicate.old_value.2 %} + + {% endif %} + +
Duplicate: {% for duplicate in update.changes.duplicate.new_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.new_value|length|add:"-2" }} more {% for duplicate in update.changes.duplicate.old_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.old_value|length|add:"-2" }} more
+ {% endif %} {% if update.changes.assignees %} + + + + + +
Assignee: {% if update.changes.assignees.new_value.0 %} {{update.changes.assignees.new_value.0}} {% endif %} {% if update.changes.assignees.new_value.1 %} +{{ update.changes.assignees.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.assignees.old_value.0 %} {{update.changes.assignees.old_value.0}} {% endif %} {% if update.changes.assignees.old_value.1 %} +{{ update.changes.assignees.old_value|length|add:"-1"}} more {% endif %}
+ {% endif %} {% if update.changes.labels %} + + + + + +
Labels: {% if update.changes.labels.new_value.0 %} {{update.changes.labels.new_value.0}} {% endif %} {% if update.changes.labels.new_value.1 %} +{{ update.changes.labels.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.labels.old_value.0 %} {{update.changes.labels.old_value.0}} {% endif %} {% if update.changes.labels.old_value.1 %} +{{ update.changes.labels.old_value|length|add:"-1"}} more {% endif %}
+ {% endif %} {% if update.changes.state %} + + + + + {% if update.changes.state.old_value.0 == 'Backlog' or update.changes.state.old_value.0 == 'In Progress' or update.changes.state.old_value.0 == 'Done' or update.changes.state.old_value.0 == 'Cancelled' %} + + {% endif %} + + + {% if update.changes.state.new_value|last == 'Backlog' or update.changes.state.new_value|last == 'In Progress' or update.changes.state.new_value|last == 'Done' or update.changes.state.new_value|last == 'Cancelled' %} + + {% endif %} + + +
+

State:

+
+

{{ update.changes.state.old_value.0 }}

+
+

{{update.changes.state.new_value|last }}

+
+ {% endif %} {% if update.changes.link %} + + + + + + +
+

Links:

+
+ {% for link in update.changes.link.new_value %} {{ link }} {% endfor %} {% if update.changes.link.old_value|length > 0 %} {% if update.changes.link.old_value.0 != "None" %} +

2 Links were removed

+ {% endif %} {% endif %} +
+ {% endif %} {% if update.changes.priority %} + + + + + + + + +
+

Priority:

+
+

{{ update.changes.priority.old_value.0 }}

+
+

{{ update.changes.priority.new_value|last }}

+
+ {% endif %} {% if update.changes.blocking.new_value %} + + + + {% if update.changes.blocking.new_value.0 %} + + {% endif %} {% if update.changes.blocking.new_value.2 %} + + {% endif %} {% if update.changes.blocking.old_value.0 %} + + {% endif %} {% if update.changes.blocking.old_value.2 %} + + {% endif %} + +
+ + + + Blocking: + + {% for blocking in update.changes.blocking.new_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.new_value|length|add:"-2" }} more {% for blocking in update.changes.blocking.old_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.old_value|length|add:"-2" }} more
+ {% endif %} + {% if update.changes.relates_to.new_value %} + + + + {% if update.changes.relates_to.new_value.0 %} + + {% endif %} {% if update.changes.relates_to.new_value.2 %} + + {% endif %} {% if update.changes.relates_to.old_value.0 %} + + {% endif %} {% if update.changes.relates_to.old_value.2 %} + + {% endif %} +
+ + + + Relates to: + + {% for relates_to in update.changes.relates_to.new_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.new_value|length|add:"-2" }} more {% for relates_to in update.changes.relates_to.old_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.old_value|length|add:"-2" }} more
+ {% endif %} + {% if update.changes.parent.new_value %} + + + + {% if update.changes.parent.new_value.0 %} + + {% endif %} {% if update.changes.parent.new_value.2 %} + + {% endif %} {% if update.changes.parent.old_value.0 %} + + {% endif %} {% if update.changes.parent.old_value.2 %} + + {% endif %} +
+ + + + Parent: + + {% for parent in update.changes.parent.new_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.new_value|length|add:"-2" }} more {% for parent in update.changes.parent.old_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.old_value|length|add:"-2" }} more
+ {% endif %} + {% if update.changes.blocked_by.new_value %} + + + + {% if update.changes.blocked_by.new_value.0 %} + + {% endif %} {% if update.changes.blocked_by.new_value.2 %} + + {% endif %} {% if update.changes.blocked_by.old_value.0 %} + + {% endif %} {% if update.changes.blocked_by.old_value.2 %} + + {% endif %} +
+ + + + Blocked by: + + {% for blocked_by in update.changes.blocked_by.new_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.new_value|length|add:"-2" }} more {% for blocked_by in update.changes.blocked_by.old_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.old_value|length|add:"-2" }} more
+ {% endif %} + {% if update.changes.estimate_point.new_value %} + + + + {% if update.changes.estimate_point.new_value.0 %} + + {% endif %} {% if update.changes.estimate_point.new_value.2 %} + + {% endif %} {% if update.changes.estimate_point.old_value.0 %} + + {% endif %} {% if update.changes.estimate_point.old_value.2 %} + + {% endif %} +
+ + + + Estimates: + + {% for estimate_point in update.changes.estimate_point.new_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.new_value|length|add:"-2" }} more {% for estimate_point in update.changes.estimate_point.old_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.old_value|length|add:"-2" }} more
+ {% endif %} +
+
+ {% endif %} {% endfor %} {% if comments.0 %} +
+ +

Comments

+ {% for comment in comments %} + + + + + +
+ {% if comment.actor_detail.avatar_url %} L {% else %} + + + + +
{{ comment.actor_detail.first_name.0 }}
+ {% endif %} +
+ + + + + {% for actor_comment in comment.actor_comments.new_value %} + + + + {% endfor %} +
+

{{ comment.actor_detail.first_name }} {{ comment.actor_detail.last_name }}

+
+
+

{{ actor_comment|safe }}

+
+
+
+ {% endfor %} +
+ {% endif %}
-
-
- + +
View issue
+
+ + + + + + +
+
+ This email was sent to {{ receiver.email }}. If you'd rather not receive this kind of email, you can unsubscribe to the issue or manage your email preferences. + +
+
+ + \ No newline at end of file From 4dd22845efd7e34494235d1d7bfe946a2c2b0b78 Mon Sep 17 00:00:00 2001 From: Lakhan Date: Fri, 29 Nov 2024 14:00:25 +0530 Subject: [PATCH 2/3] fix: avatar url --- .../plane/bgtasks/email_notification_task.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/apiserver/plane/bgtasks/email_notification_task.py b/apiserver/plane/bgtasks/email_notification_task.py index b0f75b5dc7c..27dc254da9a 100644 --- a/apiserver/plane/bgtasks/email_notification_task.py +++ b/apiserver/plane/bgtasks/email_notification_task.py @@ -38,6 +38,22 @@ def release_lock(lock_id): redis_client = redis_instance() redis_client.delete(lock_id) +def is_valid_url(url: str) -> bool: + """Check if URL starts with http:// or https://""" + return url.startswith(("http://", "https://")) + + +def get_avatar_url(base_host, actor): + # Check if avatar_url is present + if not actor.avatar_url: + return "" + + # Check if avatar_url is a valid URL + if is_valid_url(actor.avatar_url): + return actor.avatar_url + + # Return the full URL + return f"{base_host}/{actor.avatar_url}" @shared_task def stack_email_notification(): @@ -218,7 +234,7 @@ def send_email_notification( { "actor_comments": comment, "actor_detail": { - "avatar_url": f"{base_api}{actor.avatar_url}", + "avatar_url": get_avatar_url(base_api, actor), "first_name": actor.first_name, "last_name": actor.last_name, }, @@ -235,7 +251,7 @@ def send_email_notification( { "actor_comments": mention, "actor_detail": { - "avatar_url": f"{base_api}{actor.avatar_url}", + "avatar_url": get_avatar_url(base_api, actor), "first_name": actor.first_name, "last_name": actor.last_name, }, @@ -251,7 +267,7 @@ def send_email_notification( template_data.append( { "actor_detail": { - "avatar_url": f"{base_api}{actor.avatar_url}", + "avatar_url": get_avatar_url(base_api, actor), "first_name": actor.first_name, "last_name": actor.last_name, }, From e44ccac46383f45342fad261a23d00a5d7e2d2d1 Mon Sep 17 00:00:00 2001 From: Lakhan Date: Fri, 29 Nov 2024 14:19:28 +0530 Subject: [PATCH 3/3] fix: formatting --- .../emails/notifications/issue-updates.html | 640 +++++++++--------- 1 file changed, 315 insertions(+), 325 deletions(-) diff --git a/apiserver/templates/emails/notifications/issue-updates.html b/apiserver/templates/emails/notifications/issue-updates.html index da61d891b81..8c54fafbaf6 100644 --- a/apiserver/templates/emails/notifications/issue-updates.html +++ b/apiserver/templates/emails/notifications/issue-updates.html @@ -1,333 +1,323 @@ - - - - Updates on issue + + + + Updates on issue - - - - -
- -
- - + + + + +
+ +
+
+ + + +
+
+
+
+ +
+
+ + + + +
+

{{ issue.issue_identifier }} updates

+

{{workspace}}/{{project}}/{{issue.issue_identifier}}: {{ issue.name }}

+
+
+ {% if actors_involved == 1 %} +

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} .

+ {% else %} +

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} and others.

+ {% endif %} {% for update in data %} {% if update.changes.name %} +

The issue title has been updated to {{ issue.name}}

+ {% endif %} {% if data %} +
+ +
+

Updates

+
+ +
+ + + + + - -
+ {% if update.actor_detail.avatar_url %} {% else %} + + + + +
{{ update.actor_detail.first_name.0 }}
+ {% endif %} +
+

{{ update.actor_detail.first_name }} {{ update.actor_detail.last_name }}

+
-
+

{{ update.activity_time }}

-
- -
-
- - - - -
-

{{ issue.issue_identifier }} updates

-

{{workspace}}/{{project}}/{{issue.issue_identifier}}: {{ issue.name }}

-
-
- {% if actors_involved == 1 %} -

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} .

- {% else %} -

{{summary}} {% if data|length > 0 %} {{ data.0.actor_detail.first_name}} {{data.0.actor_detail.last_name}} {% else %} {{ comments.0.actor_detail.first_name}} {{comments.0.actor_detail.last_name}} {% endif %} and others.

- {% endif %} {% for update in data %} {% if update.changes.name %} -

The issue title has been updated to {{ issue.name}}

- {% endif %} {% if data %} -
- -
-

Updates

-
- -
- - - - - - - -
- {% if update.actor_detail.avatar_url %} {% else %} - - - - -
{{ update.actor_detail.first_name.0 }}
- {% endif %} -
-

{{ update.actor_detail.first_name }} {{ update.actor_detail.last_name }}

-
-

{{ update.activity_time }}

-
- {% if update.changes.target_date %} - - - - - - -
-
-

Due Date:

-
-
- {% if update.changes.target_date.new_value.0 %} -

{{ update.changes.target_date.new_value.0 }}

- {% else %} -

{{ update.changes.target_date.old_value.0 }}

- {% endif %} -
- {% endif %} {% if update.changes.duplicate %} - - - - {% if update.changes.duplicate.new_value.0 %} - - {% endif %} {% if update.changes.duplicate.new_value.2 %} - - {% endif %} {% if update.changes.duplicate.old_value.0 %} - - {% endif %} {% if update.changes.duplicate.old_value.2 %} - - {% endif %} - -
Duplicate: {% for duplicate in update.changes.duplicate.new_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.new_value|length|add:"-2" }} more {% for duplicate in update.changes.duplicate.old_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.old_value|length|add:"-2" }} more
- {% endif %} {% if update.changes.assignees %} - - - - - -
Assignee: {% if update.changes.assignees.new_value.0 %} {{update.changes.assignees.new_value.0}} {% endif %} {% if update.changes.assignees.new_value.1 %} +{{ update.changes.assignees.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.assignees.old_value.0 %} {{update.changes.assignees.old_value.0}} {% endif %} {% if update.changes.assignees.old_value.1 %} +{{ update.changes.assignees.old_value|length|add:"-1"}} more {% endif %}
- {% endif %} {% if update.changes.labels %} - - - - - -
Labels: {% if update.changes.labels.new_value.0 %} {{update.changes.labels.new_value.0}} {% endif %} {% if update.changes.labels.new_value.1 %} +{{ update.changes.labels.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.labels.old_value.0 %} {{update.changes.labels.old_value.0}} {% endif %} {% if update.changes.labels.old_value.1 %} +{{ update.changes.labels.old_value|length|add:"-1"}} more {% endif %}
- {% endif %} {% if update.changes.state %} - - - - - {% if update.changes.state.old_value.0 == 'Backlog' or update.changes.state.old_value.0 == 'In Progress' or update.changes.state.old_value.0 == 'Done' or update.changes.state.old_value.0 == 'Cancelled' %} - - {% endif %} - - - {% if update.changes.state.new_value|last == 'Backlog' or update.changes.state.new_value|last == 'In Progress' or update.changes.state.new_value|last == 'Done' or update.changes.state.new_value|last == 'Cancelled' %} - - {% endif %} - - -
-

State:

-
-

{{ update.changes.state.old_value.0 }}

-
-

{{update.changes.state.new_value|last }}

-
- {% endif %} {% if update.changes.link %} - - - - - - -
-

Links:

-
- {% for link in update.changes.link.new_value %} {{ link }} {% endfor %} {% if update.changes.link.old_value|length > 0 %} {% if update.changes.link.old_value.0 != "None" %} -

2 Links were removed

- {% endif %} {% endif %} -
- {% endif %} {% if update.changes.priority %} - - - - - - - - -
-

Priority:

-
-

{{ update.changes.priority.old_value.0 }}

-
-

{{ update.changes.priority.new_value|last }}

-
- {% endif %} {% if update.changes.blocking.new_value %} - - - - {% if update.changes.blocking.new_value.0 %} - - {% endif %} {% if update.changes.blocking.new_value.2 %} - - {% endif %} {% if update.changes.blocking.old_value.0 %} - - {% endif %} {% if update.changes.blocking.old_value.2 %} - - {% endif %} - -
- - - - Blocking: - - {% for blocking in update.changes.blocking.new_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.new_value|length|add:"-2" }} more {% for blocking in update.changes.blocking.old_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.old_value|length|add:"-2" }} more
- {% endif %} - {% if update.changes.relates_to.new_value %} - - - - {% if update.changes.relates_to.new_value.0 %} - - {% endif %} {% if update.changes.relates_to.new_value.2 %} - - {% endif %} {% if update.changes.relates_to.old_value.0 %} - - {% endif %} {% if update.changes.relates_to.old_value.2 %} - - {% endif %} -
- - - - Relates to: - - {% for relates_to in update.changes.relates_to.new_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.new_value|length|add:"-2" }} more {% for relates_to in update.changes.relates_to.old_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.old_value|length|add:"-2" }} more
- {% endif %} - {% if update.changes.parent.new_value %} - - - - {% if update.changes.parent.new_value.0 %} - - {% endif %} {% if update.changes.parent.new_value.2 %} - - {% endif %} {% if update.changes.parent.old_value.0 %} - - {% endif %} {% if update.changes.parent.old_value.2 %} - - {% endif %} -
- - - - Parent: - - {% for parent in update.changes.parent.new_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.new_value|length|add:"-2" }} more {% for parent in update.changes.parent.old_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.old_value|length|add:"-2" }} more
- {% endif %} - {% if update.changes.blocked_by.new_value %} - - - - {% if update.changes.blocked_by.new_value.0 %} - - {% endif %} {% if update.changes.blocked_by.new_value.2 %} - - {% endif %} {% if update.changes.blocked_by.old_value.0 %} - - {% endif %} {% if update.changes.blocked_by.old_value.2 %} - - {% endif %} -
- - - - Blocked by: - - {% for blocked_by in update.changes.blocked_by.new_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.new_value|length|add:"-2" }} more {% for blocked_by in update.changes.blocked_by.old_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.old_value|length|add:"-2" }} more
- {% endif %} - {% if update.changes.estimate_point.new_value %} - - - - {% if update.changes.estimate_point.new_value.0 %} - - {% endif %} {% if update.changes.estimate_point.new_value.2 %} - - {% endif %} {% if update.changes.estimate_point.old_value.0 %} - - {% endif %} {% if update.changes.estimate_point.old_value.2 %} - - {% endif %} -
- - - - Estimates: - - {% for estimate_point in update.changes.estimate_point.new_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.new_value|length|add:"-2" }} more {% for estimate_point in update.changes.estimate_point.old_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.old_value|length|add:"-2" }} more
- {% endif %} -
-
- {% endif %} {% endfor %} {% if comments.0 %} -
- -

Comments

- {% for comment in comments %} - - - - - -
- {% if comment.actor_detail.avatar_url %} L {% else %} - - - - -
{{ comment.actor_detail.first_name.0 }}
- {% endif %} -
- - - - - {% for actor_comment in comment.actor_comments.new_value %} - - - - {% endfor %} -
-

{{ comment.actor_detail.first_name }} {{ comment.actor_detail.last_name }}

-
-
-

{{ actor_comment|safe }}

-
-
-
- {% endfor %} -
- {% endif %} + + + {% if update.changes.target_date %} + + + + + + +
+
+

Due Date:

+
+
+ {% if update.changes.target_date.new_value.0 %} +

{{ update.changes.target_date.new_value.0 }}

+ {% else %} +

{{ update.changes.target_date.old_value.0 }}

+ {% endif %} +
+ {% endif %} {% if update.changes.duplicate %} + + + + {% if update.changes.duplicate.new_value.0 %} + + {% endif %} {% if update.changes.duplicate.new_value.2 %} + + {% endif %} {% if update.changes.duplicate.old_value.0 %} + + {% endif %} {% if update.changes.duplicate.old_value.2 %} + + {% endif %} + +
Duplicate: {% for duplicate in update.changes.duplicate.new_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.new_value|length|add:"-2" }} more {% for duplicate in update.changes.duplicate.old_value|slice:":2" %} {{ duplicate }} {% endfor %} +{{ update.changes.duplicate.old_value|length|add:"-2" }} more
+ {% endif %} {% if update.changes.assignees %} + + + + + +
Assignee: {% if update.changes.assignees.new_value.0 %} {{update.changes.assignees.new_value.0}} {% endif %} {% if update.changes.assignees.new_value.1 %} +{{ update.changes.assignees.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.assignees.old_value.0 %} {{update.changes.assignees.old_value.0}} {% endif %} {% if update.changes.assignees.old_value.1 %} +{{ update.changes.assignees.old_value|length|add:"-1"}} more {% endif %}
+ {% endif %} {% if update.changes.labels %} + + + + + +
Labels: {% if update.changes.labels.new_value.0 %} {{update.changes.labels.new_value.0}} {% endif %} {% if update.changes.labels.new_value.1 %} +{{ update.changes.labels.new_value|length|add:"-1"}} more {% endif %} {% if update.changes.labels.old_value.0 %} {{update.changes.labels.old_value.0}} {% endif %} {% if update.changes.labels.old_value.1 %} +{{ update.changes.labels.old_value|length|add:"-1"}} more {% endif %}
+ {% endif %} {% if update.changes.state %} + + + + + {% if update.changes.state.old_value.0 == 'Backlog' or update.changes.state.old_value.0 == 'In Progress' or update.changes.state.old_value.0 == 'Done' or update.changes.state.old_value.0 == 'Cancelled' %} + + {% endif %} + + + {% if update.changes.state.new_value|last == 'Backlog' or update.changes.state.new_value|last == 'In Progress' or update.changes.state.new_value|last == 'Done' or update.changes.state.new_value|last == 'Cancelled' %} + + {% endif %} + + +
+

State:

+
+

{{ update.changes.state.old_value.0 }}

+
+

{{update.changes.state.new_value|last }}

+
+ {% endif %} {% if update.changes.link %} + + + + + + +
+

Links:

+
+ {% for link in update.changes.link.new_value %} {{ link }} {% endfor %} {% if update.changes.link.old_value|length > 0 %} {% if update.changes.link.old_value.0 != "None" %} +

2 Links were removed

+ {% endif %} {% endif %} +
+ {% endif %} {% if update.changes.priority %} + + + + + + + + +
+

Priority:

+
+

{{ update.changes.priority.old_value.0 }}

+
+

{{ update.changes.priority.new_value|last }}

+
+ {% endif %} {% if update.changes.blocking.new_value %} + + + + {% if update.changes.blocking.new_value.0 %} + + {% endif %} {% if update.changes.blocking.new_value.2 %} + + {% endif %} {% if update.changes.blocking.old_value.0 %} + + {% endif %} {% if update.changes.blocking.old_value.2 %} + + {% endif %} + +
Blocking: {% for blocking in update.changes.blocking.new_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.new_value|length|add:"-2" }} more {% for blocking in update.changes.blocking.old_value|slice:":2" %} {{ blocking }} {% endfor %} +{{ update.changes.blocking.old_value|length|add:"-2" }} more
+ {% endif %} {% if update.changes.relates_to.new_value %} + + + + {% if update.changes.relates_to.new_value.0 %} + + {% endif %} {% if update.changes.relates_to.new_value.2 %} + + {% endif %} {% if update.changes.relates_to.old_value.0 %} + + {% endif %} {% if update.changes.relates_to.old_value.2 %} + + {% endif %} +
+ + + + Relates to: + + {% for relates_to in update.changes.relates_to.new_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.new_value|length|add:"-2" }} more {% for relates_to in update.changes.relates_to.old_value|slice:":2" %} {{ relates_to }} {% endfor %} +{{ update.changes.relates_to.old_value|length|add:"-2" }} more
+ {% endif %}{% if update.changes.parent.new_value %} + + + + {% if update.changes.parent.new_value.0 %} + + {% endif %} {% if update.changes.parent.new_value.2 %} + + {% endif %} {% if update.changes.parent.old_value.0 %} + + {% endif %} {% if update.changes.parent.old_value.2 %} + + {% endif %} +
+ + + + Parent: + + {% for parent in update.changes.parent.new_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.new_value|length|add:"-2" }} more {% for parent in update.changes.parent.old_value|slice:":2" %} {{ parent }} {% endfor %} +{{ update.changes.parent.old_value|length|add:"-2" }} more
+ {% endif %}{% if update.changes.blocked_by.new_value %} + + + + {% if update.changes.blocked_by.new_value.0 %} + + {% endif %} {% if update.changes.blocked_by.new_value.2 %} + + {% endif %} {% if update.changes.blocked_by.old_value.0 %} + + {% endif %} {% if update.changes.blocked_by.old_value.2 %} + + {% endif %} +
+ + + + Blocked by: + + {% for blocked_by in update.changes.blocked_by.new_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.new_value|length|add:"-2" }} more {% for blocked_by in update.changes.blocked_by.old_value|slice:":2" %} {{ blocked_by }} {% endfor %} +{{ update.changes.blocked_by.old_value|length|add:"-2" }} more
+ {% endif %}{% if update.changes.estimate_point.new_value %} + + + + {% if update.changes.estimate_point.new_value.0 %} + + {% endif %} {% if update.changes.estimate_point.new_value.2 %} + + {% endif %} {% if update.changes.estimate_point.old_value.0 %} + + {% endif %} {% if update.changes.estimate_point.old_value.2 %} + + {% endif %} +
+ + + + Estimates: + + {% for estimate_point in update.changes.estimate_point.new_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.new_value|length|add:"-2" }} more {% for estimate_point in update.changes.estimate_point.old_value|slice:":2" %} {{ estimate_point }} {% endfor %} +{{ update.changes.estimate_point.old_value|length|add:"-2" }} more
+ {% endif %}
- -
View issue
-
-
- - - - - -
-
- This email was sent to {{ receiver.email }}. If you'd rather not receive this kind of email, you can unsubscribe to the issue or manage your email preferences. - -
-
+
+ {% endif %} {% endfor %} {% if comments.0 %} +
+ +

Comments

+ {% for comment in comments %} + + + + + +
+ {% if comment.actor_detail.avatar_url %} {% else %} + + + + +
{{ comment.actor_detail.first_name.0 }}
+ {% endif %} +
+ + + + + {% for actor_comment in comment.actor_comments.new_value %} + + + + {% endfor %} +
+

{{ comment.actor_detail.first_name }} {{ comment.actor_detail.last_name }}

+
+
+

{{ actor_comment|safe }}

+
+
+
+ {% endfor %} +
+ {% endif %} +
+ +
View issue
+
- + + + + + +
+
+ This email was sent to {{ receiver.email }}. If you'd rather not receive this kind of email, you can unsubscribe to the issue or manage your email preferences. + +
+
+
+ \ No newline at end of file