Copy the kpsul_checkout_data view from master

This commit is contained in:
Martin Pépin 2017-10-30 14:56:45 +01:00
parent 18dc063ae6
commit 30fcd1217a

View file

@ -864,30 +864,29 @@ def kpsul_checkout_data(request):
if not pk:
pk = 0
checkout = get_object_or_404(Checkout, pk=pk)
data = {
'id': checkout.id, 'name': checkout.name, 'balance': checkout.balance,
'valid_from': checkout.valid_from, 'valid_to': checkout.valid_to
}
try:
last_statement = (
CheckoutStatement
.objects
.select_related('by', 'by__profile', 'by__profile__user')
.filter(checkout=checkout)
.latest('at')
)
data['last_statement_balance'] = last_statement.balance_new
data['last_statement_at'] = last_statement.at
data['last_statement_by_trigramme'] = last_statement.by.trigramme
data['last_statement_by_last_name'] = \
last_statement.by.profile.user.last_name
data['last_statement_by_first_name'] = \
last_statement.by.profile.user.first_name
except CheckoutStatement.DoesNotExist:
pass
data = (
Checkout.objects
.annotate(
last_statement_by_first_name=F('statements__by__profile__user__first_name'),
last_statement_by_last_name=F('statements__by__profile__user__last_name'),
last_statement_by_trigramme=F('statements__by__trigramme'),
last_statement_balance=F('statements__balance_new'),
last_statement_at=F('statements__at'))
.select_related(
'statements'
'statements__by',
'statements__by__profile__user')
.filter(pk=pk)
.order_by('statements__at')
.values(
'id', 'name', 'balance', 'valid_from', 'valid_to',
'last_statement_balance', 'last_statement_at',
'last_statement_by_trigramme', 'last_statement_by_last_name',
'last_statement_by_first_name')
.last()
)
if data is None:
raise Http404
return JsonResponse(data)