From 9c05cb6af034882c15d16f07f5f7733e08b4c738 Mon Sep 17 00:00:00 2001 From: Philip Sargent <philip.sargent@gmail.com> Date: Sat, 23 Sep 2023 00:48:35 +0300 Subject: [PATCH] rotatable images & text --- core/views/uploads.py | 20 ++++++++++++++++++-- templates/renameform.html | 7 ++++++- templates/walletform.html | 26 +++++++++++++++----------- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/core/views/uploads.py b/core/views/uploads.py index dd9f60d..8bec24e 100644 --- a/core/views/uploads.py +++ b/core/views/uploads.py @@ -406,6 +406,16 @@ def expofilerename(request, filepath): Currently this just does files within wallets i.e. in /surveyscans/ and it returns control to the original wallet edit page """ + def is_rotatable(path): + """If file is a JPG but has no filename extension, then it must be renamed + before it can be rotated. + """ + print(f"{path}: '{Path(path).suffix.lower()}'") + if Path(path).suffix.lower() in [".png", ".jpg", ".jpeg"]: + return True + else: + return False + def rotate_image(): wallet = str(Path(filepath).parent).lstrip("surveyscans/") cwd = settings.SCANS_ROOT / wallet @@ -455,7 +465,9 @@ def expofilerename(request, filepath): "filesize": filesize, "files": files, "walletpath": walletpath, + "wallet": wallet, "notpics": notpics, + "rotatable": rotatable, }, ) @@ -474,8 +486,11 @@ def expofilerename(request, filepath): else: filename = Path(filepath).name walletpath = Path(filepath).parent + wallet = Path(walletpath).name folder = actualpath.parent filesize = f"{actualpath.stat().st_size:,}" + rotatable= is_rotatable(filename) + if not actualpath.is_relative_to(Path(settings.SCANS_ROOT)): message = f'\n Can only do rename within wallets (expofiles/surveyscans/) currently, sorry. "{actualpath}" ' @@ -494,10 +509,10 @@ def expofilerename(request, filepath): for d in f.iterdir(): dirs.append(f"{f.name}/{d.name}") if f.is_file(): - if Path(f.name).suffix.lower() in [".jpg", ".jpeg", ".png"]: + if is_rotatable(f.name): # should allow all images here which can be thumsized, not just rotatables. e.g. PDF files.append(f.name) else: - notpics.append(f.name) + notpics.append(f.name) except FileNotFoundError: files.append( "(Error. There should be at least one filename visible here. Try refresh.)" @@ -537,6 +552,7 @@ def expofilerename(request, filepath): "filesize": filesize, "files": files, "walletpath": walletpath, + "wallet": wallet, "notpics": notpics, "rename_bad": rename_bad, }, diff --git a/templates/renameform.html b/templates/renameform.html index f543057..35bcbeb 100644 --- a/templates/renameform.html +++ b/templates/renameform.html @@ -37,15 +37,20 @@ </button> </form> <br /> + {% if rotatable %} <form method ='post' > {% csrf_token %} <button class="fancybutton2" style="padding: 0.5em 25px; margin-left: 110px" name="rotate" type = "submit" title="Rotates 90 degrees clockwise. JPG and PNG files only." value = "Rotate" > Rotate it </button> </form> - + {% else %} + <p style="padding: 0.5em 25px; margin-left: 110px">Not a rotatable image. + {% endif %} <br /><br /><br /> Full urlencoded path for this file in expofiles is <a href="/expofiles/{{filepath|urlencode}}"><em>{{filepath|urlencode}}</em></a> + <br /><br /> + Return to wallet <a href="/walletedit/{{wallet|urlencode}}">{{wallet}}</a> </div> diff --git a/templates/walletform.html b/templates/walletform.html index 84d47b2..aff70fe 100644 --- a/templates/walletform.html +++ b/templates/walletform.html @@ -15,6 +15,10 @@ {% else %} <h2>Wallet {{wallet}}</h2> {% endif %} +<style> +var {font-family: monospace; +} +</style> <form method ='post' style="text-align: center"> {% csrf_token %} @@ -29,13 +33,13 @@ </form> <p style="font-family: monospace; font-weight: bold; font-size: 130%; text-align: center"> -<a style="font-weight: normal;" href="/walletedit/{{prevy}}:01">{{prevy}}</a> +<a style="font-weight: normal;" href="/walletedit/{{prevy|urlencode}}:01">{{prevy}}</a> ... <a href="/walletedit/{{recent_year}}:{{recent_number}}">{{recent_year}}:{{recent_number}}</a> ← {{wallet}} → <a href="/walletedit/{{year}}:{{next}}">{{year}}:{{next}}</a> ... -<a style="font-weight: normal;" href="/walletedit/{{nexty}}:01">{{nexty}}</a> +<a style="font-weight: normal;" href="/walletedit/{{nexty|urlencode}}:01">{{nexty}}</a> </p> @@ -58,10 +62,10 @@ </button> {% endif %} </form> - <details><summary>Do NOT invent your own filenaming scheme. <br />Click for more details.</summary> -<div align="left">We have a 20-year old scheme for naming scanned files, <br><br> -Name the scanned pages <em>"notes-cavepassagename.jpg"</em> etc., (or <em>notes-1.jpg</em> if you must, but self-describing filenames are much better). This is important as a script detects whether these files exist (with names beginning <em>"notes..", "plan.." and "elev.."</em>) and if you name them something else it will hassle you unnecessarily. (Or you can use this format <em>cavepassagename5-notes.jpg</em> if you like.) -Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> </div></details> + <details style="text-align: left"><summary>Troggle needs standardised filenames. Use <br />"<var>notes1-myhole.jpg</var>", "<var>notes2-myhole.jpg</var>" etc. for in-cave notes,<br />"<var>plan1-myhole.jpg</var>" for the first page of the <em>drawn up</em> plan, <br />"<var>elev3-myhole.jpg</var>" for p3 of the <em>drawn up</em> elevation. <p><u>Click</u> for more details.</summary> +<div align="left"><p>Please do NOT invent your own filenaming scheme. We have a 20-year old scheme for naming scanned files, <br><br> +Name the scanned pages <var>"notes-cavepassagename.jpg"</var> etc., or <var>notes-1.jpg</var> if you like, but self-describing filenames are better. This is important as a script detects whether these files exist (with names beginning <var>"notes..", "plan.." and "elev.."</var>) and if you name them something else it will hassle you unnecessarily. (Or you can use this format <var>cavepassagename5-notes.jpg</var> if you like.) See how this works in the Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> +<p>The '<var>plan..</var>' and '<var>elev..</var>' scans are <em>for fully drawn-up Tunnel or Therion plans or elevations</em>. If you have hand-sketches, then these are '<var>notes..</var>' as are the raw survex survey data numbers.</div></details> </div> <div style = "max-width:29%; margin-left:20%; text-align: left" > {% if filesaved %} @@ -76,14 +80,14 @@ Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> </di {% if not create %} <p> {% for f in files %} - <a href="/expofilerename/surveyscans/{{year}}/{{wallet|urlencode}}/{{f}}">»</a> <a href="/expofiles/surveyscans/{{year}}/{{wallet|urlencode}}/{{f}}">{{ f}}</a><br /> + <a href="/expofilerename/surveyscans/{{year}}/{{wallet|urlencode}}/{{f|urlencode}}">»</a> <a href="/expofiles/surveyscans/{{year}}/{{wallet|urlencode}}/{{f|urlencode}}">{{ f}}</a> - <a href="/expofilerename/surveyscans/{{year}}/{{wallet|urlencode}}/{{f|urlencode}}"><em>Rename or Rotate</em></a><br /> {% empty %} <p><No files in this wallet. > {% endfor %} <ul> {% for d in dirs %} - <a href="/expofiles/surveyscans/{{year}}/{{wallet|urlencode}}/{{d}}"><em>{{d}}</em></a><br /> + <a href="/expofiles/surveyscans/{{year}}/{{wallet|urlencode}}/{{d|urlencode}}"><em>{{d}}</em></a><br /> {% endfor %} </ul> {% endif %} @@ -135,7 +139,7 @@ Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> </di <br> <span style="font-family: monospace; font-size: 150%; "> {% if cave %}<u>Cave ID</u>: - {% if caveobject %}<b>{{cave}}</b></a> which implies "<a href="/{{caveobject.url}}">{{caveobject}}</a>"<br> + {% if caveobject %}<b>{{cave}}</b></a> which implies "<a href="/{{caveobject.url|urlencode}}">{{caveobject}}</a>"<br> {% else %} <b>{{cave}}</b><br> {% endif %} @@ -143,7 +147,7 @@ Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> </di {% if psg %}<u>Survey area</u>: <b>{{psg}}</b><br>{% endif %} {% if svxfiles %}<u>Survex files</u>: {% for svx in svxfiles %} - <a href="/survexfile/{{svx}}">{{svx}}</a> + <a href="/survexfile/{{svx|urlencode}}">{{svx}}</a> {% endfor %} <br> {% endif %} @@ -238,7 +242,7 @@ Handbook: <a href="/handbook/survey/newwallet.html">Creating a Wallet</a> </di {% if metadataurl %}<span style="font-size: 70%; "><details><summary> JSON <br> </summary> - <a href="{{metadataurl}}">{{metadataurl}}</a><br> + <a href="{{metadataurl|urlencode}}">{{metadataurl}}</a><br> <pre> {{metadata}} </pre>