Set project on top on user projects list

remotes/origin/4.0rc
Daniel García 2018-11-09 13:20:55 +01:00 committed by Alex Hermida
parent 1d6bc19e4a
commit 2cc666a53c
2 changed files with 16 additions and 9 deletions

View File

@ -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

View File

@ -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 create_notify_policy(sender, instance, using, **kwargs):
if instance.user:
def membership_post_save(sender, instance, using, **kwargs):
if not instance.user:
return
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