forked from expo/troggle
Dedicated 'Create' button for a new wallet
This commit is contained in:
parent
e38d29f33d
commit
8e51f3aff8
@ -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)
|
||||
|
||||
@ -448,6 +450,8 @@ def walletedit(request, path=None):
|
||||
dirpath = Path(settings.SCANS_ROOT, year, wallet)
|
||||
contents_path = Path(settings.DRAWINGS_DATA, "walletjson") / year / wallet / contentsjson
|
||||
|
||||
fresh_wallet = False
|
||||
|
||||
form = FilesForm()
|
||||
|
||||
if request.method == "POST":
|
||||
@ -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.
|
||||
form = FilesForm(request.POST, request.FILES)
|
||||
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.
|
||||
#
|
||||
@ -544,6 +559,9 @@ def walletedit(request, path=None):
|
||||
files.append(
|
||||
"(No wallet yet. It would be created if you upload a scan and then save the form with a date.)"
|
||||
)
|
||||
else:
|
||||
if fresh_wallet:
|
||||
create = False
|
||||
else:
|
||||
create = True
|
||||
|
||||
|
@ -1,7 +1,12 @@
|
||||
|
||||
<p>To create a wallet, if you have only a survex file and nothing to upload into the wallet,
|
||||
you currently need to got to <a href="/walletedit/">Upload Scans</a>, navigate to the new wallet number
|
||||
and then upload a dummy file, e.g. 'nothingyet.txt'. You can then edit the wallet details: the date,
|
||||
the people involved, and the url of the survexfile which you will already have uploaded using e.g.
|
||||
<h4>When you only have a survexfile</h4>
|
||||
<p>To create a wallet, if you have only a survex file but no notes to scan, you should upload the survexfile first. But before you can do that you will need to login (use the menu item at top-right of page).
|
||||
<p>
|
||||
Upload the survexfile using e.g.
|
||||
<a href="/survexfile/caves-1623/290/mynewsurvex.svx">/survexfile/caves-1623/290/mynewsurvex.svx</a>
|
||||
(for a survex file for cave 1623-290).
|
||||
(for a survex file for cave 1623-290). You will cut and paste the survex file data into the window on the form.
|
||||
|
||||
|
||||
<p>While still logged-in, go to this page <a href="/walletedit/0000:00">Create Wallet</a> which will take you to the next unused wallet number page, and click the 'Create' button. This will not actually complete
|
||||
the creation of the wallet until you have also set the date for the wallet in the wallet edit form (which will appear when you press 'Create').
|
||||
<p>
|
||||
While editing the wallet you should enter in the form the url of the survexfile which you have just created at e.g. <a href="/survexfile/caves-1623/290/mynewsurvex.svx">/survexfile/caves-1623/290/mynewsurvex.svx</a> (see above).
|
||||
|
@ -18,7 +18,7 @@
|
||||
<input
|
||||
label = "WalletGoto" name = "walletgoto" size="7"
|
||||
title="Wallet name to go to directly"
|
||||
placeholder="2023#nn" value="2023#" />
|
||||
placeholder="{% now 'Y' %}#nn" value="{% now 'Y' %}#" />
|
||||
|
||||
|
||||
</form>
|
||||
@ -37,11 +37,18 @@
|
||||
<form method ='post' enctype ="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<br>{% if user.username %}
|
||||
{% if not create %}
|
||||
<input class="fancybutton" type = "file" multiple="multiple"
|
||||
name = "uploadfiles" id="uploadfiles" />
|
||||
<br><br><br>
|
||||
<button class="fancybutton" style="padding: 0.5em 25px; margin-left: 155px" type = "submit" value = "Upload" >
|
||||
Upload
|
||||
{% endif %}
|
||||
|
||||
<button class="fancybutton" style="padding: 0.5em 25px; margin-left: 155px" name="submitbutton" type = "submit"
|
||||
{% if not create %}
|
||||
value = "Upload" > Upload
|
||||
{% else %}
|
||||
value = "Create" > Create Wallet
|
||||
{% endif %}
|
||||
</button>
|
||||
{% endif %}
|
||||
</form>
|
||||
@ -69,29 +76,34 @@
|
||||
<a href="/expofiles/surveyscans/{{year}}/{{wallet|urlencode}}/{{d}}"><em>{{d}}</em></a><br />
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</p>
|
||||
{% if create %}
|
||||
This online wallet does not yet exist.
|
||||
{% if user.username %}
|
||||
<br>It will be created and initialised automatically when you upload a file, and then edit the date in the form below and save it.
|
||||
<br><br>It will be created when you click the Create button, <em>and then edit the date in the form below and save it</em>.
|
||||
{% else %}
|
||||
<br>It will be created and initialised automatically when you upload a file, and then edit the date in the form below and save it.
|
||||
<br>But you need to log in first <a href=/accounts/login/>Log In </a>
|
||||
<br><br>To create a wallet, you need to <a href=/accounts/login/>Log In </a> first and then return to this page.
|
||||
{% endif %}
|
||||
{% include 'wallet_new.html' %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
<p><em>
|
||||
<a href="/wallets/year/{{year}}">Wallet index for {{year}}</a>
|
||||
<br />
|
||||
<a href="/expedition/{{year}}">Logbook entries, people, Survex files for {{year}}</a>
|
||||
<a href="/expedition/{{year}}">Logbook entries, People, Survex files for {{year}}</a>
|
||||
<br /><br />
|
||||
{% if user.username %}
|
||||
<a href="/handbook/survey/newwallet.html#onlinew">HELP with using this form</a>
|
||||
{% else %}
|
||||
<a href="/handbook/survey/newwallet.html#onlinew">HELP with editing a wallet and uploading scans</a>
|
||||
{% endif %}
|
||||
</em>
|
||||
|
||||
|
||||
{% if not create %}
|
||||
|
||||
</div>
|
||||
{% if complaints %}
|
||||
<h3 style="text-align: left; color: red">Complaints</h3>
|
||||
<ul style="list-style-type: disc; color: red">
|
||||
@ -109,7 +121,6 @@
|
||||
|
||||
{% include 'wallet_table.html' %}
|
||||
|
||||
{% if not create %}
|
||||
<br>
|
||||
<span style="font-family: monospace; font-size: 150%; ">
|
||||
{% if cave %}<u>Cave ID</u>:
|
||||
@ -138,65 +149,65 @@
|
||||
<form method ='post'>
|
||||
{% csrf_token %}
|
||||
<label for="date">Date of the survey trip</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "Date" name = "date" size="12"
|
||||
title="Date of the trip in ISO format: 2020-08-17"
|
||||
placeholder="{{date}}" value="{{date}}" required />
|
||||
<br>
|
||||
<label for="cave">Cave ID (only needed if no survex file yet)</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "Cave" name = "cave" size="12"
|
||||
title="Single cave id e.g. 2017-DM-01 or 1623-256. Not a list. "
|
||||
placeholder="{{cave}}" value="{{cave}}" />
|
||||
<br>
|
||||
<label for="psg">Survey area (wallet name)</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "Survey area" name = "psg" size ="{{psgsize}}"
|
||||
title="Survey area, e.g. White Elephant or Nieder Augst Eck"
|
||||
placeholder="{{psg}}" value="{{psg}}" />
|
||||
<br>
|
||||
<label for="freetext">Free text for comments</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "Free text" name = "freetext" size ="{{freetextsize}}"
|
||||
title="e.g. scans for plan are in another wallet #99"
|
||||
placeholder="{{freetext}}" value="{{freetext}}" />
|
||||
<br>
|
||||
<label for="plannr">Plan not required ?</label>
|
||||
<input type="checkbox" name="plannr" id="plannr" value=" True" {% if "plan not required" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="plannr" id="plannr" value=" True" {% if "plan not required" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="elevnr">Elevation not required ?</label>
|
||||
<input type="checkbox" name="elevnr" id="elevnr" value="True" {% if "elev not required" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="elevnr" id="elevnr" value="True" {% if "elev not required" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="survexnr">Survex file not required ?</label>
|
||||
<input type="checkbox" name="survexnr" id="survexnr" value="True" {% if "survex not required" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="survexnr" id="survexnr" value="True" {% if "survex not required" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="pland">Plan drawn ?</label>
|
||||
<input type="checkbox" name="pland" id="pland" value="True" {{chkpland}} {% if "plan drawn" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="pland" id="pland" value="True" {{chkpland}} {% if "plan drawn" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="elevd">Elevation drawn ?</label>
|
||||
<input type="checkbox" name="elevd" id="elevd" value="True" {% if "elev drawn" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="elevd" id="elevd" value="True" {% if "elev drawn" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="descriptionw">Cave description written (or nothing recorded) ?</label>
|
||||
<input type="checkbox" name="descriptionw" id="descriptionw" value="True" {% if "description written" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="descriptionw" id="descriptionw" value="True" {% if "description written" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="qmsw">QMs written (or none seen) ?</label>
|
||||
<input type="checkbox" name="qmsw" id="qmsw" value="True" {% if "qms written" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="qmsw" id="qmsw" value="True" {% if "qms written" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="websiteupt">Website updated ?</label>
|
||||
<input type="checkbox" name="websiteupt" id="websiteupt" value="True" {% if "website updated" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="websiteupt" id="websiteupt" value="True" {% if "website updated" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="electronic">Electronic survey ?</label>
|
||||
<input type="checkbox" name="electronic" id="electronic" value="True" {% if "electronic survey" in checked %}checked{% endif %}>
|
||||
<input {% if not user.username %} disabled{% endif %} type="checkbox" name="electronic" id="electronic" value="True" {% if "electronic survey" in checked %}checked{% endif %}>
|
||||
<br>
|
||||
<label for="people">List of people on the survey trip(s)</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "People" name = "people" size ="{{peoplesize}}"
|
||||
title="List of people on the survey trip"
|
||||
placeholder="{{people}}" value="{{people}}" />
|
||||
|
||||
<br>
|
||||
<label for="survex">List of survex files</label>
|
||||
<input
|
||||
<input {% if not user.username %} disabled{% endif %}
|
||||
label = "survex" name = "survex" size ="{{survexsize}}"
|
||||
title="List of survex files using this data"
|
||||
placeholder="caves-1623/264/side_balkon/siriuscyberlift.svx" value="{{survex}}" />
|
||||
|
Loading…
Reference in New Issue
Block a user