diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2019-04-02 20:21:43 +0200 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2019-04-02 20:21:43 +0200 |
commit | 6f7415a2d2c612bf91aa7a73449ef1a141790386 (patch) | |
tree | 8f55636e9b00182ff1cd085815ec70e573056512 /talerbank/app/views.py | |
parent | d865e0df3de8165e01b145b927d224b763991a95 (diff) | |
download | bank-6f7415a2d2c612bf91aa7a73449ef1a141790386.tar.gz bank-6f7415a2d2c612bf91aa7a73449ef1a141790386.tar.bz2 bank-6f7415a2d2c612bf91aa7a73449ef1a141790386.zip |
HTTP-Serving date-range based history query.
Diffstat (limited to 'talerbank/app/views.py')
-rw-r--r-- | talerbank/app/views.py | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/talerbank/app/views.py b/talerbank/app/views.py index 5002e08..b21b2fe 100644 --- a/talerbank/app/views.py +++ b/talerbank/app/views.py @@ -40,6 +40,7 @@ from django.contrib.auth.models import User from django.db.models import Q from django.http import JsonResponse, HttpResponse from django.shortcuts import render, redirect +from datetime import datetime from .models import BankAccount, BankTransaction from .amount import Amount from .schemas import validate_data @@ -693,6 +694,43 @@ def build_history_response(qs, cancelled, user_account): return history ## +# Serve a request of /history-range. +# +# @param request Django-specific HTTP request. +# @param user_account the account whose history should be gotten. +# @return Django-specific HTTP response object. +@require_GET +@login_via_headers +def serve_history_range(request, user_account): + validate_data(request, request.GET.dict()) + + # Ordering. + ordering = request.GET.get("ordering", "descending") + + # Note: those values got sanity-checked by "validate_data()" + start = int(request.GET.get("start")) + end = int(request.GET.get("end")) + + start_td = datetime.fromtimestamp(start) + end_td = datetime.fromtimestamp(end) + + qs = query_history_range(user_account.bankaccount, + request.GET.get("direction"), + start_td, + end_td, + "descending" == ordering) + + history = build_history_response(qs, + request.GET.get("cancelled", + "show"), + user_account) + if not history: + return HttpResponse(status=204) + return JsonResponse(dict(data=history), status=200) + + + +## # Serve a request of /history. # # @param request Django-specific HTTP request. @@ -717,12 +755,6 @@ def serve_history(request, user_account): if not start: start = 0 if "+" == sign else UINT64_MAX - # query_history_range (bank_account, - # direction, - # start, - # end, - # ordering) - qs = query_history(user_account.bankaccount, request.GET.get("direction"), int(parsed_delta.group(2)), @@ -731,7 +763,8 @@ def serve_history(request, user_account): "descending" == ordering) history = build_history_response(qs, - request.GET.get("cancelled", "show"), + request.GET.get("cancelled", + "show"), user_account) if not history: return HttpResponse(status=204) |