Issue #2916: When leaving a project I lose all my watched stuff (even from different projects)

remotes/origin/enhancement/email-actions
Alejandro Alonso 2015-06-23 12:49:36 +02:00 committed by David Barragán Merino
parent 109d3e19f4
commit 6a0b4687d8
2 changed files with 24 additions and 1 deletions

View File

@ -19,6 +19,7 @@ from django.conf import settings
from taiga.projects.services.tags_colors import update_project_tags_colors_handler, remove_unused_tags
from taiga.projects.notifications.services import create_notify_policy_if_not_exists
from taiga.base.utils.db import get_typename_for_model_class
####################################
@ -53,7 +54,13 @@ def update_watchers_on_membership_post_delete(sender, instance, using, **kwargs)
# instance.user can contain pointer to now
# removed object from a database.
for model in models:
model.watchers.through.objects.filter(user_id=instance.user_id).delete()
#filter(project=instance.project)
filter = {
"user_id": instance.user_id,
"%s__project"%(model._meta.model_name): instance.project,
}
model.watchers.through.objects.filter(**filter).delete()
def create_notify_policy(sender, instance, using, **kwargs):

View File

@ -212,6 +212,22 @@ def test_leave_project_invalid_membership(client):
assert response.status_code == 404
def test_leave_project_respect_watching_items(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create()
role = f.RoleFactory.create(project=project, permissions=["view_project"])
f.MembershipFactory.create(project=project, user=user, role=role)
issue = f.IssueFactory(owner=user)
issue.watchers=[user]
issue.save()
client.login(user)
url = reverse("projects-leave", args=(project.id,))
response = client.post(url)
assert response.status_code == 200
assert list(issue.watchers.all()) == [user]
def test_delete_membership_only_owner(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create()