Handle members group not existing, change update loop it no longer needs to return

This commit is contained in:
Oly 2017-10-03 13:49:18 +01:00
parent d642109c13
commit 3c3f5436b4
4 changed files with 41 additions and 9 deletions

27
mhackspace/base/tests.py Normal file
View File

@ -0,0 +1,27 @@
from test_plus.test import TestCase
from mhackspace.users.models import Membership
from mhackspace.users.models import User
from django.contrib.auth.models import Group
from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
# this needs mocking
class TestTasks(TestCase):
def setUp(self):
self.user1 = self.make_user('u1')
self.user2 = self.make_user('u2')
self.group = Group(name='members')
self.group.save()
def test_refresh_subscriptions(self):
membership_count = Membership.objects.all().delete()
user_count = User.objects.all().count()
membership_count = Membership.objects.all().count()
self.assertEquals(0, membership_count)
self.assertEquals(2, user_count)
update_subscriptions(provider_name='gocardless')
membership_count = Membership.objects.all().count()
self.assertEquals(2, membership_count)
self.assertEquals(2, user_count)

View File

@ -1,11 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
import logging
from datetime import datetime from datetime import datetime
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.utils.dateparse import parse_datetime from django.utils.dateparse import parse_datetime
from mhackspace.users.models import Membership from mhackspace.users.models import Membership
from mhackspace.users.models import MEMBERSHIP_CANCELLED, MEMBERSHIP_ACTIVE from mhackspace.users.models import MEMBERSHIP_CANCELLED, MEMBERSHIP_ACTIVE
logger = logging.getLogger(__name__)
def create_or_update_membership(user, signup_details, complete=False): def create_or_update_membership(user, signup_details, complete=False):
start_date = signup_details.get('start_date') start_date = signup_details.get('start_date')
@ -34,9 +37,13 @@ def create_or_update_membership(user, signup_details, complete=False):
return False # sign up not completed return False # sign up not completed
# add user to group on success # add user to group on success
if user: if user:
try:
group = Group.objects.get(name='members') group = Group.objects.get(name='members')
user.groups.add(group) user.groups.add(group)
except:
logger.error('Members group does not exist')
return True # Sign up finished return True # Sign up finished

View File

@ -14,7 +14,6 @@ def update_subscriptions(provider_name):
provider = select_provider('gocardless') provider = select_provider('gocardless')
Membership.objects.all().delete() Membership.objects.all().delete()
subscriptions = []
group = Group.objects.get(name='members') group = Group.objects.get(name='members')
@ -26,10 +25,10 @@ def update_subscriptions(provider_name):
except User.DoesNotExist: except User.DoesNotExist:
user_model = None user_model = None
create_or_update_membership(user=user_model, create_or_update_membership(
user=user_model,
signup_details=sub, signup_details=sub,
complete=True) complete=True)
yield model_to_dict(subscriptions[-1])
class Command(BaseCommand): class Command(BaseCommand):

View File

@ -4,5 +4,4 @@ from mhackspace.subscriptions.management.commands.update_membership_status impor
@shared_task @shared_task
def update_users_memebership_status(): def update_users_memebership_status():
for user in update_subscriptions(provider_name='gocardless'): update_subscriptions(provider_name='gocardless')
continue