From a35db80932e0d13cbc89adc6db97037d43363f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= Date: Fri, 9 Nov 2018 13:20:55 +0100 Subject: [PATCH] Set project on top on user projects list --- taiga/projects/apps.py | 8 ++++---- taiga/projects/signals.py | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/taiga/projects/apps.py b/taiga/projects/apps.py index 89977ccf..21d81c39 100644 --- a/taiga/projects/apps.py +++ b/taiga/projects/apps.py @@ -53,17 +53,17 @@ def connect_memberships_signals(): sender=apps.get_model("projects", "Membership"), dispatch_uid='membership_pre_delete') - # On membership object is deleted, update notify policies of all objects relation. - signals.post_save.connect(handlers.create_notify_policy, + # On membership object is created, reorder and create notify policies + signals.post_save.connect(handlers.membership_post_save, sender=apps.get_model("projects", "Membership"), - dispatch_uid='create-notify-policy') + dispatch_uid='membership_post_save') def disconnect_memberships_signals(): signals.pre_delete.disconnect(sender=apps.get_model("projects", "Membership"), dispatch_uid='membership_pre_delete') signals.post_save.disconnect(sender=apps.get_model("projects", "Membership"), - dispatch_uid='create-notify-policy') + dispatch_uid='membership_post_save') ## US Statuses Signals diff --git a/taiga/projects/signals.py b/taiga/projects/signals.py index 33bf4e59..b6a5f13c 100644 --- a/taiga/projects/signals.py +++ b/taiga/projects/signals.py @@ -18,6 +18,7 @@ from django.apps import apps from django.conf import settings +from django.db.models import F from taiga.projects.notifications.services import create_notify_policy_if_not_exists @@ -32,15 +33,21 @@ def membership_post_delete(sender, instance, using, **kwargs): instance.project.update_role_points() -## Notify policy +def membership_post_save(sender, instance, using, **kwargs): + if not instance.user: + return + create_notify_policy_if_not_exists(instance.project, instance.user) -def create_notify_policy(sender, instance, using, **kwargs): - if instance.user: - create_notify_policy_if_not_exists(instance.project, instance.user) + # Set project on top on user projects list + membership = apps.get_model("projects", "Membership") + membership.objects.filter(user=instance.user) \ + .update(user_order=F('user_order') + 1) + + membership.objects.filter(user=instance.user, project=instance.project)\ + .update(user_order=0) ## Project attributes - def project_post_save(sender, instance, created, **kwargs): """ Populate new project dependen default data