Das Projekt entstand im Rahmen des Coding Contest 2012. Die verwendete Plattform ist dabei Python.
Du sollst eine Web Applikation schreiben, die zur Verwaltung von Büchern
dient - ganz im Sinne einer digitalen Bibliothek. Bei den Features hast
du freie Hand - es ist also deine Kreativität gefragt! Wer die Web Applikation
mit einer API ausstattet, kann zusätzliche Punkte bekommen.
Die erstellte Webanwendung basiert auf Django 1.4 und bindet weitere Bibliotheken ein. Für den vollen Funktionsumfang sind folgende Mindest-Vorraussetzungen erforderlich:
- Python 2.5
- Django 1.4
- python-mimeparse
- python-dateutil
- Python Imaging Library
Optional:
Nachdem Django und die benötigten Bibliotheken installiert wurden kann die Anwendung mittels
python manage.py runserver
aus dem Projektverzeichnis gestartet werden und steht dann unter
http://localhost:8000
bereit. Dem Projekt liegt eine sqlite-Datenbank mit Testdaten
bereits bei. Bei Bedarf kann aber auch eine beliebige andere Datenbank verwendet werden. Die Datenbank
besitzt bereits einen Django Administrator mit dem Namen admin
und Passwort admin
.
Um ein einfaches Ausprobieren des Systems zu ermöglichen wird eine Einstellungsdatei mit ausgeliefert die u.a. einen SECRETKEY preis gibt. Desweiteren liegt der Anwendung ein API-Key für das REST-Interface bei.
Das Backend besteht aus 6 Klassen, deren recht einfach gehaltene Beziehungen nachfolgendes UML-Klassendiagramm darstellt:
Die Buch-Verwaltung besitzt eine REST-Schnittstelle, die es in der Standard-Konfiguration ermöglicht von außen beliebig neue Objekte anzulegen, zu ändern oder zu löschen. Die verwendete Bibliothek ist dabei Tastypie.
Eine Beispiel-Abfrage, welche alle gespeicherten Bücher als JSON zurückgibt, sehe mittels Curl wiefolgt aus:
curl --user admin:admin http://localhost:8000/api/v1/buch/?format=json
Für eine volle Dokumentation über den Funktionsumfang der Schnittstelle, siehe "interacting with the API". Die auf der Übersichtsseit angezeigten Daten werden exemplarisch über die API angefordert. v
Aufbauend auf Exhibit lassen sich die erstellten Bücher durchsuchen und durch umfangreiche Filterkriterien einschränken.
Es werden drei Ansichten auf den Bücherbestand zur Verfügung gestellt. Eine Vorschauansicht, eine tabellarische Darstellung und eine Zeitreihen-Ansicht basierend auf dem Veröffentlichungsdatum der Bücher.
In der Übersicht ist es möglich die angezeigten Bücher in unterschiedliche Formate wie RDF/XML oder tsv zu exportieren. Dazu muss mit dem Mauszeiger über einen Eintrag gefahren werden, worauf hin ein orange-farbenes Scherensymbol eingeblendet wird. Dieses stellt das Exportmenü zur Verfügung.
Um über Bücher hinausgehend für alle Klassen Instanzen zu erzeugen gibt es ein Administrations-Interface welches standardmäßig unter /admin/
aufgerufen werden kann.
Sofern docutils installiert ist steht unter /admin/doc/
eine Entwickler-Dokumentation zur Verfügung,
die neben den Core-Funktionen von Django auch die Dokumentation der entwickelten Klassen umfasst.
Um die erstellten Tests auszuführen muss lediglich
python manage.py test books
im Projektverzeichnis ausgeführt werden, worauf hin alle Tests ausgeführt werden.