Adding tag support for projects

remotes/origin/enhancement/email-actions
Alejandro Alonso 2015-04-24 08:15:46 +02:00 committed by David Barragán Merino
parent f0d53c7bd7
commit 58734af321
3 changed files with 20 additions and 2 deletions

View File

@ -45,3 +45,9 @@ class ProjectsAppConfig(AppConfig):
signals.post_save.connect(handlers.project_post_save, signals.post_save.connect(handlers.project_post_save,
sender=apps.get_model("projects", "Project"), sender=apps.get_model("projects", "Project"),
dispatch_uid='project_post_save') 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"))

View File

@ -18,6 +18,14 @@ from contextlib import closing
from django.db import connection 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): def _get_stories_tags(project):
result = set() result = set()
for tags in project.user_stories.values_list("tags", flat=True): for tags in project.user_stories.values_list("tags", flat=True):
@ -157,6 +165,7 @@ def get_all_tags(project):
tags found on it. tags found on it.
""" """
result = set() result = set()
result.update(_get_project_tags(project))
result.update(_get_issues_tags(project)) result.update(_get_issues_tags(project))
result.update(_get_stories_tags(project)) result.update(_get_stories_tags(project))
result.update(_get_tasks_tags(project)) result.update(_get_tasks_tags(project))

View File

@ -17,6 +17,7 @@
from django.conf import settings from django.conf import settings
from taiga.projects.services.filters import get_all_tags from taiga.projects.services.filters import get_all_tags
from taiga.projects.models import Project
from hashlib import sha1 from hashlib import sha1
@ -54,4 +55,6 @@ def update_project_tags_colors_handler(instance):
instance.project.tags_colors.append([tag, new_color]) instance.project.tags_colors.append([tag, new_color])
remove_unused_tags(instance.project) remove_unused_tags(instance.project)
if not isinstance(instance, Project):
instance.project.save() instance.project.save()