From 7a12406e60bc78ff8419acad1d976fdac445872a Mon Sep 17 00:00:00 2001 From: George Lacey Date: Mon, 11 Apr 2022 07:54:41 +0100 Subject: [PATCH] Implement individual repo json request methods --- borgweb/borg/urls.py | 6 +++++- borgweb/borg/views/json.py | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/borgweb/borg/urls.py b/borgweb/borg/urls.py index 4c38bc4..70ba348 100644 --- a/borgweb/borg/urls.py +++ b/borgweb/borg/urls.py @@ -8,12 +8,16 @@ urlpatterns = [ path('', cache_page(60)(views.index), name='index'), path('repo/', cache_page(60)(views.repo), name='repo'), - path('repo_list.json', cache_page(60)(views.repo_list_json), name='repo list'), + path('repo-list.json', cache_page(60)(views.repo_list_json), name='repo list'), # Repo path('repo//monthly-size.json', cache_page(3600)(views.repo_monthly_size_json), name='repo size time series'), path('repo/.json', cache_page(60)(views.repo_json), name='repo json'), + path('repo//latest-backup.json', cache_page(60)(views.repo_latest_backup_json), name='repo json'), + path('repo//size.json', cache_page(60)(views.repo_size_json), name='repo size json'), + path('repo//recent-errors.json', cache_page(60)(views.repo_recent_errors_json), + name='repo recent errors json'), # POST path('post/repo', views.post_repo, name='post repo'), diff --git a/borgweb/borg/views/json.py b/borgweb/borg/views/json.py index a5d0cc1..bad785f 100644 --- a/borgweb/borg/views/json.py +++ b/borgweb/borg/views/json.py @@ -8,15 +8,26 @@ from ..utility.time import last_day_previous_months def repo_json(request, repo_label): repo = get_object_or_404(Repo, label__label=repo_label) - repo_dict = {'location': repo.location, - 'latest_backup': repo.last_backup(), - 'size': repo.size_string(), - 'recent_errors': len(repo.recent_errors()), - 'warning': repo.warning(), + repo_dict = {'warning': repo.warning(), 'error': repo.error()} return JsonResponse(repo_dict) +def repo_latest_backup_json(request, repo_label): + repo = get_object_or_404(Repo, label__label=repo_label) + return JsonResponse({"data": repo.last_backup()}) + + +def repo_size_json(request, repo_label): + repo = get_object_or_404(Repo, label__label=repo_label) + return JsonResponse({"data": repo.size_string()}) + + +def repo_recent_errors_json(request, repo_label): + repo = get_object_or_404(Repo, label__label=repo_label) + return JsonResponse({"data": len(repo.recent_errors())}) + + def repo_monthly_size_json(request, repo_label, months_ago: int = 12): repo = get_object_or_404(Repo, label__label=repo_label)