Rework some of the payment sign up system

This commit is contained in:
Oliver Marks 2017-10-02 22:38:26 +01:00
parent c1ed938b04
commit d642109c13
4 changed files with 11 additions and 9 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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,

View File

@ -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 = (