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)) raise forms.ValidationError(_("Your username is already "+oldusername))
class CampaignPledgeForm(forms.Form): 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>Work: {{campaign.work}}</p>
<p>Target: {{campaign.target}}</p> <p>Target: {{campaign.target}}</p>
<p>Deadline: {{campaign.deadline}}</p> <p>Deadline: {{campaign.deadline}}</p>
<p>Pledge form:</p> <form method="POST" action="{% url campaign_by_id pk=campaign.id %}">
<form method="POST" action="/testpledge?campaign={{campaign.id}}">
{% csrf_token %} {% 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" /> <input type="submit" value="Pledge" />
</form> </form>
<p class="extra">Message:{{message}}</p>
{% endblock %} {% endblock %}

View File

@ -7,5 +7,5 @@
<li><a href="{% url campaign_by_id pk=campaign.id %}">{{ campaign.name }}</a></li> <li><a href="{% url campaign_by_id pk=campaign.id %}">{{ campaign.name }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
<p class="extra">Message:{{campaign_list.message}}</p>
{% endblock %} {% 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 django.views.generic import ListView, DetailView
from regluit.core.models import Campaign from regluit.core.models import Campaign
from regluit.frontend.views import CampaignDetailView from regluit.frontend.views import CampaignDetailView, RYLearnView, CampaignFormView, CampaignFormView2
urlpatterns = patterns( urlpatterns = patterns(
"regluit.frontend.views", "regluit.frontend.views",
@ -14,9 +14,15 @@ urlpatterns = patterns(
url(r"^privacy/$", TemplateView.as_view(template_name="privacy.html"), url(r"^privacy/$", TemplateView.as_view(template_name="privacy.html"),
name="privacy"), name="privacy"),
url(r"^rightsholders/$", TemplateView.as_view(template_name="rhtools.html"), url(r"^rightsholders/$", TemplateView.as_view(template_name="rhtools.html"),
name="rightsholders"), name="rightsholders"),
url(r"^wishlist/$", "wishlist", name="wishlist"), 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( url(r"^campaigns/$", ListView.as_view(
model=Campaign,template_name="campaign_list.html", context_object_name="campaign_list")), 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.contrib.auth.forms import UserChangeForm
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST from django.views.decorators.http import require_POST
from django.views.generic import ListView, DetailView 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.contrib.auth.decorators import login_required
from django.shortcuts import render, render_to_response, get_object_or_404 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.core.search import gluejar_search
from regluit.frontend.forms import UserData from regluit.frontend.forms import UserData
from regluit.frontend.forms import CampaignPledgeForm
import logging
logger = logging.getLogger(__name__)
def home(request): def home(request):
if request.user.is_authenticated(): if request.user.is_authenticated():
@ -93,5 +100,85 @@ class CampaignDetailView(DetailView):
model=models.Campaign model=models.Campaign
template_name="campaign_detail.html" template_name="campaign_detail.html"
context_object_name = "campaign" 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