Montag, 4. Mai 2015

Mysterykeeper - gelöste Rätsel-Caches verwalten

Bei Mysterycaches kommt es ja durchaus öfters vor, dass man ein Rätsel löst, aber nicht direkt bzw. zeitnah zum Suchen und Loggen kommt. Also muss man sich die Lösung und die Finalkoordinaten irgendwo speichern.

Klar gibt es das "Anmerkungen zu diesem Listing" Feld in jedem Listing bei geocaching.com, wo man Notizen jeglicher Art hinterlegen kann, die nur für einen selber sichtbar sind. Das ist zwar ganz praktisch, hat aber zwei Nachteile: Erstens muss man online sein, um die Notizen zu sehen und zweitens weiß man so noch nicht, welche Mysteries man gelöst hat, aber noch nicht geloggt. Letzteres könnte man zwar über ein eigene Liste lösen (so fern man Premium Mitglied bei gecaching.com ist), was aber auch ein zusätzlicher Arbeitsschritt wäre - und Listen sind auch noch online abrufbar.

Bis vor kurzem haben wir unsere Lösung für Mysteries (und auch andere Caches wie Multis) in einer JSON-Datei gespeichert (siehe dazu auch unseren Blogbeitrag "Speichern von Lösungen für Mystery- und Multi-Caches" aus Oktober 2013). Das hat auch ganz gut funktioniert, wurde zum Ende hin aber ein bisschen unübersichtlich, weil die JSON-Datei ziemlich lange wurde, eben weil (zu) viele Caches drin enthalten waren.

Also sollte was besseres und vor allem Dingen übersichtlicheres her. Mit GSAK ginge das wohl, aber hier im Hause seit vielen Jahren keine Windows-Lizenz mehr vorhanden, also fällt jede Windows-only Lösung aus.

Da sich 25% von DerSchnelleLinus gerade so wie so mit Django (dem Webframework Nr. 1 für Python) beschäftigten, war das natürlich eine guten Gelegenheit, eine Python- / Django-basierte Lösung zu Basteln.

Gesagt, getan. Das Projekt wurde "Mysterykeeper" getauft, weil es ja in erster Linie um das Speichern von Mysterylösungen geht. Aus heutiger Sicht, also nach dem Hack der geocheck.org Datenbank Ende Januar 2015,  hat der Namen natürlich eine gewisse "Ironie" - aber gut, die Programmierarbeit an "Mysterykeeper" hat bereits 2014 begonnen.

Da Mysterykeeper für die persönliche Nutzungen konzeptioniert ist, ist das ganze auch recht einfach gestrickt: die Eingabe von neuen Daten (=Lösungen) erfolgt über das Admin-Backend, welches Django standardmäßig an Bord hat. Die Abfrage und die Anzeige der Lösungen erfolgt als HTML-Seite, welche von dem Webserver ausgeliefert wird, welcher ebenfalls bei Django an Bord ist.

Da wir das ganze "nur" lokal auf unseren Laptops benutzen gibt es keine zusätzlich Authentifizierung oder Benutzerverwaltung. Diese könnte (bzw. sollte) man aber einbauen, wenn man das ganz über eine  "richtigen" Webserver laufen lässt, welcher über das Internet erreichbar ist.  Was mit und Dank Django auch kein Problem wäre. Ist aber wie gesagt unsererseits aktuell nicht geplant.

Wie das ganze so aussieht wird im folgenden anhand eines Beispiels gezeigt. Der Cache, der für das Beispiel verwendet wird, ist ein Mystery von uns, der bereits im Archiv ist - also kein Spoiler-Alarm.

Wie gesagt erfolgt die Eingabe einer Lösung über das Admin-Backend von Django. Bei laufendem Server ist es unter http://localhost:8000/admin/mysterykeeper/ zu erreichen. Ruft man diese URL auf, sieht man die Startseite der Admin-Backend für Mysterykeeper:

Startseite des Admin-Backends
Wie zu sehen ist, gibt es zwei Tabellen in der Datenbank von Mysterykeeper:
  • "Solution" zum Speichern der Cache-bezogen Daten / Lösungen
  • "Attachment" zum Speichern von Anhängen zum einem Cache (z.B. Bilder u.ä.)
Nach einem Klick auf "Add" gelangt man in die Eingabemaske, welche so aussieht:

Eingabemaske für neue (gelöste) Caches
Aktuell ist die Datenbank so aufgebaut, dass man die folgende Daten eingeben kann:
  • GC-Nummer
  • Cachename
  • Cachetyp
  • Notizen (beliebig langer Text)
  • Finalkoordinaten
  • geloggt (Checkbox - ausgewählt = ja)
  • Ort

Als Cachetyp kann man - neben "Unknown Cache" (der offiziellen Bezeichnung von Groundspeak für Mysteries), wie im obigen Beispiel - auch noch einige andere Cachetypen auswählen, wie im folgenden Bildschirmfoto zu sehen ist:

Cachetypen, welche man in Mysterykeeper speichern kann
Ein Klick auf "Save" speichert die Daten und man gelangt automatisch auf die Übersichtsseite aller gespeicherten Caches. Der zuletzt hinzugefügt steht immer als oberstes in der Liste:

Liste der in Mysterykeeper gespeicherten Lösungen
Wie oben erwähnt, kann man zu jeder Lösung auch noch (beliebig viele) Anhänge hinterlegen, und zwar über die folgende Eingabemaske:

Eingabemaske für Anhänge für gespeicherte Lösungen
So weit, so gut. Wie gesagt erfolgt die Anzeige und Abfrage der gespeicherten Lösung über HTML-Seiten, welche vom Django-Server ausgeliefert werden. Ruft man die URL http://localhost:8000/mysterykeeper/ auf, so erscheint folgende Startseite:

Liste der gelösten, aber noch nicht geloggten Caches

Aufgelistet werden, sortiert nach GC-Nummer, alles gelösten, aber noch nicht geloggten (=gefundenen) Caches. Die Sortierung lässt sich durch eine Klick auf die Spaltenüberschrift auch nach anderen Tabellenspalten sortieren.

Klick man auf die GC-Nummer, erscheinen die Details zum Cache:

Details zu einem in Mysterykeeper hinterlegtem Cache
Hier sieht man alles, was man in der Eingabemaske des Admin-Backends eingegeben hat. Die drei Schaltfläche "Show at Google Maps", "Show at OSM", "Show Listing" sind wohl selbsterklärend: Die ersten beiden rufen Google Maps bzw. Open Street Map auf und zeigen eine Karte, wo das Final des Caches mit einem Marker markiert ist. Letztere Schaltfläche ruft das Listing bei geocaching.com auf.

Ein Klick auf "Mark as logged" markiert den Cache als geloggt. Als Sicherung gegen versehentliches Anklicken erfolgt danach noch eine Sicherheitsabfrage, ob man den Cache wirklich als "geloggt" markieren möchte.

Sicherheitsabfrage, ob man einen Cache wirklich als "geloggt" kennzeichnen möchte.

Neben der Standardanzeige der gelösten, aber ungeloggten Caches, kann man sich auf der Startseite auch noch alles Caches (unabhängig davon, ob geloggt oder nicht) anzeigen lassen bzw. man kann sich auch nur alle geloggten Caches ausgeben lassen.

Ein weiteres Feature des Mysterykeepers ist die Suche nach gelösten, aber nicht geloggten Caches in einem frei bestimmbaren Umkreis um vorzugebende Koordinaten:

Suche nach gelösten Cache im Umkreis nach vorzugebenden Koordinaten
Das Ergebnis sieht dann z.B so aus:


So weit, so gut. Von der Funktionalität her bietet der Mysterykeeper alles, was wir für uns brauchen. Und wenn mal irgendwann noch was fehlt wird's halt dazu programmiert.

Wir selber haben das Programm seit einiger Zeit im Einsatz und es ist: praktisch. Vor allem haben wir nach der Datenübernahme aus der alten JSON-Datei erst Mal gesehen, wie viele gelöste aber noch nicht gesuchte und nicht geloggte Mysteries wird so haben...

Ob der Programmcode irgendwann auch mal in einem öffentlich zugänglichem Repositry liegen wird steht noch nicht fest. Nicht, weil er closed source oder streng geheim wäre oder so - aber in erster Linie nutzen wird Mysterykeeper ja für uns selber.

Falls jemand Interesse am Code hat und diesen haben möchte - kein Problem, können wir zusenden. Dazu uns einfach kontaktieren. Wer eine leise Ahnung von Python und Django hat sollte auch keine Probleme haben, den Mysterykeeper bei sich lokal zum Laufen zu bringen.

Und wenn sich noch jemand fragt, warum das Programm (noch) komplett auf Englisch ist: das ist a) die Macht der Gewohnheit und b) ein gegebener Anlass, später auch mal das i18n-Modul von Django zur Übersetzung / Eindeutschung zu nutzen.


Nachtrag: Mysterykeeper kann (natürlich) auch mit Caches umgehen, die bei opencaching.de gelistet sind. Bei einem Klick auf "Show Listing" wird dann halt die Seite von opencaching.de (statt geocaching.com) aufgerufen.

Kommentare:

  1. Ich versteh nur Bahnhof. Ist mir auch viel zu kompliziert. Ich speichere die gelösten Mysteries in einer Bookmarkliste die ich wiederum als Pocket Query definiert habe.

    AntwortenLöschen
    Antworten
    1. Die Bedienung ist total simpel, weil das genau so funktioniert wie im Web surfen. Das Admin-Backend ist am Ende auch nur eine Reihe von HTML-Formularen.
      (Und kompliziert würde er Blogartikel erst, wenn man die zu Grunde liegen Technik erklären wurde. Habe ich mir aber gespart ;-) )

      Löschen
  2. Hallo,
    genau so etwas suche ich für meine Mystery. Ich wollte das Programm auch gleich testen, aber wenn ich "http://localhost:8000/admin/mysterykeeper" eingebe, erscheint " Die Seite kann nicht angezeigt werden." Muss man noch irgendwelche Einstellungen vornehmen?

    AntwortenLöschen
    Antworten
    1. Klar muss du - du musst da Programm erst mal installieren! `localhost` ist die Adresse deines eigenen Rechners... Wenn du Interesse an dem Programm hast, kontaktier' uns bitte per Mail, dann können wir dir eine Kopie zukommen lassen und über die Installation reden.

      Löschen