summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/views/drawings.py2
-rw-r--r--core/views/other.py76
2 files changed, 69 insertions, 9 deletions
diff --git a/core/views/drawings.py b/core/views/drawings.py
index 7657d3d..19507b9 100644
--- a/core/views/drawings.py
+++ b/core/views/drawings.py
@@ -51,7 +51,7 @@ def dwgfilesingle(request, path):
def dwgfileupload(request, path):
- '''uploads a drawing file, but where is the Form? This just processes POST info. Apparently unfinished?
+ '''Use bits of this to REGISTEr a recently uploaded dwg file which used dwgupload
'''
try:
dwgfile = DrawingFile.objects.get(dwgpath=urlunquote(path)) # need to check if inavlid query string and produce friendly error
diff --git a/core/views/other.py b/core/views/other.py
index 56ad5a4..582d3fa 100644
--- a/core/views/other.py
+++ b/core/views/other.py
@@ -193,20 +193,13 @@ def exportlogbook(request,year=None,extension=None):
return render(request,'controlPanel.html', {'expeditions':Expedition.objects.all(),'jobs_completed':[completed]})
-
-# def ajax_test(request):
- # post_text = request.POST['post_data']
- # return HttpResponse("{'response_text': '"+post_text+" recieved.'}",
- # content_type="application/json")
-
-
class FilesForm(forms.Form): # not a model-form, just a form-form
scanfiles = forms.FileField()
@login_required_if_public
def scanupload(request, wallet=None):
- '''Upload one scanned image file into a wallet on /expofiles
+ '''Upload scanned image files into a wallet on /expofiles
This does NOT use a Django model linked to a Django form. Just a simple Django form.
'''
filesaved = False
@@ -275,3 +268,70 @@ def scanupload(request, wallet=None):
return render(request, 'scanuploadform.html',
{'form': form, 'wallet': wallet, **context, 'files': files, 'dirs': dirs, 'filesaved': filesaved, 'actual_saved': actual_saved})
+
+@login_required_if_public
+def dwgupload(request, folder=None):
+ '''Upload DRAWING files (tunnel or therion) into the upload folder in :drawings:
+ This does NOT use a Django model linked to a Django form. Just a simple Django form.
+ '''
+ def dwgvalid(name):
+ if name in [ '.gitignore', '.hgignore', ]:
+ return False
+ if Path(name).suffix in ['.xml', '.th', '.th2', '', '.svg', '.jpg']:
+ return True
+ return False
+
+ filesaved = False
+ actual_saved = []
+ doesnotexist = ''
+ #print(f'! - FORM dwgupload - start "{folder}"')
+ if folder is None:
+ folder = "" # improve this later
+ dirpath = Path(settings.DRAWINGS_DATA)
+ urlfile = '/dwgdataraw'
+ urldir = '/dwgupload'
+ else:
+ dirpath = Path(settings.DRAWINGS_DATA, folder)
+ urlfile = Path('/dwgdataraw/') / folder
+ urldir = Path('/dwgupload/') / folder
+
+ form = FilesForm()
+
+ if request.method == 'POST':
+ form = FilesForm(request.POST,request.FILES)
+ if form.is_valid():
+ f = request.FILES["scanfiles"]
+ multiple = request.FILES.getlist('scanfiles')
+ fs = FileSystemStorage(os.path.join(settings.DRAWINGS_DATA, folder))
+
+ actual_saved = []
+ if multiple:
+ for f in multiple:
+ if dwgvalid(f.name):
+ actual_saved.append( fs.save(f.name, content=f) )
+ # print(f'! - FORM dwgupload multiple {actual_saved}')
+ filesaved = True
+
+ files = []
+ dirs = []
+ #print(f'! - FORM dwgupload - start {folder} \n"{dirpath}" \n"{dirpath.parent}" \n"{dirpath.exists()}"')
+ try:
+ for f in dirpath.iterdir():
+ if f.is_dir():
+ if f.name not in ['.git' ]:
+ dirs.append(f.name)
+ continue
+ if f.is_file():
+ if dwgvalid(f.name):
+ files.append(f.name)
+ continue
+ except FileNotFoundError:
+ doesnotexist = True
+ if files:
+ files = sorted(files)
+
+ if dirs:
+ dirs = sorted(dirs)
+
+ return render(request, 'dwguploadform.html',
+ {'form': form, 'doesnotexist': doesnotexist, 'urlfile': urlfile, 'urldir': urldir,'folder': folder, 'files': files, 'dirs': dirs, 'filesaved': filesaved, 'actual_saved': actual_saved})