diff --git a/greenmine/projects/issues/models.py b/greenmine/projects/issues/models.py
index bd8139ff..7544c67d 100644
--- a/greenmine/projects/issues/models.py
+++ b/greenmine/projects/issues/models.py
@@ -52,17 +52,17 @@ class Issue(WatchedMixin):
attachments = generic.GenericRelation("projects.Attachment")
notifiable_fields = [
+ "subject",
+ "milestone",
"owner",
+ "assigned_to",
+ "finished_date",
+ "type",
"status",
"severity",
"priority",
- "type",
- "milestone",
- "finished_date",
- "subject",
- "description",
- "assigned_to",
"tags",
+ "description",
]
class Meta:
@@ -81,6 +81,16 @@ class Issue(WatchedMixin):
def is_closed(self):
return self.status.is_closed
+ def get_notifiable_assigned_to_display(self, value):
+ if not value:
+ return _("Unassigned")
+ return value.get_full_name()
+
+ def get_notifiable_tags_display(self, value):
+ if type(value) is list:
+ return ", ".join(value)
+ return value
+
def _get_watchers_by_role(self):
return {
"owner": self.owner,
diff --git a/greenmine/projects/issues/templates/emails/update_issue_notification-body-html.jinja b/greenmine/projects/issues/templates/emails/update_issue_notification-body-html.jinja
index c11e700b..86fb2433 100644
--- a/greenmine/projects/issues/templates/emails/update_issue_notification-body-html.jinja
+++ b/greenmine/projects/issues/templates/emails/update_issue_notification-body-html.jinja
@@ -11,24 +11,23 @@
Issue #{{ object.ref }}: {{ object.subject }}
Updated by {{ changer.get_full_name() }}.
Updated fields:
- {% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %},{% endif %}
+
+ {% for field in changed_fields %}
+ -
+ {{ field.verbose_name}}
+
+ {% if field.new_value %}
+ -
+ to: {{ field.new_value|linebreaksbr }}
+
+ {% endif %}
+ {% if field.old_value %}
+ -
+ from: {{ field.old_value|linebreaksbr }}
+
+ {% endif %}
{% endfor %}
-
-
- {# TODO: Improvemments in some methods to use that: #}
- {# - WatchedMixin._get_changed_field_old_value() #}
- {# - WatchedMixin._get_changed_field_new_value() #}
- {#
-
- {% for field in changed_fields_dict.values() %}
- -
- {{ field.verbose_name}}: from {{ field.old_value}}
- to {{ field.new_value}}.
-
- {% endfor %}
-
- #}
+
diff --git a/greenmine/projects/issues/templates/emails/update_issue_notification-body-text.jinja b/greenmine/projects/issues/templates/emails/update_issue_notification-body-text.jinja
index 0155fdb9..5c1781bb 100644
--- a/greenmine/projects/issues/templates/emails/update_issue_notification-body-text.jinja
+++ b/greenmine/projects/issues/templates/emails/update_issue_notification-body-text.jinja
@@ -5,17 +5,8 @@
- Issue #{{ object.ref }}: {{ object.subject }}
- Updated by {{ changer.get_full_name() }}
- Updated fields:
-{% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %}, {% endif %}
-{% endfor %}
-
-{# TODO: Improvemments in some methods to use that: #}
-{# - WatchedMixin._get_changed_field_old_value() #}
-{# - WatchedMixin._get_changed_field_new_value() #}
-{#
-{% for field in changed_fields_dict.values() %}
+{% for field in changed_fields %}
* {{ field.verbose_name}}: from '{{ field.old_value}}' to '{{ field.new_value }}'.
{% endfor %}
-#}
** More info at {{ final_url_name }} ({{ final_url }}) **
diff --git a/greenmine/projects/milestones/models.py b/greenmine/projects/milestones/models.py
index da2b16aa..65f52f32 100644
--- a/greenmine/projects/milestones/models.py
+++ b/greenmine/projects/milestones/models.py
@@ -42,10 +42,10 @@ class Milestone(WatchedMixin):
notifiable_fields = [
"name",
"owner",
+ "disponibility",
+ "closed",
"estimated_start",
"estimated_finish",
- "closed",
- "disponibility",
]
class Meta:
diff --git a/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-html.jinja b/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-html.jinja
index 9e6f4ac2..f781b122 100644
--- a/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-html.jinja
+++ b/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-html.jinja
@@ -11,24 +11,23 @@
Milestone #{{ object.slug }}: {{ object.name }}
Updated by {{ changer.get_full_name() }}.
Updated fields:
- {% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %},{% endif %}
+
+ {% for field in changed_fields %}
+ -
+ {{ field.verbose_name}}
+
+ {% if field.new_value %}
+ -
+ to: {{ field.new_value|linebreaksbr }}
+
+ {% endif %}
+ {% if field.old_value %}
+ -
+ from: {{ field.old_value|linebreaksbr }}
+
+ {% endif %}
{% endfor %}
-
-
- {# TODO: Improvemments in some methods to use that: #}
- {# - WatchedMixin._get_changed_field_old_value() #}
- {# - WatchedMixin._get_changed_field_new_value() #}
- {#
-
- {% for field in changed_fields_dict.values() %}
- -
- {{ field.verbose_name}}: from {{ field.old_value}}
- to {{ field.new_value}}.
-
- {% endfor %}
-
- #}
+
diff --git a/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-text.jinja b/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-text.jinja
index 395b6cc3..4c437d3b 100644
--- a/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-text.jinja
+++ b/greenmine/projects/milestones/templates/emails/update_milestone_notification-body-text.jinja
@@ -5,17 +5,8 @@
- Milestone #{{ object.slug }}: {{ object.name }}
- Updated by {{ changer.get_full_name() }}
- Updated fields:
-{% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %}, {% endif %}
-{% endfor %}
-
-{# TODO: Improvemments in some methods to use that: #}
-{# - WatchedMixin._get_changed_field_old_value() #}
-{# - WatchedMixin._get_changed_field_new_value() #}
-{#
-{% for field in changed_fields_dict.values() %}
+{% for field in changed_fields %}
* {{ field.verbose_name}}: from '{{ field.old_value}}' to '{{ field.new_value }}'.
{% endfor %}
-#}
** More info at {{ final_url_name }} ({{ final_url }}) **
diff --git a/greenmine/projects/models.py b/greenmine/projects/models.py
index 826f49ac..fbe20977 100644
--- a/greenmine/projects/models.py
+++ b/greenmine/projects/models.py
@@ -137,6 +137,21 @@ class Project(models.Model):
verbose_name=_("default questions "
"status"))
+ notifiable_fields = [
+ "name",
+ "total_milestones",
+ "total_story_points",
+ "default_points",
+ "default_us_status",
+ "default_task_status",
+ "default_priority",
+ "default_severity",
+ "default_issue_status",
+ "default_issue_type",
+ "default_question_status",
+ "description"
+ ]
+
class Meta:
verbose_name = "project"
verbose_name_plural = "projects"
diff --git a/greenmine/projects/tasks/models.py b/greenmine/projects/tasks/models.py
index 55fb4aa3..bbfde09f 100644
--- a/greenmine/projects/tasks/models.py
+++ b/greenmine/projects/tasks/models.py
@@ -49,14 +49,14 @@ class Task(WatchedMixin):
verbose_name=_("is iocaine"))
notifiable_fields = [
- "owner",
- "status",
- "finished_date",
"subject",
- "description",
+ "owner",
"assigned_to",
- "tags",
+ "finished_date",
"is_iocaine",
+ "status",
+ "description",
+ "tags",
]
class Meta:
@@ -71,6 +71,16 @@ class Task(WatchedMixin):
def __str__(self):
return "({1}) {0}".format(self.ref, self.subject)
+ def get_notifiable_assigned_to_display(self, value):
+ if not value:
+ return _("Unassigned")
+ return value.get_full_name()
+
+ def get_notifiable_tags_display(self, value):
+ if type(value) is list:
+ return ", ".join(value)
+ return value
+
def _get_watchers_by_role(self):
return {
"owner": self.owner,
diff --git a/greenmine/projects/tasks/templates/emails/update_task_notification-body-html.jinja b/greenmine/projects/tasks/templates/emails/update_task_notification-body-html.jinja
index 5fc31aa2..53cb9849 100644
--- a/greenmine/projects/tasks/templates/emails/update_task_notification-body-html.jinja
+++ b/greenmine/projects/tasks/templates/emails/update_task_notification-body-html.jinja
@@ -11,24 +11,23 @@
Task #{{ object.ref }}: {{ object.subject }}
Updated by {{ changer.get_full_name() }}.
Updated fields:
- {% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %},{% endif %}
+
+ {% for field in changed_fields %}
+ -
+ {{ field.verbose_name}}
+
+ {% if field.new_value %}
+ -
+ to: {{ field.new_value|linebreaksbr }}
+
+ {% endif %}
+ {% if field.old_value %}
+ -
+ from: {{ field.old_value|linebreaksbr }}
+
+ {% endif %}
{% endfor %}
-
-
- {# TODO: Improvemments in some methods to use that: #}
- {# - WatchedMixin._get_changed_field_old_value() #}
- {# - WatchedMixin._get_changed_field_new_value() #}
- {#
-
- {% for field in changed_fields_dict.values() %}
- -
- {{ field.verbose_name}}: from {{ field.old_value}}
- to {{ field.new_value}}.
-
- {% endfor %}
-
- #}
+
diff --git a/greenmine/projects/tasks/templates/emails/update_task_notification-body-text.jinja b/greenmine/projects/tasks/templates/emails/update_task_notification-body-text.jinja
index e3ccac9d..158612b2 100644
--- a/greenmine/projects/tasks/templates/emails/update_task_notification-body-text.jinja
+++ b/greenmine/projects/tasks/templates/emails/update_task_notification-body-text.jinja
@@ -5,17 +5,8 @@
- Task #{{ object.ref }}: {{ object.subject }}
- Updated by {{ changer.get_full_name() }}
- Updated fields:
-{% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %}, {% endif %}
-{% endfor %}
-
-{# TODO: Improvemments in some methods to use that: #}
-{# - WatchedMixin._get_changed_field_old_value() #}
-{# - WatchedMixin._get_changed_field_new_value() #}
-{#
-{% for field in changed_fields_dict.values() %}
+{% for field in changed_fields %}
* {{ field.verbose_name}}: from '{{ field.old_value}}' to '{{ field.new_value }}'.
{% endfor %}
-#}
** More info at {{ final_url_name }} ({{ final_url }}) **
diff --git a/greenmine/projects/templates/emails/update_project_notification-body-html.jinja b/greenmine/projects/templates/emails/update_project_notification-body-html.jinja
index 615ec30a..c0ced8cd 100644
--- a/greenmine/projects/templates/emails/update_project_notification-body-html.jinja
+++ b/greenmine/projects/templates/emails/update_project_notification-body-html.jinja
@@ -10,24 +10,23 @@
Project #{{ object.slug }}: {{ object.name }}
Updated by {{ changer.get_full_name() }}.
Updated fields:
- {% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %},{% endif %}
+
+ {% for field in changed_fields %}
+ -
+ {{ field.verbose_name}}
+
+ {% if field.new_value %}
+ -
+ to: {{ field.new_value|linebreaksbr }}
+
+ {% endif %}
+ {% if field.old_value %}
+ -
+ from: {{ field.old_value|linebreaksbr }}
+
+ {% endif %}
{% endfor %}
-
-
- {# TODO: Improvemments in some methods to use that: #}
- {# - WatchedMixin._get_changed_field_old_value() #}
- {# - WatchedMixin._get_changed_field_new_value() #}
- {#
-
- {% for field in changed_fields_dict.values() %}
- -
- {{ field.verbose_name}}: from {{ field.old_value}}
- to {{ field.new_value}}.
-
- {% endfor %}
-
- #}
+
diff --git a/greenmine/projects/templates/emails/update_project_notification-body-text.jinja b/greenmine/projects/templates/emails/update_project_notification-body-text.jinja
index 89fa5539..5e88c59b 100644
--- a/greenmine/projects/templates/emails/update_project_notification-body-text.jinja
+++ b/greenmine/projects/templates/emails/update_project_notification-body-text.jinja
@@ -4,17 +4,8 @@
- Project #{{ object.slug }}: {{ object.name }}
- Updated by {{ changer.get_full_name() }}
- Updated fields:
-{% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %}, {% endif %}
-{% endfor %}
-
-{# TODO: Improvemments in some methods to use that: #}
-{# - WatchedMixin._get_changed_field_old_value() #}
-{# - WatchedMixin._get_changed_field_new_value() #}
-{#
-{% for field in changed_fields_dict.values() %}
+{% for field in changed_fields %}
* {{ field.verbose_name}}: from '{{ field.old_value}}' to '{{ field.new_value }}'.
{% endfor %}
-#}
** More info at {{ final_url_name }} ({{ final_url }}) **
diff --git a/greenmine/projects/userstories/models.py b/greenmine/projects/userstories/models.py
index f6db199f..c5aa8323 100644
--- a/greenmine/projects/userstories/models.py
+++ b/greenmine/projects/userstories/models.py
@@ -33,6 +33,8 @@ class RolePoints(models.Model):
permissions = (
("view_rolepoints", "Can view role points"),
)
+ def __str__(self):
+ return "{}: {}".format(role.name, point.name)
class UserStory(WatchedMixin):
@@ -74,16 +76,16 @@ class UserStory(WatchedMixin):
attachments = generic.GenericRelation("projects.Attachment")
notifiable_fields = [
+ "subject",
"milestone",
"owner",
- "status",
- "points",
"finish_date",
- "subject",
- "description",
"client_requirement",
"team_requirement",
+ "status",
+ "points",
"tags",
+ "description",
]
class Meta:
@@ -116,6 +118,11 @@ class UserStory(WatchedMixin):
return total
+ def get_notifiable_tags_display(self, value):
+ if type(value) is list:
+ return ", ".join(value)
+ return value
+
def _get_watchers_by_role(self):
return {
"owner": self.owner,
diff --git a/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-html.jinja b/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-html.jinja
index 58266ecb..ed0ab8f9 100644
--- a/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-html.jinja
+++ b/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-html.jinja
@@ -11,24 +11,23 @@
US #{{ object.ref }}: {{ object.subject }}
Updated by {{ changer.get_full_name() }}.
Updated fields:
- {% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %},{% endif %}
+
+ {% for field in changed_fields %}
+ -
+ {{ field.verbose_name}}
+
+ {% if field.new_value %}
+ -
+ to: {{ field.new_value|linebreaksbr }}
+
+ {% endif %}
+ {% if field.old_value %}
+ -
+ from: {{ field.old_value|linebreaksbr }}
+
+ {% endif %}
{% endfor %}
-
-
- {# TODO: Improvemments in some methods to use that: #}
- {# - WatchedMixin._get_changed_field_old_value() #}
- {# - WatchedMixin._get_changed_field_new_value() #}
- {#
-
- {% for field in changed_fields_dict.values() %}
- -
- {{ field.verbose_name}}: from {{ field.old_value}}
- to {{ field.new_value}}.
-
- {% endfor %}
-
- #}
+
diff --git a/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-text.jinja b/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-text.jinja
index 3ed0b918..3a444cc5 100644
--- a/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-text.jinja
+++ b/greenmine/projects/userstories/templates/emails/update_userstory_notification-body-text.jinja
@@ -5,17 +5,8 @@
- US #{{ object.ref }}: {{ object.subject }}
- Updated by {{ changer.get_full_name() }}
- Updated fields:
-{% for field in changed_fields_dict.values() %}
- {{ field.verbose_name }}{% if not loop.last %}, {% endif %}
-{% endfor %}
-
-{# TODO: Improvemments in some methods to use that: #}
-{# - WatchedMixin._get_changed_field_old_value() #}
-{# - WatchedMixin._get_changed_field_new_value() #}
-{#
-{% for field in changed_fields_dict.values() %}
+{% for field in changed_fields %}
* {{ field.verbose_name}}: from '{{ field.old_value}}' to '{{ field.new_value }}'.
{% endfor %}
-#}
** More info at {{ final_url_name }} ({{ final_url }}) **