diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2021-04-30 03:44:53 +0100 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2021-04-30 03:44:53 +0100 |
commit | bdf535fcbfe66c424e52e86fa554ba567b0ec63b (patch) | |
tree | 28c076f02eb7e4fda34a5f77f400df8cf2919245 /core | |
parent | 03a5f5989e74ba50ff63ba599f98cd36dc0fa5d0 (diff) | |
download | troggle-bdf535fcbfe66c424e52e86fa554ba567b0ec63b.tar.gz troggle-bdf535fcbfe66c424e52e86fa554ba567b0ec63b.tar.bz2 troggle-bdf535fcbfe66c424e52e86fa554ba567b0ec63b.zip |
Scan Upload working nicely
Diffstat (limited to 'core')
-rw-r--r-- | core/forms.py | 3 | ||||
-rw-r--r-- | core/views/expo.py | 2 | ||||
-rw-r--r-- | core/views/other.py | 60 |
3 files changed, 52 insertions, 13 deletions
diff --git a/core/forms.py b/core/forms.py index 42ed0e0..a7b44db 100644 --- a/core/forms.py +++ b/core/forms.py @@ -15,7 +15,8 @@ from troggle.core.models.caves import Cave, LogbookEntry, QM, Entrance, CaveAndE Some are not used and need renovating or destroying. ''' -todo = '''Fix UploadFileForm - long list of actions +todo = '''Remove UploadFileForm - replace by Simple variant +Re engineer Simple upload to not use a Django form object ''' diff --git a/core/views/expo.py b/core/views/expo.py index a312143..b454df9 100644 --- a/core/views/expo.py +++ b/core/views/expo.py @@ -89,7 +89,7 @@ def expofilessingle(request, filepath): def expofilesdir(request, dirpath, filepath): '''does a directory display. If there is an index.html file we should display that. - - dirpath is a full Path() resolved including lcoal machine /expofiles/ + - dirpath is a full Path() resolved including local machine /expofiles/ - filepath is a Path() and it does not have /expofiles/ in it ''' #print(f' - expofilesdir {dirpath} settings.EXPOFILESREMOTE: {settings.EXPOFILESREMOTE}') diff --git a/core/views/other.py b/core/views/other.py index 89fac23..186616a 100644 --- a/core/views/other.py +++ b/core/views/other.py @@ -204,25 +204,63 @@ def ajax_test(request): @login_required_if_public -def scanupload(request, year='2050'): - print(f'! - FORM scanupload - start') +def scanupload(request, wallet=None): + '''Upload one scanned image file into a wallet on /expofiles + ''' + filesaved = False + actual_saved = [] + print(f'! - FORM scanupload - start {wallet}') + if wallet is None: + wallet = "2021#01" # improve this later + if not re.match('(19|20)\d\d:\d\d', wallet): + wallet = "2021:01" # improve this later + + year = wallet[:4] + nexty = f'{int(year)+1}' + prevy = f'{int(year)-1}' + wnumber = wallet[5:] + next = f'{int(wnumber)+1:02d}' + prev = f'{int(wnumber)-1:02d}' + + if int(wnumber) == 0: + prev = f'{int(wnumber):02d}' + + wallet = wallet.replace(':','#') + dirpath = Path(settings.SURVEY_SCANS, year, wallet) + if request.method == 'POST': form = SimpleUploadFileForm(request.POST,request.FILES) if form.is_valid(): #form.save() # comment out so nothing saved in MEDIA_ROOT/fileuploads f = request.FILES["simplefile"] w = request.POST["title"] - print(f'! - FORM scanupload uploaded {f.name}') + multiple = request.FILES.getlist('simplefile') fs = FileSystemStorage(os.path.join(settings.SURVEY_SCANS, year, w)) - actual_saved = fs.save(f.name, content=f) # name may chnage to avoid clash - # INSERT check if name is changed, to allow user to abort and rename - or lets do a chaecjk anyway. - - print(f'! - FORM scanupload {actual_saved}') - - form = SimpleUploadFileForm() - return render(request, 'scanuploadform.html', {'form': form,'filesaved': True, 'actual_saved': actual_saved}) + actual_saved = [] + if multiple: + for f in multiple: + actual_saved.append( fs.save(f.name, content=f) ) + print(f'! - FORM scanupload multiple {actual_saved}') + filesaved = True + + files = [] + dirs = [] + print(f'! - FORM scanupload - start {wallet} {dirpath}') + try: + for f in dirpath.iterdir(): + if f.is_dir(): + dirs.append(f.name) + if f.is_file(): + if f.name != 'contents.json' and f.name != 'walletindex.html': + files.append(f.name) + except FileNotFoundError: + files.append('(no wallet yet - would be created)') + if len(files) ==0 : + files.append('(no image files in wallet)') + else: form = SimpleUploadFileForm() - return render(request, 'scanuploadform.html', {'form':form,}) + return render(request, 'scanuploadform.html', + {'form': form, 'wallet': wallet, 'year': year, 'prev': prev, 'next': next, 'prevy': prevy, 'nexty': nexty, 'files': files, 'dirs': dirs, 'filesaved': filesaved, 'actual_saved': actual_saved}) |