Implemented payment success and failure urls
This commit is contained in:
parent
6fec0e64bd
commit
2a9eade76d
|
@ -9,7 +9,7 @@ from django.views.generic import TemplateView
|
||||||
from django.views import defaults as default_views
|
from django.views import defaults as default_views
|
||||||
from mhackspace.contact.views import contact
|
from mhackspace.contact.views import contact
|
||||||
from mhackspace.members.views import MemberListView
|
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
|
from mhackspace.base.feeds import LatestEntriesFeed
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
@ -33,7 +33,9 @@ urlpatterns = [
|
||||||
# Your stuff: custom urls includes go here
|
# Your stuff: custom urls includes go here
|
||||||
url(r'^latest/$', LatestEntriesFeed()),
|
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<provider>[\w\-]+)/success$', subscription.MembershipJoinSuccessView.as_view(), name='join_hackspace_success'),
|
||||||
|
url(r'membership/(?P<provider>\w{0,50})/failure$', subscription.MembershipJoinFailureView.as_view(), name='join_hackspace_failure'),
|
||||||
|
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,7 @@
|
||||||
background-image: url('/static/images/membership_card_background.png');
|
background-image: url('/static/images/membership_card_background.png');
|
||||||
width: 430px;
|
width: 430px;
|
||||||
height: 240px;
|
height: 240px;
|
||||||
margin-left: 20px;
|
margin: auto;
|
||||||
text-shadow: 1px 1px #FFF;
|
text-shadow: 1px 1px #FFF;
|
||||||
position: relative;
|
position: relative;
|
||||||
float: right;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,12 @@ from django.conf import settings
|
||||||
from django.contrib.auth.models import AbstractUser
|
from django.contrib.auth.models import AbstractUser
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.contrib import messages
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.shortcuts import redirect
|
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 django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
|
|
||||||
from mhackspace.users.models import User
|
from mhackspace.users.models import User
|
||||||
|
@ -37,8 +38,8 @@ class MembershipJoinView(LoginRequiredMixin, UpdateView):
|
||||||
form_subscription = MembershipJoinForm(data=self.request.POST)
|
form_subscription = MembershipJoinForm(data=self.request.POST)
|
||||||
form_subscription.is_valid()
|
form_subscription.is_valid()
|
||||||
|
|
||||||
success_url = '%s/profile/membership/%s/success' % (app_domain, payment_provider)
|
success_url = '%s/membership/%s/success' % (app_domain, payment_provider)
|
||||||
failure_url = '%s/profile/membership/%s/failure' % (app_domain, payment_provider)
|
failure_url = '%s/membership/%s/failure' % (app_domain, payment_provider)
|
||||||
url = provider.create_subscription(
|
url = provider.create_subscription(
|
||||||
amount=form_subscription.cleaned_data.get('amount', 20.00),
|
amount=form_subscription.cleaned_data.get('amount', 20.00),
|
||||||
name="Membership your membership id is MH%s" % user_code,
|
name="Membership your membership id is MH%s" % user_code,
|
||||||
|
@ -47,3 +48,31 @@ class MembershipJoinView(LoginRequiredMixin, UpdateView):
|
||||||
)
|
)
|
||||||
|
|
||||||
return redirect(url)
|
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)
|
||||||
|
|
|
@ -25,20 +25,24 @@
|
||||||
<p>Amount: £{{membership.payment}}</p>
|
<p>Amount: £{{membership.payment}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
{% if membership.get_status %}
|
||||||
<div id="membercard" class="registered">
|
<div id="membercard" class="registered">
|
||||||
<div class="date">Joined {{membership.date}}</div>
|
<div class="date">Joined {{membership.date}}</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
|
<p>MHS{{ user.id|stringformat:"05d" }}</p><p>{{user.name}}{{user.last_name}}</p>
|
||||||
|
<a href="/profile/membership/cancel">Cancel Membership</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div>
|
||||||
|
<h2>Sign up below</h2>
|
||||||
<form method="POST" action="{% url 'join_hackspace' %}" class="contact_us_form">
|
<form method="POST" action="{% url 'join_hackspace' %}" class="contact_us_form">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ membership_form|crispy }}
|
{{ membership_form|crispy }}
|
||||||
<button class="btn btn-primary" type="submit" name="action">{% trans "Send" %}</button>
|
<button class="btn btn-primary" type="submit" name="action">{% trans "Send" %}</button>
|
||||||
</form>
|
</form>
|
||||||
<p>MHS{{ user.id|stringformat:"05d" }}</p><p>{{user.name}}{{user.last_name}}</p>
|
|
||||||
<a href="/profile/membership/cancel">Cancel Membership</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue