diff --git a/core/views/caves.py b/core/views/caves.py index 305aabb..2ec7935 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -276,14 +276,18 @@ def cave(request, cave_id='', offical_name=''): caves = Cave.objects.filter(kataster_number=cave_id) return render(request, 'svxcaveseveral.html', {'settings': settings, "caves":caves }) # not the right template, needs a specific one except ObjectDoesNotExist: - return render(request, 'svxcavesingle404.html', {'settings': settings, "cave":cave_id }) + return render(request, 'errors/svxcavesingle404.html', {'settings': settings, "cave":cave_id }) except: - return render(request, 'svxcavesingle404.html', {'settings': settings }) + return render(request, 'errors/svxcavesingle404.html', {'settings': settings }) return rendercave(request, cave, cave.slug(), cave_id=cave_id) def caveEntrance(request, slug): - cave = Cave.objects.get(caveslug__slug = slug) + try: + cave = Cave.objects.get(caveslug__slug = slug) + except: + return render(request,'errors/badslug.html', {'badslug': slug}) + if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated: return render(request,'nonpublic.html', {'instance': cave}) else: diff --git a/templates/errors/badslug.html b/templates/errors/badslug.html new file mode 100644 index 0000000..bd507fa --- /dev/null +++ b/templates/errors/badslug.html @@ -0,0 +1,63 @@ +{% extends 'base.html' %} + +{% block title %}Troggle Error - Bad Slug{% endblock %} +{% block content %} + +<div class='middle'> + <h2>Bad Slug Error</h2> +</div> + + +<div class='middle3 login'> + <div class='space'></div> + <div class='align-center'> + <h3>There has been a Troggle error. </h3> + <h4> + A Cave or an Entrance has been referred to using a label (a 'slug') which does not work. + <p>This is the bad slug: + + <font color="red"> + {% if badslug %} + {{badslug}} + {% else %} + <p>We are terribly sorry but a fault has occurred. Something in the system is referring to something else which does not exist. </p> + + {% endif %} + </font> + <p> + This is the previous page which had the bad slug reference on it: <font color="red"> +<script type="text/javascript"> + document.write(document.referrer); +</script> +</font> + </h4> + <p> +<p>It is also possible that the cave description page is being viewed using an alternative URL, +so that the local links in the page to other parts of the cave do not work. +<br> +e.g. /cave/1623-161 is not the correct way of looking at Kaninchenhohle, +<br> +you should be using <br> +/1623/161/top.htm instead. +<p>If that is the case, tell a nerd that we haven't fixed the fault that we thought we had fixed. + + <div class='space'><p> </div> + + <h3>What you should do now</h3> + <p>Please report the error by emailing the nerds at + <a href="mailto:expo-tech@lists.wookware.org">expo-tech@lists.wookware.org</a> with this information: + <ol> + <li>The bad slug text written in <font color="red">red</font> above. + <li>The previous page URL, also written in <font color="red">red</font> above + <li>Go back to this previous page <script type="text/javascript"> + document.write("<a href='",document.referrer,"'>",document.referrer,"</a>"); + </script> + and see if you can tell whether the bad slug was in HTML text which had been written manually, or whether it appeared to be a programming error. + </ol> + + + </div> +</div> +</div> + +{% endblock %} \ No newline at end of file diff --git a/templates/errors/generic.html b/templates/errors/generic.html index 19bed46..0f2e876 100644 --- a/templates/errors/generic.html +++ b/templates/errors/generic.html @@ -1,35 +1,48 @@ {% extends 'base.html' %} -{% block title %}Website Error - {% endblock %} +{% block title %}Troggle Error - Generic{% endblock %} {% block content %} <div class='middle'> - <h2>Website Error</h2> + <h2>Troggle Error</h2> </div> -<div style='width: 300px;' class='middle3 login'> - <div class='align-center'> +<div class='middle3 login'> <div class='space'></div> <div class='align-center'> - <h3>There has been an error.</h3> - - + <h3>There has been an error. This is either bad data or a bug in the software.</h3> + <h4> + <font color="red"> {% if message %} {{message}} {% else %} <p>We are terribly sorry but an unknown fault has occurred. </p> - {% endif %}) + {% endif %} + </font> + </h4> + <div class='space'><p> </div> + + <h3>What you should do now</h3> + <p>Please report the error by emailing the nerds at + <a href="mailto:expo-tech@lists.wookware.org">expo-tech@lists.wookware.org</a> with this information: + <ol> + <li>The error message written in <font color="red">red</font> above. + <li>The previous page URL: <font color="red"> +<script type="text/javascript"> + document.write(document.referrer); +</script></font> + <li>Go back to this previous page <script type="text/javascript"> + document.write("<a href='",document.referrer,"'>",document.referrer,"</a>"); + </script> + and see if you can tell whether the bad page reference was in HTML text which had been written manually, or whether it appeared to be a programming error. + </ol> </div> </div> </div> - - - - {% endblock %} \ No newline at end of file diff --git a/templates/errors/svxcavesingle404.html b/templates/errors/svxcavesingle404.html new file mode 100644 index 0000000..81e82fa --- /dev/null +++ b/templates/errors/svxcavesingle404.html @@ -0,0 +1,52 @@ +<!-- svxcavesingle404.html - this text visible because this template has been included --> +{% extends "base.html" %} +{% block title %}Troggle Error - Bad Cave ID{% endblock %} + +{% block content %} + +<h1>Cave Identifier not found in database</h1> + +<h3>Cave identifier looked for: <font color="red">'{{cave}}'</font></h3> +<ul> +<li>- unofficial number like this not found</li> +<li>- kataster number like this not found</li> +</ul> + +<h3>You probably got here because a survex (.svx) file has been stored on the server in the +<a href="/handbook/computing/repos.html"><var>:loser:</var></a> repository +but whoever was +responsible has not yet created the appropriate XML file the +<a href="/handbook/computing/repos.html"><var>:expoweb:</var></a> repository +which registers the cave description and ties together +the survex files with everything else. +</h3> + +<p>The process for registering a new cave is documented in +<a href="/handbook/survey/caveentry.html">this part of the survey handbook</a>. +<p> +<p>It is also possible that the cave description page is being viewed using an alternative URL, +so that the local links in the page to other parts of the cave do not work. +<br> +e.g. /cave/1623-161 is not the correct way of looking at Kaninchenhohle, +<br> +you should be using <br> +/1623/161/top.htm instead. +<p>If that is the case, tell a nerd that we haven't fixed the fault that we thought we had fixed. + <div class='space'><p> </div> + + <h3>What you should do now</h3> + <p>Please report the error by emailing the nerds at + <a href="mailto:expo-tech@lists.wookware.org">expo-tech@lists.wookware.org</a> with this information: + <ol> + <li>The error message written in <font color="red">red</font> above. + <li>The previous page URL: <font color="red"> +<script type="text/javascript"> + document.write(document.referrer); +</script></font> + <li>Go back to this previous page <script type="text/javascript"> + document.write("<a href='",document.referrer,"'>",document.referrer,"</a>"); + </script> + and see if you can tell whether the bad page reference was in HTML text which had been written manually, or whether it appeared to be a programming error. + </ol> + +{% endblock %} diff --git a/templates/svxcavesingle404.html b/templates/svxcavesingle404.html deleted file mode 100644 index 2438685..0000000 --- a/templates/svxcavesingle404.html +++ /dev/null @@ -1,27 +0,0 @@ -<!-- svxcavesingle404.html - this text visible because this template has been included --> -{% extends "base.html" %} -{% block title %}List of survex files{% endblock %} - -{% block content %} - -<h1>Cave not found in database</h1> - -<h3>Cave number looked for: '{{cave}}'</h3> -<ul> -<li>- unofficial number like this not found</li> -<li>- kataster number like this not found</li> -</ul> - -<h3>You probably got here because a survex (.svx) file has been stored on the server in the -<a href="/handbook/computing/repos.html"><var>:loser:</var></a> repository -but whoever was -responsible has not yet created the appropriate XML file the -<a href="/handbook/computing/repos.html"><var>:expoweb:</var></a> repository -which registers the cave description and ties together -the survex files with everything else. -</h3> - -<p>The process for registering a new cave is documented in -<a href="/handbook/survey/caveentry.html">this part of the survey handbook</a>. -<p> -{% endblock %} diff --git a/urls.py b/urls.py index 49406e0..3c8cc19 100644 --- a/urls.py +++ b/urls.py @@ -121,14 +121,14 @@ trogglepatterns = [ re_path(r'^cave/3d/(?P<cave_id>[^/]+)$', caves.cave3d, name="cave3d"), re_path(r'^cave/description/([^/]+)/?$', caves.caveDescription), - re_path(r'^cave/(?P<cave_id>[^/]+)/?$', caves.cave, name="cave"), + re_path(r'^cave/(?P<cave_id>[^/]+)/?$', caves.cave, name="cave"), #!!!BAD, local links fail re_path(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent), # view_caves.ent re_path(r'^cave/(?P<slug>[^/]+)/edit/$', caves.edit_cave, name="edit_cave"), re_path(r'^(?P<karea>\d\d\d\d)(?P<subpath>.*)$', cavepage, name="cavepage"), # shorthand /1623/264 BUT url links may break # Note that urls eg '1623/161/l/rl89a.htm' are handled by cavepage which redirects them to 'expopage' # Entrances - re_path(r'^cave/entrance/([^/]+)/?$', caves.caveEntrance), # lists all entrances + re_path(r'^cave/entrance/([^/]+)/?$', caves.caveEntrance), # lists all entrances !!!BAD, local links fail re_path(r'^entrance/(?P<caveslug>[^/]+)/(?P<slug>[^/]+)/edit/', caves.edit_entrance, name = "editentrance"), #edit existing entrance re_path(r'^entrance/new/(?P<caveslug>[^/]+)$', caves.edit_entrance, name = "newentrance"), # new entrance for a cave