diff --git a/borgweb/borg/forms/__init__.py b/borgweb/borg/forms/__init__.py
index f40c618..7e19013 100644
--- a/borgweb/borg/forms/__init__.py
+++ b/borgweb/borg/forms/__init__.py
@@ -1 +1,2 @@
from .repoform import RepoForm
+from .archiveform import ArchiveForm
diff --git a/borgweb/borg/forms/archiveform.py b/borgweb/borg/forms/archiveform.py
new file mode 100644
index 0000000..b1a0b82
--- /dev/null
+++ b/borgweb/borg/forms/archiveform.py
@@ -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)
diff --git a/borgweb/borg/templates/borg/archive.html b/borgweb/borg/templates/borg/archive.html
new file mode 100644
index 0000000..9708842
--- /dev/null
+++ b/borgweb/borg/templates/borg/archive.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Add archive
+
+
+
+
+
\ No newline at end of file
diff --git a/borgweb/borg/urls.py b/borgweb/borg/urls.py
index 854c43e..d6a7476 100644
--- a/borgweb/borg/urls.py
+++ b/borgweb/borg/urls.py
@@ -4,5 +4,6 @@ from . import views
urlpatterns = [
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'),
]
diff --git a/borgweb/borg/views.py b/borgweb/borg/views.py
index 906f42e..9aa4507 100644
--- a/borgweb/borg/views.py
+++ b/borgweb/borg/views.py
@@ -1,9 +1,9 @@
-from django.shortcuts import render
-from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotAllowed
+from django.shortcuts import render, get_object_or_404
+from django.http import HttpResponseRedirect
-from .models import Repo, Label
+from .models import Repo, Label, Archive, Cache
from django.urls import reverse
-from .forms import RepoForm
+from .forms import RepoForm, ArchiveForm
def index(request):
@@ -42,3 +42,30 @@ def get_repo(request):
form = RepoForm()
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})