Removed CleanerVersion layer [backwards-incompatible!]

This commit is contained in:
Raphael Michel
2015-12-12 13:08:33 +01:00
parent 0c9c9dd22c
commit d133d2abff
85 changed files with 712 additions and 1089 deletions

View File

@@ -168,7 +168,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
aw.question_id: aw.answer for aw in cp.answers.all()
}
for q in cp.item.questions.all():
if q.required and q.identity not in answ:
if q.required and q.id not in answ:
if warn:
messages.warning(request, _('Please fill in answers to all required questions.'))
return False
@@ -193,7 +193,7 @@ class PaymentStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
@cached_property
def _total_order_value(self):
return CartPosition.objects.current.filter(
return CartPosition.objects.filter(
Q(cart_id=self.request.session.session_key) & Q(event=self.request.event)
).aggregate(sum=Sum('price'))['sum']
@@ -300,15 +300,15 @@ class ConfirmStep(CartMixin, AsyncAction, TemplateFlowStep):
def post(self, request):
self.request = request
return self.do(self.request.event.identity, self.payment_provider.identifier,
[p.identity for p in self.positions], request.session.get('email'),
return self.do(self.request.event.id, self.payment_provider.identifier,
[p.id for p in self.positions], request.session.get('email'),
translation.get_language())
def get_success_message(self, value):
return None
def get_success_url(self, value):
order = Order.objects.current.get(identity=value)
order = Order.objects.get(id=value)
return self.get_order_url(order)
def get_error_message(self, exception):

View File

@@ -42,7 +42,7 @@ class QuestionsForm(forms.Form):
answers = [
a for a
in (cartpos.answers.all() if cartpos else orderpos.answers.all())
if a.question_id == q.identity
if a.question_id == q.id
]
if answers:
initial = answers[0].answer
@@ -73,4 +73,4 @@ class QuestionsForm(forms.Form):
if answers:
# Cache the answer object for later use
field.answer = answers[0]
self.fields['question_%s' % q.identity] = field
self.fields['question_%s' % q.id] = field

View File

@@ -26,7 +26,7 @@ class EventMiddleware:
path = "/" + request.get_full_path().split("/", 2)[-1]
return redirect(path)
request.event = Event.objects.current.filter(
request.event = Event.objects.filter(
slug=url.kwargs['event'],
organizer=request.organizer,
).select_related('organizer')[0]
@@ -34,13 +34,13 @@ class EventMiddleware:
else:
# We are on our main domain
if 'event' in url.kwargs and 'organizer' in url.kwargs:
request.event = Event.objects.current.filter(
request.event = Event.objects.filter(
slug=url.kwargs['event'],
organizer__slug=url.kwargs['organizer']
).select_related('organizer')[0]
request.organizer = request.event.organizer
elif 'organizer' in url.kwargs:
request.organizer = Organizer.objects.current.filter(
request.organizer = Organizer.objects.filter(
slug=url.kwargs['organizer']
)[0]
else:

View File

@@ -26,7 +26,7 @@
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#cp{{ form.pos.identity }}"
<a data-toggle="collapse" href="#cp{{ form.pos.id }}"
data-parent="#questions_accordion">
<strong>{{ form.pos.item.name }}</strong>
{% if form.pos.variation %}
@@ -35,7 +35,7 @@
</a>
</h4>
</div>
<div id="cp{{ form.pos.identity }}"
<div id="cp{{ form.pos.id }}"
class="panel-collapse collapsed in">
<div class="panel-body">
{% bootstrap_form form layout="horizontal" %}

View File

@@ -26,10 +26,10 @@
method="post">
{% csrf_token %}
{% if line.variation %}
<input type="hidden" name="variation_{{ line.item.identity }}_{{ line.variation.identity }}"
<input type="hidden" name="variation_{{ line.item.id }}_{{ line.variation.id }}"
value="1" />
{% else %}
<input type="hidden" name="item_{{ line.item.identity }}"
<input type="hidden" name="item_{{ line.item.id }}"
value="1" />
{% endif %}
<button class="btn btn-mini btn-link"><i class="fa fa-minus"></i></button>
@@ -41,10 +41,10 @@
method="post" data-asynctask>
{% csrf_token %}
{% if line.variation %}
<input type="hidden" name="variation_{{ line.item.identity }}_{{ line.variation.identity }}"
<input type="hidden" name="variation_{{ line.item.id }}_{{ line.variation.id }}"
value="1" />
{% else %}
<input type="hidden" name="item_{{ line.item.identity }}"
<input type="hidden" name="item_{{ line.item.id }}"
value="1" />
{% endif %}
<button class="btn btn-mini btn-link"><i class="fa fa-plus"></i></button>

View File

@@ -65,7 +65,7 @@
{% if item.picture %}
<a href="{{ item.picture.url }}" class="productpicture"
data-title="{{ item.name }}"
data-lightbox="{{ item.identity }}">
data-lightbox="{{ item.id }}">
<img src="{{ item.picture|thumbnail_url:'productlist' }}"
alt="{{ item.name }}" />
</a>
@@ -109,7 +109,7 @@
<div class="col-md-2 col-xs-6 availability-box available">
<input type="number" class="form-control input-item-count" placeholder="0" min="0"
max="{{ var.cached_availability.1 }}"
name="variation_{{ item.identity }}_{{ var.variation.identity }}">
name="variation_{{ item.id }}_{{ var.variation.id }}">
</div>
{% else %}
{% include "pretixpresale/event/fragment_availability.html" with avail=var.cached_availability.0 %}
@@ -125,7 +125,7 @@
{% if item.picture %}
<a href="{{ item.picture.url }}" class="productpicture"
data-title="{{ item.name }}"
data-lightbox="{{ item.identity }}">
data-lightbox="{{ item.id }}">
<img src="{{ item.picture|thumbnail_url:'productlist' }}"
alt="{{ item.name }}" />
</a>
@@ -144,7 +144,7 @@
{% if item.cached_availability.0 == 100 %}
<div class="col-md-2 col-xs-6 availability-box available">
<input type="number" class="form-control input-item-count" placeholder="0" min="0"
max="{{ item.cached_availability.1 }}" name="item_{{ item.identity }}">
max="{{ item.cached_availability.1 }}" name="item_{{ item.id }}">
</div>
{% else %}
{% include "pretixpresale/event/fragment_availability.html" with avail=item.cached_availability.0 %}

View File

@@ -15,7 +15,7 @@
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#cp{{ form.pos.identity }}"
<a data-toggle="collapse" href="#cp{{ form.pos.id }}"
data-parent="#questions_accordion">
<strong>{{ form.pos.item }}</strong>
{% if form.pos.variation %}
@@ -24,7 +24,7 @@
</a>
</h4>
</div>
<div id="cp{{ form.pos.identity }}"
<div id="cp{{ form.pos.id }}"
class="panel-collapse collapsed {% if forloop.counter0 == 0 %}in{% endif %}">
<div class="panel-body">
{% bootstrap_form form layout="horizontal" %}

View File

@@ -14,7 +14,7 @@ class CartMixin:
"""
A list of this users cart position
"""
return list(CartPosition.objects.current.filter(
return list(CartPosition.objects.filter(
cart_id=self.request.session.session_key, event=self.request.event
).order_by(
'item', 'variation'
@@ -26,7 +26,7 @@ class CartMixin:
))
def get_cart(self, answers=False, queryset=None, payment_fee=None):
queryset = queryset or CartPosition.objects.current.filter(
queryset = queryset or CartPosition.objects.filter(
cart_id=self.request.session.session_key, event=self.request.event
)
@@ -49,8 +49,8 @@ class CartMixin:
def keyfunc(pos):
if answers and ((pos.item.admission and self.request.event.settings.attendee_names_asked)
or pos.item.questions.all()):
return pos.id, "", "", ""
return "", pos.item_id, pos.variation_id, pos.price
return pos.id, 0, 0, 0
return 0, pos.item_id, pos.variation_id, pos.price
positions = []
for k, g in groupby(sorted(list(cartpos), key=keyfunc), key=keyfunc):

View File

@@ -37,13 +37,13 @@ class CartActionMixin:
continue
if key.startswith('item_'):
try:
items.append((key.split("_")[1], None, int(value)))
items.append((int(key.split("_")[1]), None, int(value)))
except ValueError:
messages.error(self.request, _('Please enter numbers only.'))
return []
elif key.startswith('variation_'):
try:
items.append((key.split("_")[1], key.split("_")[2], int(value)))
items.append((int(key.split("_")[1]), int(key.split("_")[2]), int(value)))
except ValueError:
messages.error(self.request, _('Please enter numbers only.'))
return []
@@ -60,7 +60,7 @@ class CartRemove(EventViewMixin, CartActionMixin, View):
if not items:
return redirect(self.get_error_url())
remove_items_from_cart(self.request.event.identity, items, self.request.session.session_key)
remove_items_from_cart(self.request.event.id, items, self.request.session.session_key)
messages.success(self.request, _('Your cart has been updated.'))
return redirect(self.get_success_url())
@@ -81,7 +81,7 @@ class CartAdd(EventViewMixin, CartActionMixin, AsyncAction, View):
def post(self, request, *args, **kwargs):
items = self._items_from_post_data()
if items:
return self.do(self.request.event.identity, items, self.request.session.session_key)
return self.do(self.request.event.id, items, self.request.session.session_key)
else:
if 'ajax' in self.request.GET or 'ajax' in self.request.POST:
return JsonResponse({

View File

@@ -59,7 +59,8 @@ class EventIndex(EventViewMixin, CartMixin, TemplateView):
# insert categories into a set for uniqueness
# a set is unsorted, so sort again by category
],
key=lambda group: (group[0].position, group[0].identity) if group[0] is not None else (0, "")
key=lambda group: (group[0].position, group[0].id) if (
group[0] is not None and group[0].id is not None) else (0, 0)
)
context['cart'] = self.get_cart()

View File

@@ -23,8 +23,8 @@ class OrderDetailMixin:
@cached_property
def order(self):
try:
return Order.objects.current.get(secret=self.kwargs['secret'],
event=self.request.event, code=self.kwargs['order'])
return Order.objects.get(secret=self.kwargs['secret'],
event=self.request.event, code=self.kwargs['order'])
except Order.DoesNotExist:
return None
@@ -80,7 +80,7 @@ class OrderDetails(EventViewMixin, OrderDetailMixin, CartMixin, TemplateView):
ctx['download_buttons'] = self.download_buttons
ctx['cart'] = self.get_cart(
answers=True,
queryset=OrderPosition.objects.current.filter(order=self.order)
queryset=OrderPosition.objects.filter(order=self.order)
)
if self.order.status == Order.STATUS_PENDING:
ctx['payment'] = self.payment_provider.order_pending_render(self.request, self.order)
@@ -251,9 +251,8 @@ class OrderCancel(EventViewMixin, OrderDetailMixin, TemplateView):
return super().dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
order = self.order.clone()
order.status = Order.STATUS_CANCELLED
order.save()
self.order.status = Order.STATUS_CANCELLED
self.order.save()
return redirect(self.get_order_url())
def get(self, request, *args, **kwargs):
@@ -302,5 +301,5 @@ class OrderDownload(EventViewMixin, OrderDetailMixin, View):
cf.save()
ct.cachedfile = cf
ct.save()
generate(self.order.identity, self.output.identifier)
generate(self.order.id, self.output.identifier)
return redirect(reverse('cachedfile.download', kwargs={'id': ct.cachedfile.id}))

View File

@@ -20,6 +20,6 @@ class OrganizerIndex(OrganizerViewMixin, ListView):
else:
query &= Q(Q(date_from__gte=now()) | Q(date_to__gte=now()))
order = 'date_from'
return Event.objects.current.filter(
return Event.objects.filter(
Q(organizer=self.request.organizer) & query
).order_by(order)

View File

@@ -17,7 +17,7 @@ class QuestionsViewMixin:
cartpos = cr if isinstance(cr, CartPosition) else None
orderpos = cr if isinstance(cr, OrderPosition) else None
form = QuestionsForm(event=self.request.event,
prefix=cr.identity,
prefix=cr.id,
cartpos=cartpos,
orderpos=orderpos,
data=(self.request.POST if self.request.method == 'POST' else None))
@@ -37,7 +37,6 @@ class QuestionsViewMixin:
# answers to the questions / in the CartPosition object
for k, v in form.cleaned_data.items():
if k == 'attendee_name':
form.pos = form.pos.clone()
form.pos.attendee_name = v if v != '' else None
form.pos.save()
elif k.startswith('question_') and v is not None:
@@ -48,7 +47,6 @@ class QuestionsViewMixin:
if v == '':
field.answer.delete()
else:
field.answer = field.answer.clone()
field.answer.answer = v
field.answer.save()
elif v != '':