diff --git a/mhackspace/base/tests.py b/mhackspace/base/tests.py new file mode 100644 index 0000000..3793b3d --- /dev/null +++ b/mhackspace/base/tests.py @@ -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) diff --git a/mhackspace/subscriptions/helper.py b/mhackspace/subscriptions/helper.py index 789d649..dee8d5b 100644 --- a/mhackspace/subscriptions/helper.py +++ b/mhackspace/subscriptions/helper.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals, absolute_import +import logging from datetime import datetime from django.contrib.auth.models import Group from django.utils.dateparse import parse_datetime from mhackspace.users.models import Membership from mhackspace.users.models import MEMBERSHIP_CANCELLED, MEMBERSHIP_ACTIVE +logger = logging.getLogger(__name__) + def create_or_update_membership(user, signup_details, complete=False): 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 # add user to group on success + if user: - group = Group.objects.get(name='members') - user.groups.add(group) + try: + group = Group.objects.get(name='members') + user.groups.add(group) + except: + logger.error('Members group does not exist') return True # Sign up finished diff --git a/mhackspace/subscriptions/management/commands/update_membership_status.py b/mhackspace/subscriptions/management/commands/update_membership_status.py index 56af20e..f3accb9 100644 --- a/mhackspace/subscriptions/management/commands/update_membership_status.py +++ b/mhackspace/subscriptions/management/commands/update_membership_status.py @@ -14,7 +14,6 @@ def update_subscriptions(provider_name): provider = select_provider('gocardless') Membership.objects.all().delete() - subscriptions = [] group = Group.objects.get(name='members') @@ -26,10 +25,10 @@ def update_subscriptions(provider_name): except User.DoesNotExist: user_model = None - create_or_update_membership(user=user_model, - signup_details=sub, - complete=True) - yield model_to_dict(subscriptions[-1]) + create_or_update_membership( + user=user_model, + signup_details=sub, + complete=True) class Command(BaseCommand): diff --git a/mhackspace/users/tasks.py b/mhackspace/users/tasks.py index 9a72ff8..d733d3e 100644 --- a/mhackspace/users/tasks.py +++ b/mhackspace/users/tasks.py @@ -4,5 +4,4 @@ from mhackspace.subscriptions.management.commands.update_membership_status impor @shared_task def update_users_memebership_status(): - for user in update_subscriptions(provider_name='gocardless'): - continue + update_subscriptions(provider_name='gocardless')