Merge branch 'aureplop/1_11/fix_querysets' into 'supportBDS'

Aureplop/1 11/fix querysets

See merge request !183
This commit is contained in:
Martin Pepin 2017-03-19 16:16:05 +01:00
commit 33dedc7474

View file

@ -841,34 +841,40 @@ def account_read_json(request):
'trigramme': account.trigramme } 'trigramme': account.trigramme }
return JsonResponse(data) return JsonResponse(data)
@teamkfet_required @teamkfet_required
def kpsul_checkout_data(request): def kpsul_checkout_data(request):
pk = request.POST.get('pk', 0) pk = request.POST.get('pk', 0)
if not pk: if not pk:
pk = 0 pk = 0
data = (Checkout.objects
.annotate( checkout = get_object_or_404(Checkout, pk=pk)
last_statement_by_first_name=F('statements__by__profile__user__first_name'), data = {
last_statement_by_last_name=F('statements__by__profile__user__last_name'), 'id': checkout.id, 'name': checkout.name, 'balance': checkout.balance,
last_statement_by_trigramme=F('statements__by__trigramme'), 'valid_from': checkout.valid_from, 'valid_to': checkout.valid_to
last_statement_balance=F('statements__balance_new'), }
last_statement_at=F('statements__at'))
.values( try:
'id', 'name', 'balance', 'valid_from', 'valid_to', last_statement = (
'last_statement_balance', 'last_statement_at', CheckoutStatement
'last_statement_by_trigramme', 'last_statement_by_last_name', .objects
'last_statement_by_first_name') .select_related('by', 'by__profile', 'by__profile__user')
.select_related( .filter(checkout=checkout)
'statements' .latest('at')
'statements__by', )
'statements__by__profile__user') data['last_statement_balance'] = last_statement.balance_new
.filter(pk=pk) data['last_statement_at'] = last_statement.at
.order_by('statements__at') data['last_statement_by_trigramme'] = last_statement.by.trigramme
.last()) data['last_statement_by_last_name'] = \
if data is None: last_statement.by.profile.user.last_name
raise Http404 data['last_statement_by_first_name'] = \
last_statement.by.profile.user.first_name
except CheckoutStatement.DoesNotExist:
pass
return JsonResponse(data) return JsonResponse(data)
@teamkfet_required @teamkfet_required
def kpsul_update_addcost(request): def kpsul_update_addcost(request):
addcost_form = AddcostForm(request.POST) addcost_form = AddcostForm(request.POST)
@ -1273,19 +1279,19 @@ def history_json(request):
# Récupération des paramètres # Récupération des paramètres
from_date = request.POST.get('from', None) from_date = request.POST.get('from', None)
to_date = request.POST.get('to', None) to_date = request.POST.get('to', None)
limit = request.POST.get('limit', None); limit = request.POST.get('limit', None)
checkouts = request.POST.getlist('checkouts[]', None) checkouts = request.POST.getlist('checkouts[]', None)
accounts = request.POST.getlist('accounts[]', None) accounts = request.POST.getlist('accounts[]', None)
# Construction de la requête (sur les opérations) pour le prefetch # Construction de la requête (sur les opérations) pour le prefetch
queryset_prefetch = Operation.objects.select_related( queryset_prefetch = Operation.objects.select_related(
'canceled_by__trigramme', 'addcost_for__trigramme', 'canceled_by', 'addcost_for',
'article__name') 'article')
# Construction de la requête principale # Construction de la requête principale
opegroups = (OperationGroup.objects opegroups = (OperationGroup.objects
.prefetch_related(Prefetch('opes', queryset = queryset_prefetch)) .prefetch_related(Prefetch('opes', queryset = queryset_prefetch))
.select_related('on_acc__trigramme', 'valid_by__trigramme') .select_related('on_acc', 'valid_by')
.order_by('at') .order_by('at')
) )
# Application des filtres # Application des filtres