Skip to content
This repository has been archived by the owner on Jan 19, 2021. It is now read-only.

Commit

Permalink
[Fix bug 1283103] Deprecate basket subscriptions for functional areas
Browse files Browse the repository at this point in the history
  • Loading branch information
johngian committed Jun 29, 2016
1 parent 218d503 commit 02f8fc5
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 44 deletions.
47 changes: 16 additions & 31 deletions mozillians/groups/models.py
Expand Up @@ -11,7 +11,6 @@
from mozillians.groups.managers import GroupBaseManager, GroupQuerySet
from mozillians.groups.templatetags.helpers import slugify
from mozillians.groups.tasks import email_membership_change, member_removed_email
from mozillians.users.tasks import update_basket_task


class GroupBase(models.Model):
Expand Down Expand Up @@ -258,34 +257,23 @@ def add_member(self, userprofile, status=GroupMembership.MEMBER):
membership, created = GroupMembership.objects.get_or_create(userprofile=userprofile,
group=self,
defaults=defaults)
if created:
if status == GroupMembership.MEMBER:
# Joined
# Group is functional area, we want to sent this update to Basket
if self.functional_area:
update_basket_task.delay(userprofile.id)
else:
if membership.status != status:
if membership.status != status:
# Status changed
# The only valid status change states are:
# PENDING to MEMBER
# PENDING to PENDING_TERMS
# PENDING_TERMS to MEMBER

old_status = membership.status
membership.status = status
statuses = [(GroupMembership.PENDING, GroupMembership.MEMBER),
(GroupMembership.PENDING, GroupMembership.PENDING_TERMS),
(GroupMembership.PENDING_TERMS, GroupMembership.MEMBER)]
if (old_status, status) in statuses:
# Status changed
# The only valid status change states are:
# PENDING to MEMBER
# PENDING to PENDING_TERMS
# PENDING_TERMS to MEMBER

old_status = membership.status
membership.status = status
statuses = [(GroupMembership.PENDING, GroupMembership.MEMBER),
(GroupMembership.PENDING, GroupMembership.PENDING_TERMS),
(GroupMembership.PENDING_TERMS, GroupMembership.MEMBER)]
if (old_status, status) in statuses:
# Status changed
membership.save()
if membership.status in [GroupMembership.PENDING, GroupMembership.MEMBER]:
if self.functional_area:
# Group is functional area, we want to sent this update to Basket.
update_basket_task.delay(userprofile.id)
email_membership_change.delay(self.pk, userprofile.user.pk,
old_status, status)
membership.save()
if membership.status in [GroupMembership.PENDING, GroupMembership.MEMBER]:
email_membership_change.delay(self.pk, userprofile.user.pk, old_status, status)

def remove_member(self, userprofile, send_email=True):
try:
Expand All @@ -294,9 +282,6 @@ def remove_member(self, userprofile, send_email=True):
return
old_status = membership.status
membership.delete()
# If group is functional area, we want to sent this update to Basket
if self.functional_area:
update_basket_task.delay(userprofile.id)

if old_status == GroupMembership.PENDING and send_email:
# Request denied
Expand Down
17 changes: 4 additions & 13 deletions mozillians/groups/tests/test_views/test_misc.py
@@ -1,7 +1,6 @@
from django.core.urlresolvers import reverse
from django.test.client import Client

from mock import patch
from nose.tools import eq_, ok_

from mozillians.common.tests import TestCase, requires_login, requires_vouch
Expand All @@ -22,44 +21,36 @@ def setUp(self):
kwargs={'url': self.group.url,
'user_pk': self.user.userprofile.pk})

@patch('mozillians.groups.models.update_basket_task.delay')
def test_group_subscription(self, basket_task_mock):
def test_group_subscription(self):
with self.login(self.user) as client:
client.post(self.join_url, follow=True)
group = Group.objects.get(id=self.group.id)
ok_(group.members.filter(id=self.user.userprofile.id).exists())
basket_task_mock.assert_called_with(self.user.userprofile.id)

@patch('mozillians.groups.models.update_basket_task.delay')
def test_group_subscription_terms(self, basket_task_mock):
def test_group_subscription_terms(self):
group = GroupFactory.create(terms='Example terms')
join_url = reverse('groups:join_group', prefix='/en-US/', kwargs={'url': group.url})
with self.login(self.user) as client:
client.post(join_url, follow=True)

membership = group.groupmembership_set.get(userprofile=self.user.userprofile)
eq_(membership.status, GroupMembership.PENDING_TERMS)
basket_task_mock.assert_called_with(self.user.userprofile.id)

@patch('mozillians.groups.models.update_basket_task.delay')
def test_group_subscription_terms_by_request(self, basket_task_mock):
def test_group_subscription_terms_by_request(self):
group = GroupFactory.create(accepting_new_members='by_request', terms='Example terms')
join_url = reverse('groups:join_group', prefix='/en-US/', kwargs={'url': group.url})
with self.login(self.user) as client:
client.post(join_url, follow=True)

membership = group.groupmembership_set.get(userprofile=self.user.userprofile)
eq_(membership.status, GroupMembership.PENDING)
basket_task_mock.assert_called_with(self.user.userprofile.id)

@patch('mozillians.groups.models.update_basket_task.delay')
def test_group_unsubscription(self, basket_task_mock):
def test_group_unsubscription(self):
self.group.add_member(self.user.userprofile)
with self.login(self.user) as client:
client.post(self.leave_url, follow=True)
group = Group.objects.get(id=self.group.id)
ok_(not group.members.filter(id=self.user.userprofile.id).exists())
basket_task_mock.assert_called_with(self.user.userprofile.id)

def test_nonexistant_group(self):
url = reverse('groups:join_group', prefix='/en-US/',
Expand Down

0 comments on commit 02f8fc5

Please sign in to comment.