Dedicated 'Create' button for a new wallet

This commit is contained in:
2023-02-01 17:21:33 +00:00
parent e38d29f33d
commit 8e51f3aff8
3 changed files with 86 additions and 52 deletions

View File

@@ -252,19 +252,20 @@ def get_complaints(complaints, waldata, svxfiles, files, wallet, wurl):
# @login_required_if_public
def walletedit(request, path=None):
"""Upload scanned image files into a wallet on /expofiles
"""Create a new wallet or upload scanned image files into a wallet on /expofiles
Also display AND EDIT the contents.json data in the wallet.
This is the main wallet display and edit page.
The Wallet object and the contents.json file are created when the user
first uploads files.
creates the wallet AND THEN SAVES IT WITH A DATE.
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,
as it covers many very differnet things we do not need. This is simpler.
This subsumes much of the code which was in the old wallets.py script and so this function is very long indeed and needs refactoring.
This subsumes much of the code which was in the pre-2022 non-troggle wallets.py script
and so this function is very long indeed and needs refactoring.
REWRITE bits using the ticklist, dateify, caveify, populate etc utility functions in core.view.scans.py
"""
@@ -300,7 +301,8 @@ def walletedit(request, path=None):
if int(year) < 1977:
year = "1977"
if int(year) > 2050:
year = "2050"
return (None, get_next_empty() )
wallet = f"{year}:{wnumber:02d}"
return (None, wallet)
@@ -447,6 +449,8 @@ def walletedit(request, path=None):
wallet = wallet.replace(":", "#")
dirpath = Path(settings.SCANS_ROOT, year, wallet)
contents_path = Path(settings.DRAWINGS_DATA, "walletjson") / year / wallet / contentsjson
fresh_wallet = False
form = FilesForm()
@@ -500,9 +504,17 @@ def walletedit(request, path=None):
return HttpResponseRedirect(f'/walletedit/{walletgoto.replace("#",":")}')
else: # not editing wallet data, uploading a file. But should not overwrite metadata at all.
else: # not editing wallet data, creating a wallet or uploading a file. Should not overwrite metadata at all.
if "submitbutton" in request.POST:
print(f"--- Submit button value {request.POST['submitbutton']}")
if request.POST['submitbutton']=="Create":
w = WALLET_BLANK_JSON.copy()
save_json(w)
walletobject = make_wallet(wallet)
commit_json(w)
fresh_wallet = True
form = FilesForm(request.POST, request.FILES)
if form.is_valid():
# print(f'--- FORM walletedit multiple BUT EMPTY METADATA supposedly {WALLET_BLANK_JSON["date"]=}')
multiple = request.FILES.getlist("uploadfiles")
@@ -525,6 +537,9 @@ def walletedit(request, path=None):
save_json(waldata)
walletobject = make_wallet(wallet)
commit_json(waldata)
fresh_wallet = True
else:
print("--- Upload files form invalid")
#
# Not a POST, so a GET starts here. And also control gets here after a POST is processed.
#
@@ -545,7 +560,10 @@ def walletedit(request, path=None):
"(No wallet yet. It would be created if you upload a scan and then save the form with a date.)"
)
else:
create = True
if fresh_wallet:
create = False
else:
create = True
if len(files) > 0:
files = sorted(files)