From 58734af3214d97134a4f7666ddf22ac129d82e83 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 24 Apr 2015 08:15:46 +0200 Subject: [PATCH] Adding tag support for projects --- taiga/projects/apps.py | 6 ++++++ taiga/projects/services/filters.py | 9 +++++++++ taiga/projects/services/tags_colors.py | 7 +++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/taiga/projects/apps.py b/taiga/projects/apps.py index 232efc60..b59c0137 100644 --- a/taiga/projects/apps.py +++ b/taiga/projects/apps.py @@ -45,3 +45,9 @@ class ProjectsAppConfig(AppConfig): signals.post_save.connect(handlers.project_post_save, sender=apps.get_model("projects", "Project"), dispatch_uid='project_post_save') + + # Tags + signals.pre_save.connect(handlers.tags_normalization, + sender=apps.get_model("projects", "Project")) + signals.pre_save.connect(handlers.update_project_tags_when_create_or_edit_taggable_item, + sender=apps.get_model("projects", "Project")) diff --git a/taiga/projects/services/filters.py b/taiga/projects/services/filters.py index 8ce48344..e8c2786c 100644 --- a/taiga/projects/services/filters.py +++ b/taiga/projects/services/filters.py @@ -18,6 +18,14 @@ from contextlib import closing from django.db import connection +def _get_project_tags(project): + result = set() + tags = project.tags or [] + for tag in tags: + result.add(tag) + return result + + def _get_stories_tags(project): result = set() for tags in project.user_stories.values_list("tags", flat=True): @@ -157,6 +165,7 @@ def get_all_tags(project): tags found on it. """ result = set() + result.update(_get_project_tags(project)) result.update(_get_issues_tags(project)) result.update(_get_stories_tags(project)) result.update(_get_tasks_tags(project)) diff --git a/taiga/projects/services/tags_colors.py b/taiga/projects/services/tags_colors.py index ab47262c..52ac61ff 100644 --- a/taiga/projects/services/tags_colors.py +++ b/taiga/projects/services/tags_colors.py @@ -17,6 +17,7 @@ from django.conf import settings from taiga.projects.services.filters import get_all_tags +from taiga.projects.models import Project from hashlib import sha1 @@ -52,6 +53,8 @@ def update_project_tags_colors_handler(instance): new_color = _get_new_color(tag, settings.TAGS_PREDEFINED_COLORS, exclude=used_colors) instance.project.tags_colors.append([tag, new_color]) - + remove_unused_tags(instance.project) - instance.project.save() + + if not isinstance(instance, Project): + instance.project.save()