Reduce number of redundant SQL queries

This commit is contained in:
Raphael Michel
2016-11-06 19:59:19 +01:00
parent 5aa3ff0616
commit 7b48a17b51
9 changed files with 161 additions and 145 deletions

View File

@@ -31,26 +31,16 @@
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ quota.size }}{% endif %}
</div>
</div>
<div class="row">
<div class="col-xs-9">{% trans "Paid orders" %}</div>
<div class="col-xs-3 text-right"> {{ quota.count_paid_orders }}</div>
</div>
<div class="row">
<div class="col-xs-9">{% trans "Pending orders" %}</div>
<div class="col-xs-3 text-right"> {{ quota.count_pending_orders }}</div>
</div>
<div class="row">
<div class="col-xs-9">{% trans "Vouchers" %}</div>
<div class="col-xs-3 text-right"> {{ quota.count_blocking_vouchers }}</div>
</div>
<div class="row">
<div class="col-xs-9">{% trans "Current user's carts" %}</div>
<div class="col-xs-3 text-right"> {{ quota.count_in_cart }}</div>
</div>
{% for row in quota_table_rows %}
<div class="row">
<div class="col-xs-9">{{ row.label }}</div>
<div class="col-xs-3 text-right"> {{ row.value }}</div>
</div>
{% endfor %}
<div class="row">
<div class="col-xs-9"><strong>{% trans "Current availability" %}</strong></div>
<div class="col-xs-3 text-right">
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ quota.availability.1 }}{% endif %}
{% if quota.size == None %}{% trans "Infinite" %}{% else %}{{ avail.1 }}{% endif %}
</div>
</div>
</div>

View File

@@ -330,8 +330,8 @@ class QuestionMixin:
can_order=False, can_delete=True, extra=0
)
return formsetclass(self.request.POST if self.request.method == "POST" else None,
queryset=(QuestionOption.objects.filter(question=self.get_object())
if self.get_object() else QuestionOption.objects.none()),
queryset=(QuestionOption.objects.filter(question=self.object)
if self.object else QuestionOption.objects.none()),
event=self.request.event)
def save_formset(self, obj):
@@ -423,8 +423,9 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
def get_context_data(self, **kwargs):
ctx = super().get_context_data()
ctx['items'] = self.object.items.all()
ctx['stats'] = self.get_answer_statistics()
ctx['stats_json'] = json.dumps(self.get_answer_statistics())
stats = self.get_answer_statistics()
ctx['stats'] = stats
ctx['stats_json'] = json.dumps(stats)
return ctx
def get_object(self, queryset=None) -> Question:
@@ -599,6 +600,10 @@ class QuotaView(ChartContainingView, DetailView):
def get_context_data(self, *args, **kwargs):
ctx = super().get_context_data()
avail = self.object.availability()
ctx['avail'] = avail
data = [
{
'label': ugettext('Paid orders'),
@@ -617,10 +622,12 @@ class QuotaView(ChartContainingView, DetailView):
'value': self.object.count_in_cart()
}
]
ctx['quota_table_rows'] = list(data)
if self.object.size is not None:
data.append({
'label': ugettext('Current availability'),
'value': self.object.availability()[1]
'value': avail[1]
})
ctx['quota_chart_data'] = json.dumps(data)
return ctx

View File

@@ -20,8 +20,8 @@ class EventList(ListView):
def get_queryset(self):
return Event.objects.filter(
permitted__id__exact=self.request.user.pk
).prefetch_related(
"organizer",
).select_related("organizer").prefetch_related(
"setting_objects", "organizer__setting_objects"
)