View structure for adding items to cart

This commit is contained in:
Raphael Michel
2015-02-12 12:14:28 +01:00
parent a31602bad9
commit 260266f2d9
5 changed files with 110 additions and 62 deletions

View File

@@ -155,6 +155,14 @@ DEFAULT_CURRENCY = 'EUR'
INTERNAL_IPS = ('127.0.0.1', '::1') INTERNAL_IPS = ('127.0.0.1', '::1')
from django.contrib.messages import constants as messages # NOQA
MESSAGE_TAGS = {
messages.INFO: 'alert-info',
messages.ERROR: 'alert-danger',
messages.WARNING: 'alert-warning',
messages.SUCCESS: 'alert-success',
}
try: try:
from local_settings import * # NOQA from local_settings import * # NOQA
except ImportError: except ImportError:

View File

@@ -17,6 +17,13 @@
<body> <body>
<div class="container event"> <div class="container event">
<h1>{{ event.name }} <small>{{ event.date_from|date }}{% if event.show_date_to %} {{ event.date_to|date }}{% endif %}</small></h1> <h1>{{ event.name }} <small>{{ event.date_from|date }}{% if event.show_date_to %} {{ event.date_to|date }}{% endif %}</small></h1>
{% if messages %}
{% for message in messages %}
<div class="alert {{ message.tags }}">
{{ message }}
</div>
{% endfor %}
{% endif %}
{% block content %} {% block content %}
{% endblock %} {% endblock %}
</div> </div>

View File

@@ -2,6 +2,9 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
<form method="post"
action="{% url "presale:event.cart.add" organizer=request.event.organizer.slug event=request.event.slug %}?next={{ request.path_info|urlencode }}">
{% csrf_token %}
{% for tup in items_by_category %} {% for tup in items_by_category %}
<section> <section>
<h3>{{ tup.0.name }}</h3> <h3>{{ tup.0.name }}</h3>
@@ -30,7 +33,8 @@
{% if var.cached_availability.0 == 100 %} {% if var.cached_availability.0 == 100 %}
<div class="col-md-2 col-xs-6 availability-box available"> <div class="col-md-2 col-xs-6 availability-box available">
<input type="number" class="form-control input-item-count" placeholder="0" min="0" <input type="number" class="form-control input-item-count" placeholder="0" min="0"
max="{{ var.cached_availability.1 }}"> max="{{ var.cached_availability.1 }}"
name="variation_{{ var.variation.identity }}">
</div> </div>
{% else %} {% else %}
{% include "pretixpresale/event/fragment_availability.html" with avail=var.cached_availability.0 %} {% include "pretixpresale/event/fragment_availability.html" with avail=var.cached_availability.0 %}
@@ -55,7 +59,7 @@
{% if item.cached_availability.0 == 100 %} {% if item.cached_availability.0 == 100 %}
<div class="col-md-2 col-xs-6 availability-box available"> <div class="col-md-2 col-xs-6 availability-box available">
<input type="number" class="form-control input-item-count" placeholder="0" min="0" <input type="number" class="form-control input-item-count" placeholder="0" min="0"
max="{{ item.cached_availability.1 }}"> max="{{ item.cached_availability.1 }}" name="item_{{ item.identity }}">
</div> </div>
{% else %} {% else %}
{% include "pretixpresale/event/fragment_availability.html" with avail=item.cached_availability.0 %} {% include "pretixpresale/event/fragment_availability.html" with avail=item.cached_availability.0 %}
@@ -69,9 +73,10 @@
<div class="row-fluid checkout-button-row"> <div class="row-fluid checkout-button-row">
<div class="col-md-4 col-md-offset-8"> <div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg"> <button class="btn btn-block btn-primary btn-lg">
<i class="fa fa-shopping-cart"></i> {% trans "Proceed with checkout" %} <i class="fa fa-shopping-cart"></i> {% trans "Add to cart" %}
</button> </button>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</form>
{% endblock %} {% endblock %}

View File

@@ -1,14 +1,15 @@
from django.conf.urls import patterns, url, include from django.conf.urls import patterns, url, include
import pretixpresale.views.event import pretixpresale.views.event
import pretixpresale.views.cart
urlpatterns = patterns('',) urlpatterns = patterns(
urlpatterns += patterns( '',
'pretixpresale.views.event',
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include( url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(
patterns( patterns(
'pretixpresale.views', 'pretixpresale.views.event',
url(r'^$', pretixpresale.views.event.EventIndex.as_view(), name='event.index'), url(r'^$', pretixpresale.views.event.EventIndex.as_view(), name='event.index'),
url(r'^cart/add$', pretixpresale.views.cart.CartAdd.as_view(), name='event.cart.add'),
) )
)) )),
) )

View File

@@ -0,0 +1,27 @@
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
from django.views.generic import View
from django.utils.translation import ugettext_lazy as _
from .event import EventViewMixin
class CartActionMixin:
def get_success_url(self):
if "next" in self.request.GET and '://' not in self.request.GET:
return self.request.GET.get('next')
else:
return reverse('presale:event.index', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
class CartAdd(EventViewMixin, CartActionMixin, View):
def post(self, *args, **kwargs):
messages.error(self.request, _('Cart is not yet implemented'))
print("hi")
return redirect(self.get_success_url())