X-Git-Url: https://git.mdrn.pl/prawokultury.git/blobdiff_plain/d7089c0d33bbe9cd5b8bc67aa9d9022792db7309..91117520dbe0336cd5acc91c6d8e23d81141f9df:/shop/views.py diff --git a/shop/views.py b/shop/views.py new file mode 100644 index 0000000..16634e7 --- /dev/null +++ b/shop/views.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +from datetime import date +from django.views.decorators.cache import never_cache +from django.core.urlresolvers import reverse +from django.http import Http404 +from django.shortcuts import redirect, get_object_or_404 +from django.views.decorators.csrf import csrf_exempt +from django.views.generic import TemplateView, FormView, DetailView, ListView +import getpaid.backends.payu +from getpaid.models import Payment +from . import app_settings +from .forms import OrderForm +from .models import Offer, Order + + + +class OfferDetailView(FormView): + form_class = OrderForm + template_name = "shop/offer_detail.html" + backend = 'getpaid.backends.payu' + + @csrf_exempt + def dispatch(self, request, slug): + if getattr(self, 'object', None) is None: + lang = request.LANGUAGE_CODE + args = {'entry__slug_%s' % lang: slug} + self.object = get_object_or_404(Offer, **args) + return super(OfferDetailView, self).dispatch(request, slug) + + def get_context_data(self, *args, **kwargs): + ctx = super(OfferDetailView, self).get_context_data(*args, **kwargs) + ctx['entry'] = self.object.entry + return ctx + + def get_form(self, form_class): + if self.request.method == 'POST': + return form_class(self.object, self.request.POST) + else: + return form_class(self.object) + + def form_valid(self, form): + order = form.save() + # Skip getpaid.forms.PaymentMethodForm, go directly to the broker. + payment = Payment.create(order, self.backend) + gateway_url_tuple = payment.get_processor()(payment).get_gateway_url(self.request) + payment.change_status('in_progress') + return redirect(gateway_url_tuple[0]) + + +class ThanksView(TemplateView): + template_name = "shop/thanks.html" + + +class NoThanksView(TemplateView): + template_name = "shop/no_thanks.html"