From 2a9eade76d0637280e14e2503511200d8c424205 Mon Sep 17 00:00:00 2001 From: Oliver Marks Date: Thu, 9 Feb 2017 20:12:59 +0000 Subject: [PATCH] Implemented payment success and failure urls --- config/urls.py | 6 ++-- .../static/sass/components/_membership.scss | 3 +- mhackspace/subscriptions/views.py | 35 +++++++++++++++++-- mhackspace/templates/users/user_detail.html | 16 +++++---- 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/config/urls.py b/config/urls.py index 1a78dfb..9f340bb 100644 --- a/config/urls.py +++ b/config/urls.py @@ -9,7 +9,7 @@ from django.views.generic import TemplateView from django.views import defaults as default_views from mhackspace.contact.views import contact from mhackspace.members.views import MemberListView -from mhackspace.subscriptions.views import MembershipJoinView +from mhackspace.subscriptions import views as subscription from mhackspace.base.feeds import LatestEntriesFeed urlpatterns = [ @@ -33,7 +33,9 @@ urlpatterns = [ # Your stuff: custom urls includes go here url(r'^latest/$', LatestEntriesFeed()), - url(r'membership/join/$', MembershipJoinView.as_view(), name='join_hackspace'), + url(r'membership/join/$', subscription.MembershipJoinView.as_view(), name='join_hackspace'), + url(r'membership/(?P[\w\-]+)/success$', subscription.MembershipJoinSuccessView.as_view(), name='join_hackspace_success'), + url(r'membership/(?P\w{0,50})/failure$', subscription.MembershipJoinFailureView.as_view(), name='join_hackspace_failure'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/mhackspace/static/sass/components/_membership.scss b/mhackspace/static/sass/components/_membership.scss index 82c5205..be935e9 100644 --- a/mhackspace/static/sass/components/_membership.scss +++ b/mhackspace/static/sass/components/_membership.scss @@ -6,8 +6,7 @@ background-image: url('/static/images/membership_card_background.png'); width: 430px; height: 240px; - margin-left: 20px; + margin: auto; text-shadow: 1px 1px #FFF; position: relative; - float: right; } diff --git a/mhackspace/subscriptions/views.py b/mhackspace/subscriptions/views.py index d166eb6..6b9eb9f 100644 --- a/mhackspace/subscriptions/views.py +++ b/mhackspace/subscriptions/views.py @@ -5,11 +5,12 @@ from django.conf import settings from django.contrib.auth.models import AbstractUser from django.core.urlresolvers import reverse from django.db import models +from django.contrib import messages from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ from django.shortcuts import redirect -from django.views.generic import UpdateView +from django.views.generic import UpdateView, RedirectView from django.contrib.auth.mixins import LoginRequiredMixin from mhackspace.users.models import User @@ -37,8 +38,8 @@ class MembershipJoinView(LoginRequiredMixin, UpdateView): form_subscription = MembershipJoinForm(data=self.request.POST) form_subscription.is_valid() - success_url = '%s/profile/membership/%s/success' % (app_domain, payment_provider) - failure_url = '%s/profile/membership/%s/failure' % (app_domain, payment_provider) + success_url = '%s/membership/%s/success' % (app_domain, payment_provider) + failure_url = '%s/membership/%s/failure' % (app_domain, payment_provider) url = provider.create_subscription( amount=form_subscription.cleaned_data.get('amount', 20.00), name="Membership your membership id is MH%s" % user_code, @@ -47,3 +48,31 @@ class MembershipJoinView(LoginRequiredMixin, UpdateView): ) return redirect(url) + + +class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView): + permanent = False + pattern_name = 'users:detail' + + def get_redirect_url(self, *args, **kwargs): + del(kwargs['provider']) + messages.add_message( + self.request, + messages.SUCCESS, + 'Success your membership should now be active') + kwargs['username'] = self.request.user.get_username() + return super(MembershipJoinSuccessView, self).get_redirect_url(*args, **kwargs) + + +class MembershipJoinFailureView(LoginRequiredMixin, RedirectView): + permanent = False + pattern_name = 'users:detail' + + def get_redirect_url(self, *args, **kwargs): + del(kwargs['provider']) + messages.add_message( + self.request, + messages.ERROR, + 'Failed to sign up something went wrong with your payment') + kwargs['username'] = self.request.user.get_username() + return super(MembershipJoinFailureView, self).get_redirect_url(*args, **kwargs) diff --git a/mhackspace/templates/users/user_detail.html b/mhackspace/templates/users/user_detail.html index bace9f0..34d728d 100644 --- a/mhackspace/templates/users/user_detail.html +++ b/mhackspace/templates/users/user_detail.html @@ -25,21 +25,25 @@

Amount: £{{membership.payment}}

+ {% if membership.get_status %}
Joined {{membership.date}}
- -
- {% csrf_token %} - {{ membership_form|crispy }} - -

MHS{{ user.id|stringformat:"05d" }}

{{user.name}}{{user.last_name}}

Cancel Membership
+ {% endif %} +
+

Sign up below

+
+ {% csrf_token %} + {{ membership_form|crispy }} + +
+