From 688ffe88ddc428c2ae7c2652e6e1d65916572f7c Mon Sep 17 00:00:00 2001 From: Xevion Date: Sat, 31 Oct 2020 18:34:54 -0500 Subject: [PATCH] added server side directory adding, validation and redirecting, show directory path and mention 'files' near filecount in panel header --- viewer/templates/add.html | 2 +- viewer/templates/browse.html | 4 ++-- viewer/views.py | 26 ++++++++++++++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/viewer/templates/add.html b/viewer/templates/add.html index 4caa799..6d69511 100644 --- a/viewer/templates/add.html +++ b/viewer/templates/add.html @@ -17,7 +17,7 @@
Additionally, files can be matched recursively if you so wish. Please note that this functionality may create anomalous behavior around duplicate files.

-
+ {% csrf_token %}
diff --git a/viewer/templates/browse.html b/viewer/templates/browse.html index dde12aa..70e8348 100644 --- a/viewer/templates/browse.html +++ b/viewer/templates/browse.html @@ -2,9 +2,9 @@ {% block content %}
- Files + {{ directory.path }} - {{ files|length }} + {{ files|length }} files diff --git a/viewer/views.py b/viewer/views.py index a34832f..dc68dd1 100644 --- a/viewer/views.py +++ b/viewer/views.py @@ -1,7 +1,8 @@ import os -from django.http import FileResponse, HttpResponse +from django.http import FileResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 +from django.urls import reverse from viewer.helpers import extra_listdir from viewer.models import ServedDirectory @@ -61,4 +62,25 @@ def add(request): def submit_new(request): - return HttpResponse('') + try: + s = ServedDirectory( + path=request.POST['path'], + regex_pattern=request.POST.get('regex'), + regex=request.POST.get('regex') is not None, + match_filename=request.POST.get('match_filename', False), + recursive=request.POST.get('recursive', False) + ) + if not os.path.isdir(request.POST['path']): + raise ValueError('A invalid Directory was specified in the request.') + s.save() + except KeyError: + return render(request, 'message.html', status=403, + context={'title': 'Invalid Options', + 'message': 'The POST request you sent did not have the options required to complete ' + 'the request.'}) + except ValueError: + return render(request, 'message.html', status=400, + context={'title': 'Invalid Directory', + 'message': 'The directory you specified was not a valid directory, either it doesn\'t ' + 'exist or it isn\'t a directory.'}) + return HttpResponseRedirect(reverse('browse', args=(s.id,)))