diff --git a/borgweb/borg/views/__init__.py b/borgweb/borg/views/__init__.py new file mode 100644 index 0000000..5c0e411 --- /dev/null +++ b/borgweb/borg/views/__init__.py @@ -0,0 +1,3 @@ +from .views import index, repo, axes, repo_daily_dict +from .post import post_repo, post_archive, post_error, post_location +from .json import repo_daily_json diff --git a/borgweb/borg/views/json.py b/borgweb/borg/views/json.py new file mode 100644 index 0000000..efeb1c5 --- /dev/null +++ b/borgweb/borg/views/json.py @@ -0,0 +1,8 @@ +from django.http import JsonResponse +from ..models import Repo +from . import repo_daily_dict + + +def repo_daily_json(request): + repo_list = Repo.objects.all() + return JsonResponse(repo_daily_dict(repo_list, 31)) diff --git a/borgweb/borg/views.py b/borgweb/borg/views/post.py similarity index 72% rename from borgweb/borg/views.py rename to borgweb/borg/views/post.py index 7ee6a6a..238683b 100644 --- a/borgweb/borg/views.py +++ b/borgweb/borg/views/post.py @@ -4,46 +4,8 @@ from django.http import HttpResponseRedirect from django.urls import reverse from django.contrib.auth.decorators import permission_required from django.core.cache import cache -from django.http import JsonResponse -from .models import Repo, Label, Archive, Cache, Error, Location -from .forms import RepoForm, ArchiveForm, ErrorForm, LocationForm -from datetime import datetime, timedelta -from .utility import data - - -def index(request): - repo_list = Repo.objects.all() - location_list = Location.objects.all() - - context = { - 'repo_list': repo_list, - 'location_list': location_list, - } - return render(request, 'borg/index.html', context) - - -def repo_daily_dict(repo_list, n_days=14): - date_labels = list(reversed([(datetime.utcnow() - timedelta(days=day)).strftime("%d %b") for day in range(n_days)])) - max_repo_size = max(repo.latest_archive().cache.unique_csize for repo in repo_list) - _, max_unit = data.convert_bytes(max_repo_size) - - repo_dicts = [repo.daily_dict(max_unit, n_days) for repo in repo_list] - - return { - "date_labels": date_labels, - "repos": repo_dicts, - "units": max_unit - } - - -def repo_daily_json(request): - repo_list = Repo.objects.all() - return JsonResponse(repo_daily_dict(repo_list, 31)) - - -def repo(request, repo_label: str): - s_repo = get_object_or_404(Repo, label__label=repo_label) - return render(request, 'borg/repo.html', {'repo': s_repo}) +from ..models import Repo, Label, Archive, Cache, Error, Location +from ..forms import RepoForm, ArchiveForm, ErrorForm, LocationForm @permission_required("borg.add_repo") @@ -138,8 +100,4 @@ def post_location(request): else: form = LocationForm () - return render(request, 'borg/post/location.html', {'form': form}) - - -def axes(request, credentials, *args, **kwargs): - return render(request, 'error/axes.html', {}) + return render(request, 'borg/post/location.html', {'form': form}) \ No newline at end of file diff --git a/borgweb/borg/views/views.py b/borgweb/borg/views/views.py new file mode 100644 index 0000000..bb0f028 --- /dev/null +++ b/borgweb/borg/views/views.py @@ -0,0 +1,38 @@ +from django.shortcuts import render, get_object_or_404 +from datetime import datetime, timedelta +from ..models import Repo, Location +from ..utility import data + + +def index(request): + repo_list = Repo.objects.all() + location_list = Location.objects.all() + + context = { + 'repo_list': repo_list, + 'location_list': location_list, + } + return render(request, 'borg/index.html', context) + + +def repo_daily_dict(repo_list, n_days=14): + date_labels = list(reversed([(datetime.utcnow() - timedelta(days=day)).strftime("%d %b") for day in range(n_days)])) + max_repo_size = max(repo.latest_archive().cache.unique_csize for repo in repo_list) + _, max_unit = data.convert_bytes(max_repo_size) + + repo_dicts = [repo.daily_dict(max_unit, n_days) for repo in repo_list] + + return { + "date_labels": date_labels, + "repos": repo_dicts, + "units": max_unit + } + + +def repo(request, repo_label: str): + s_repo = get_object_or_404(Repo, label__label=repo_label) + return render(request, 'borg/repo.html', {'repo': s_repo}) + + +def axes(request, credentials, *args, **kwargs): + return render(request, 'error/axes.html', {})