summaryrefslogtreecommitdiffstats
path: root/core/views/uploads.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/views/uploads.py')
-rw-r--r--core/views/uploads.py83
1 files changed, 82 insertions, 1 deletions
diff --git a/core/views/uploads.py b/core/views/uploads.py
index a052835..d227bda 100644
--- a/core/views/uploads.py
+++ b/core/views/uploads.py
@@ -12,6 +12,7 @@ from django.shortcuts import render
from django.template import Context, loader
from django.core.files.storage import FileSystemStorage, default_storage
+#from troggle import settings
from troggle.parsers.imports import import_caves, import_people, import_surveyscans
from troggle.parsers.imports import import_logbooks, import_QMs, import_drawingsfiles, import_survex
# from databaseReset import reinit_db # don't do this. databaseRest runs code *at import time*
@@ -19,6 +20,7 @@ from troggle.core.models.troggle import Expedition, Person, PersonExpedition
from troggle.core.models.caves import LogbookEntry, QM, Cave, PersonTrip
from troggle.core.models.survex import DrawingFile
from .auth import login_required_if_public
+#from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
'''File upload 'views'
'''
@@ -42,6 +44,9 @@ todo = '''
class FilesForm(forms.Form): # not a model-form, just a form-form
uploadfiles = forms.FileField()
+class TextForm(forms.Form): # not a model-form, just a form-form
+ photographer = forms.CharField(strip=True)
+
@login_required_if_public
def scanupload(request, wallet=None):
'''Upload scanned image files into a wallet on /expofiles
@@ -77,9 +82,11 @@ def scanupload(request, wallet=None):
dirpath = Path(settings.SURVEY_SCANS, year, wallet)
form = FilesForm()
-
+
if request.method == 'POST':
form = FilesForm(request.POST,request.FILES)
+ print(f'! - FilesForm POSTED')
+
if form.is_valid():
f = request.FILES["uploadfiles"]
multiple = request.FILES.getlist('uploadfiles')
@@ -116,6 +123,80 @@ def scanupload(request, wallet=None):
{'form': form, 'wallet': wallet, **context, 'files': files, 'dirs': dirs, 'filesaved': filesaved, 'actual_saved': actual_saved})
@login_required_if_public
+def photoupload(request, folder=None):
+ '''Upload photo image files into /expofiles/photos/<year>/<photographer>/
+ This does NOT use a Django model linked to a Django form. Just a simple Django form.
+ You will find the Django documentation on forms very confusing, This is simpler.
+ '''
+ year = settings.PHOTOS_YEAR
+ filesaved = False
+ actual_saved = []
+
+ context = {'year': year, 'placeholder': "AnathemaDevice"}
+
+ yearpath = Path(settings.PHOTOS_ROOT, year)
+
+ if folder == str(year) or folder == str(year) +"/":
+ folder = None
+
+ if folder is None:
+ folder = "" # improve this later
+ dirpath = Path(settings.PHOTOS_ROOT, year)
+ urlfile = f'/expofiles/photos/{year}'
+ urldir = f'/photoupload/{year}'
+ else: # it will contain the year as well as the photographer
+ dirpath = Path(settings.PHOTOS_ROOT, folder)
+ if dirpath.is_dir():
+ urlfile = f'/expofiles/photos/{folder}'
+ urldir = Path('/photoupload') / folder
+ else:
+ folder = "" # improve this later
+ dirpath = Path(settings.PHOTOS_ROOT, year)
+ urlfile = f'/expofiles/photos/{year}'
+ urldir = f'/photoupload/{year}'
+
+
+ form = FilesForm()
+ formd = TextForm()
+
+ if request.method == 'POST':
+ if "photographer" in request.POST:
+ formd = TextForm(request.POST)
+ if formd.is_valid():
+ newphotographer = request.POST["photographer"]
+ (yearpath / newphotographer).mkdir(exist_ok=True)
+ else:
+ form = FilesForm(request.POST,request.FILES)
+ if form.is_valid():
+ f = request.FILES["uploadfiles"]
+ multiple = request.FILES.getlist('uploadfiles')
+ fs = FileSystemStorage(dirpath)
+
+ actual_saved = []
+ if multiple:
+ for f in multiple:
+ actual_saved.append( fs.save(f.name, content=f) )
+ filesaved = True
+ files = []
+ dirs = []
+ try:
+ for f in dirpath.iterdir():
+ if f.is_dir():
+ dirs.append(f.name)
+ if f.is_file():
+ files.append(f.name)
+ except FileNotFoundError:
+ files.append('(no folder yet - would be created)')
+ if len(files) >0 :
+ files = sorted(files)
+
+ if dirs:
+ dirs = sorted(dirs)
+
+ return render(request, 'photouploadform.html',
+ {'form': form, **context, 'urlfile': urlfile, 'urldir': urldir,'folder': folder, 'files': files, 'dirs': dirs, 'filesaved': filesaved, 'actual_saved': actual_saved})
+
+@login_required_if_public
def dwgupload(request, folder=None, gitdisable='no'):
'''Upload DRAWING files (tunnel or therion) into the upload folder in :drawings
AND registers it into the :drawings: git repo.