diff --git a/mhackspace/subscriptions/helper.py b/mhackspace/subscriptions/helper.py index e3683dc..789d649 100644 --- a/mhackspace/subscriptions/helper.py +++ b/mhackspace/subscriptions/helper.py @@ -1,17 +1,20 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals, absolute_import +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 +from mhackspace.users.models import MEMBERSHIP_CANCELLED, MEMBERSHIP_ACTIVE def create_or_update_membership(user, signup_details, complete=False): + start_date = signup_details.get('start_date') + if not isinstance(start_date, datetime): + start_date = parse_datetime(start_date) try: member = Membership.objects.get(email=signup_details.get('email')) # Only update if newer than last record, this way we only get the latest status # cancellation and changed payment will not be counted against current status - start_date = parse_datetime(signup_details.get('start_date')) if start_date < member.date: return True except Membership.DoesNotExist: @@ -19,11 +22,11 @@ def create_or_update_membership(user, signup_details, complete=False): member.user = user if complete is True: - member.status = Membership.lookup_status(name=signup_details.get('status')) + member.status = MEMBERSHIP_ACTIVE member.email = signup_details.get('email') member.reference = signup_details.get('reference') member.payment = signup_details.get('amount') - member.date = signup_details.get('start_date') + member.date = start_date member.save() diff --git a/mhackspace/subscriptions/payments.py b/mhackspace/subscriptions/payments.py index fb1ec9c..641d952 100644 --- a/mhackspace/subscriptions/payments.py +++ b/mhackspace/subscriptions/payments.py @@ -114,14 +114,11 @@ class gocardless_provider: # response = self.client.redirect_flows.complete(r, params={ # "session_token": session # }) - response = self.client.redirect_flows.get(r) + response = self.client.redirect_flows.complete(r, params={'session_token': session}) # response = self.client.redirect_flows.get(provider_response.get('redirect_flow_id')) - # response = gocardless_pro.client.confirm_resource(provider_response) - # subscription = gocardless_pro.client.subscription(provider_response.get('resource_id')) user_id = response.links.customer mandate_id = response.links.mandate - # user = subscription.user() user = self.client.customers.get(response.links.customer) mandate = self.client.mandates.get(response.links.mandate) diff --git a/mhackspace/subscriptions/views.py b/mhackspace/subscriptions/views.py index 99d2851..bef25b9 100644 --- a/mhackspace/subscriptions/views.py +++ b/mhackspace/subscriptions/views.py @@ -106,6 +106,8 @@ class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView): ) # if something went wrong return to profile with an error + + result['start_date'] = timezone.now() if result.get('success') is False: messages.add_message( self.request, diff --git a/mhackspace/users/models.py b/mhackspace/users/models.py index 5507ec5..bd2031d 100644 --- a/mhackspace/users/models.py +++ b/mhackspace/users/models.py @@ -45,7 +45,7 @@ class Blurb(models.Model): skills = models.CharField(max_length=255) description = models.TextField() -MEMBERSHIP_ACTIVE = 4 +MEMBERSHIP_ACTIVE = 1 MEMBERSHIP_CANCELLED = 4 MEMBERSHIP_STATUS_CHOICES = (