From 9169c0dd52e49dd3cb54346a63bea36a1bb4c355 Mon Sep 17 00:00:00 2001 From: Oliver Marks Date: Sat, 7 Oct 2017 13:00:17 +0100 Subject: [PATCH] Fixed amount display so its in pounds not pence, fixed cancel --- mhackspace/subscriptions/helper.py | 4 +++- .../commands/update_membership_status.py | 5 ----- mhackspace/subscriptions/payments.py | 18 +++++++----------- mhackspace/subscriptions/views.py | 12 ++++++------ 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/mhackspace/subscriptions/helper.py b/mhackspace/subscriptions/helper.py index dee8d5b..5a74b84 100644 --- a/mhackspace/subscriptions/helper.py +++ b/mhackspace/subscriptions/helper.py @@ -25,7 +25,9 @@ def create_or_update_membership(user, signup_details, complete=False): member.user = user if complete is True: - member.status = MEMBERSHIP_ACTIVE + member.status = MEMBERSHIP_CANCELLED + if signup_details.get('status') == 'active': + member.status = MEMBERSHIP_ACTIVE member.email = signup_details.get('email') member.reference = signup_details.get('reference') member.payment = signup_details.get('amount') diff --git a/mhackspace/subscriptions/management/commands/update_membership_status.py b/mhackspace/subscriptions/management/commands/update_membership_status.py index f3accb9..b39dad4 100644 --- a/mhackspace/subscriptions/management/commands/update_membership_status.py +++ b/mhackspace/subscriptions/management/commands/update_membership_status.py @@ -14,14 +14,9 @@ def update_subscriptions(provider_name): provider = select_provider('gocardless') Membership.objects.all().delete() - - group = Group.objects.get(name='members') - for sub in provider.fetch_subscriptions(): try: user_model = User.objects.get(email=sub.get('email')) - if sub.get('status') == 'active': - user_model.groups.add(group) except User.DoesNotExist: user_model = None diff --git a/mhackspace/subscriptions/payments.py b/mhackspace/subscriptions/payments.py index 641d952..0e892fd 100644 --- a/mhackspace/subscriptions/payments.py +++ b/mhackspace/subscriptions/payments.py @@ -53,16 +53,16 @@ class gocardless_provider: def fetch_subscriptions(self): # for paying_member in self.client.mandates.list().records: for paying_member in self.client.subscriptions.list().records: - mandate=self.client.mandates.get(paying_member.links.mandate) - user=self.client.customers.get(mandate.links.customer) + mandate = self.client.mandates.get(paying_member.links.mandate) + user = self.client.customers.get(mandate.links.customer) # gocardless does not have a reference so we use the id instead yield { 'status': paying_member.status, 'email': user.email, 'start_date': paying_member.created_at, - 'reference': mandate.id, - 'amount': paying_member.amount} + 'reference': paying_member.id, + 'amount': paying_member.amount * 0.01} def get_redirect_url(self): return payment_providers['gocardless']['redirect_url'] @@ -89,7 +89,7 @@ class gocardless_provider: 'amount': subscription.amount, 'start_date': subscription.created_at, 'reference': subscription.id, - 'success': True if response.get('status_code') is '200' else False + 'success': True if response.status == 'cancelled' else False } def create_subscription(self, user, session, amount, @@ -110,12 +110,7 @@ class gocardless_provider: def confirm_subscription(self, membership, session, provider_response, name, interval_unit='monthly', interval_length='1'): r = provider_response.get('redirect_flow_id') - - # response = self.client.redirect_flows.complete(r, params={ - # "session_token": session - # }) response = self.client.redirect_flows.complete(r, params={'session_token': session}) - # response = self.client.redirect_flows.get(provider_response.get('redirect_flow_id')) user_id = response.links.customer mandate_id = response.links.mandate @@ -138,7 +133,8 @@ class gocardless_provider: 'amount': membership.payment, 'email': user.email, 'start_date': subscription_response.created_at, - 'reference': mandate_id, + 'reference': subscription_response.id, + 'status': subscription_response.status, 'success': subscription_response.api_response.status_code } diff --git a/mhackspace/subscriptions/views.py b/mhackspace/subscriptions/views.py index bef25b9..4e63a56 100644 --- a/mhackspace/subscriptions/views.py +++ b/mhackspace/subscriptions/views.py @@ -32,12 +32,12 @@ class MembershipCancelView(LoginRequiredMixin, RedirectView): reference=member.reference ) - # if result.get('success') is True: - cancel_membership(user=self.request.user) - messages.add_message( - self.request, - messages.SUCCESS, - 'Your membership has now been cancelled') + if result.get('success') is True: + cancel_membership(user=self.request.user) + messages.add_message( + self.request, + messages.SUCCESS, + 'Your membership has now been cancelled') kwargs['username'] = self.request.user.get_username() return super(MembershipCancelView, self).get_redirect_url(*args, **kwargs)