diff --git a/dashboard/admin.py b/dashboard/admin.py index eac4b9f..4898622 100644 --- a/dashboard/admin.py +++ b/dashboard/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Os, ServerStatus, Server, Group, PackageStatus, Team +from .models import Os, ServerStatus, Server, PackageStatus, Team class OsAdmin(admin.ModelAdmin): diff --git a/dashboard/forms.py b/dashboard/forms.py new file mode 100644 index 0000000..78726ae --- /dev/null +++ b/dashboard/forms.py @@ -0,0 +1,4 @@ +from django import forms + +class DocumentForm(forms.Form): + docfile = forms.FileField(label='Select a file') diff --git a/dashboard/models.py b/dashboard/models.py index d6bb8b1..3c4c4f3 100644 --- a/dashboard/models.py +++ b/dashboard/models.py @@ -134,3 +134,13 @@ class ServerStatus(models.Model): class Meta: unique_together = ('date', 'server') verbose_name_plural = "Server status" + +class Document_Servers(models.Model): + description = models.CharField(max_length=255, blank=True) + docfile = models.FileField(upload_to='results/') + uploaded_at = models.DateTimeField(auto_now_add=True) + +class Document_Packages(models.Model): + description = models.CharField(max_length=255, blank=True) + docfile = models.FileField(upload_to='results-packages/') + uploaded_at = models.DateTimeField(auto_now_add=True) diff --git a/dashboard/urls.py b/dashboard/urls.py index 78bcb99..c8fd743 100644 --- a/dashboard/urls.py +++ b/dashboard/urls.py @@ -63,9 +63,12 @@ urlpatterns = [ re_path(r'^manage/import/(?P[0-9]{4})/(?P[0-9]{1,2})/(?P[0-9]{1,2})/?$', views.import_csv, name='import'), - re_path(r'^manage/update-groups/?$', - views.update_groups, - name='update_groups'), + re_path(r'^manage/upload_csv_results', + views.upload_csv_results, + name='upload_csv_results'), +# re_path(r'^manage/update-groups/?$', +# views.update_groups, +# name='update_groups'), # manage packages re_path(r'^manage-packages/?$', diff --git a/dashboard/views.py b/dashboard/views.py index 22fb9f3..abe475d 100644 --- a/dashboard/views.py +++ b/dashboard/views.py @@ -8,7 +8,7 @@ from statistics import mean, median from yaml import load as yaml_load from requests import get as requests_get # django -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import render, get_object_or_404, redirect from django.http import HttpResponse, HttpResponseNotFound from django.conf import settings from django.core.exceptions import ObjectDoesNotExist @@ -16,7 +16,8 @@ from django.core.cache import cache from django.db import IntegrityError from django.contrib.auth.decorators import login_required # project -from .models import Os, Group, Server, ServerStatus, PackageStatus, Team +from .models import Os, Group, Server, ServerStatus, PackageStatus, Team, Document_Servers, Document_Packages +from .forms import DocumentForm ## ----------------------------------------------------------------------------- @@ -586,3 +587,32 @@ def manage_packages(request): return render(request, 'manage-packages.html', { 'all_dates': reversed(all_dates), }) + +## ----------------------------------------------------------------------------- +## UPLOAD FILE +## Upload csv file +## ----------------------------------------------------------------------------- + +@login_required +def upload_csv_results(request): + message = 'File must be name YYYY-MM-DD.csv' + # Handle file upload + if request.method == 'POST': + form = DocumentForm(request.POST, request.FILES) + if form.is_valid(): + newdoc = Document_Servers(docfile=request.FILES['docfile']) + newdoc.save() + + # Redirect to the document list after POST + return redirect('manage') + else: + message = 'The form is not valid. Fix the following error:' + else: + form = DocumentForm() # An empty, unbound form + + # Load documents for the list page + documents = Document_Servers.objects.all() + + # Render list page with the documents and the form + context = {'documents': documents, 'form': form, 'message': message} + return render(request, 'manage.html', context) diff --git a/results-packages/.gitkeep b/results-packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/results/.gitkeep b/results/.gitkeep new file mode 100644 index 0000000..e69de29