Create archive form

This commit is contained in:
George Lacey 2021-05-07 20:24:06 +01:00
parent cc35f276ef
commit 194afd9c66
5 changed files with 68 additions and 5 deletions

View File

@ -1 +1,2 @@
from .repoform import RepoForm from .repoform import RepoForm
from .archiveform import ArchiveForm

View File

@ -0,0 +1,20 @@
from django import forms
class ArchiveForm(forms.Form):
label = forms.CharField(label='Label')
fingerprint = forms.CharField(label='Fingerprint')
name = forms.CharField(label='Name')
start = forms.DateTimeField(label='Start', input_formats=["%Y-%m-%dT%H:%M:%S.%z"])
end = forms.DateTimeField(label='End', input_formats=["%Y-%m-%dT%H:%M:%S.%z"])
file_count = forms.IntegerField(label='File Count', min_value=0)
original_size = forms.IntegerField(label='Original Size', min_value=0)
compressed_size = forms.IntegerField(label='Compressed Size', min_value=0)
deduplicated_size = forms.IntegerField(label='Deduplicated Size', min_value=0)
total_chunks = forms.IntegerField(label='Total Chunks', min_value=0)
total_csize = forms.IntegerField(label='Total Compressed Size', min_value=0)
total_size = forms.IntegerField(label='Total Size', min_value=0)
total_unique_chunks = forms.IntegerField(label='Total Unique Chunks', min_value=0)
unique_csize = forms.IntegerField(label='Unique Size', min_value=0)
unique_size = forms.IntegerField(label='Unique Compressed Size', min_value=0)

View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add archive</title>
</head>
<body>
<form action="archive" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
</body>
</html>

View File

@ -4,5 +4,6 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.index, name='index'), path('', views.index, name='index'),
path('repo', views.get_repo, name='repo') path('repo', views.get_repo, name='repo'),
path('archive', views.get_archive, name='archive'),
] ]

View File

@ -1,9 +1,9 @@
from django.shortcuts import render from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotAllowed from django.http import HttpResponseRedirect
from .models import Repo, Label from .models import Repo, Label, Archive, Cache
from django.urls import reverse from django.urls import reverse
from .forms import RepoForm from .forms import RepoForm, ArchiveForm
def index(request): def index(request):
@ -42,3 +42,30 @@ def get_repo(request):
form = RepoForm() form = RepoForm()
return render(request, 'borg/repo.html', {'form': form}) return render(request, 'borg/repo.html', {'form': form})
def get_archive(request):
if request.method == 'POST':
form = ArchiveForm(request.POST)
if form.is_valid():
cdata = form.cleaned_data
repo = get_object_or_404(Repo, label__label=cdata['label'])
cache_dict = {k: cdata[k] for k in ('total_chunks', 'total_csize', 'total_size',
'total_unique_chunks', 'unique_csize', 'unique_size')}
cache = Cache(**cache_dict)
cache.save()
archive_dict = {k: cdata[k] for k in ('fingerprint', 'name', 'start', 'end', 'file_count',
'original_size', 'compressed_size', 'deduplicated_size')}
archive = Archive(**archive_dict, repo=repo, cache=cache)
archive.save()
return HttpResponseRedirect(reverse('index'))
else:
form = ArchiveForm()
return render(request, 'borg/archive.html', {'form': form})