diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/views/drawings.py | 2 | ||||
-rw-r--r-- | core/views/other.py | 76 |
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}) |