First cut at doing payment integration and understanding how to use class-based generic views

pull/1/head
Raymond Yee 2011-10-12 10:47:48 -07:00
parent 7e4f0a222b
commit f01d0c4df3
6 changed files with 112 additions and 9 deletions

View File

@ -38,4 +38,4 @@ class UserData(forms.Form):
raise forms.ValidationError(_("Your username is already "+oldusername))
class CampaignPledgeForm(forms.Form):
pledge_amount = forms.DecimalField(min_value=D('0.00'), max_value=D('10000.00'), decimal_places=2)
pledge_amount = forms.DecimalField(initial=D('20.00'), min_value=D('0.00'), max_value=D('10000.00'), decimal_places=2)

View File

@ -6,10 +6,11 @@
<p>Work: {{campaign.work}}</p>
<p>Target: {{campaign.target}}</p>
<p>Deadline: {{campaign.deadline}}</p>
<p>Pledge form:</p>
<form method="POST" action="/testpledge?campaign={{campaign.id}}">
<form method="POST" action="{% url campaign_by_id pk=campaign.id %}">
{% csrf_token %}
<input type="text" name="pledge_amount" value="20.00"/>
<!--<input type="text" name="pledge_amount" value="20.00"/> -->
{{form.as_p}}
<input type="submit" value="Pledge" />
</form>
<p class="extra">Message:{{message}}</p>
{% endblock %}

View File

@ -7,5 +7,5 @@
<li><a href="{% url campaign_by_id pk=campaign.id %}">{{ campaign.name }}</a></li>
{% endfor %}
</ul>
<p class="extra">Message:{{campaign_list.message}}</p>
{% endblock %}

View File

@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block content %}
<h1>RYlearn</h1>
<p class="classname">Message:{{message}}</p>
{% endblock %}

View File

@ -4,7 +4,7 @@ from django.views.generic.base import TemplateView
from django.views.generic import ListView, DetailView
from regluit.core.models import Campaign
from regluit.frontend.views import CampaignDetailView
from regluit.frontend.views import CampaignDetailView, RYLearnView, CampaignFormView, CampaignFormView2
urlpatterns = patterns(
"regluit.frontend.views",
@ -14,9 +14,15 @@ urlpatterns = patterns(
url(r"^privacy/$", TemplateView.as_view(template_name="privacy.html"),
name="privacy"),
url(r"^rightsholders/$", TemplateView.as_view(template_name="rhtools.html"),
name="rightsholders"),
name="rightsholders"),
url(r"^wishlist/$", "wishlist", name="wishlist"),
url(r"^rylearn0/$", "rylearn0", name="rylearn0"),
url(r"^rylearn1/$", direct_to_template, {'template': 'rylearn.html', 'extra_context':{'message':'hello there from rylearn1'}}, name="rylearn"),
url(r"^rylearn2/$", RYLearnView.as_view(),name="rylearn2"),
url(r"^campaigns/$", ListView.as_view(
model=Campaign,template_name="campaign_list.html", context_object_name="campaign_list")),
url(r'^campaigns/(?P<pk>\d+)/$', CampaignDetailView.as_view(), name="campaign_by_id"),
url(r"^campaigns/(?P<pk>\d+)/$",CampaignFormView2.as_view(), name="campaign_by_id")
)
# url(r'^campaigns/(?P<pk>\d+)/$', CampaignDetailView.as_view(), name="campaign_by_id"),
# url(r"^campaigns/(?P<pk>\d+)/$","campaign_detail", name="campaign_by_id")

View File

@ -3,9 +3,12 @@ from django.contrib.auth.models import User
# from django.contrib.auth.forms import UserChangeForm
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from django.views.generic import ListView, DetailView
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, render_to_response, get_object_or_404
@ -13,6 +16,10 @@ from regluit.core import models, bookloader
from regluit.core.search import gluejar_search
from regluit.frontend.forms import UserData
from regluit.frontend.forms import CampaignPledgeForm
import logging
logger = logging.getLogger(__name__)
def home(request):
if request.user.is_authenticated():
@ -93,5 +100,85 @@ class CampaignDetailView(DetailView):
model=models.Campaign
template_name="campaign_detail.html"
context_object_name = "campaign"
name="campaign_by_id"
def get_context_data(self, **kwargs):
context = super(CampaignDetailView, self).get_context_data(**kwargs)
form = CampaignPledgeForm()
context.update({
'message': 'hello there from CampaignDetailView',
'form': form
})
return context
def campaign_detail(request, pk):
campaign = models.Campaign.objects.get(id=int(pk))
if request.method == 'POST':
form = CampaignPledgeForm(request.POST)
if form.is_valid():
pledge_amount = request.POST["pledge_amount"]
return HttpResponseRedirect('/testpledge?campaign=%s&pledge_amount=%s' % (str(pk),str(pledge_amount)))
else:
form = CampaignPledgeForm()
return render(request,'campaign_detail.html', {'campaign':campaign, 'form':form, 'message':'hello little monsters'})
class CampaignFormView(FormView):
template_name="campaign_detail.html"
form_class = CampaignPledgeForm
def get_context_data(self, **kwargs):
pk = self.kwargs["pk"]
campaign = models.Campaign.objects.get(id=int(pk))
context = super(CampaignFormView, self).get_context_data(**kwargs)
context.update({
'message': 'hello little monsters',
'campaign': campaign
})
return context
def post(self, request, *args, **kwargs):
pk = self.kwargs["pk"]
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
pledge_amount = request.POST["pledge_amount"]
return HttpResponseRedirect('/testpledge?campaign=%s&pledge_amount=%s' % (str(pk),str(pledge_amount)))
else:
return self.form_invalid(form)
class CampaignFormView2(FormView):
template_name="campaign_detail.html"
form_class = CampaignPledgeForm
def get_context_data(self, **kwargs):
pk = self.kwargs["pk"]
campaign = models.Campaign.objects.get(id=int(pk))
context = super(CampaignFormView2, self).get_context_data(**kwargs)
context.update({
'message': 'hello little monsters',
'campaign': campaign
})
return context
def get_success_url(self):
pk = self.kwargs["pk"]
pledge_amount = self.request.POST["pledge_amount"]
return '/testpledge?campaign=%s&pledge_amount=%s' % (str(pk),str(pledge_amount))
def rylearn0(request):
#return HttpResponse("hello")
# https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response
#return render_to_response("rylearn.html", {'message':'hello there from rylearn0'})
return render(request,'rylearn.html', {'message':'hello there from rylearn0'})
class RYLearnView(TemplateView):
template_name = "rylearn.html"
def get_context_data(self, **kwargs):
context = super(RYLearnView, self).get_context_data(**kwargs)
context.update({
'message': 'hello there from rylearn2'
})
return context