Wontolla-fetch

Wontolla-fetch kan de XML-export in Scouts Online omzetten in een MySQL database, voor lokaal gebruik.

Oorsprong

Al sinds het begin van Scouts Online, in 2004, is de XML-export beschikbaar. Eelco Maljaars heeft hier voor zijn eigen scoutinggroep een parser op geschreven en deze beschikbaar gesteld met de GPL-licentie. Wontolla-fetch heeft echter nooit een echt plekje op het internet gekregen en daardoor is de beschikbaarheid verloren gegaan. Door deze licentiestructuur is het mogelijk dat een ieder zijn bijdrage kan leveren.

Opzet

Wontolla-fetch bestaat uit een tweetal scripts en een configuratiebestand. De oorspronkelijke versie van Eelco is geschreven in Perl, maar omdat ikzelf van mening ben dat Perl 'write-only' is heb ik hetzelfde herschreven in Python.

Downloaden

Kan hier: wontolla-fetch.tgz

Installatie

Er worden een aantal Python-libaries gebruikt:

argparse, logging, ConfigParser, MySQLdb, hashlib, sys, string, xml.dom.minidom, csv
Zelf heb ik geen moeite gehad deze op een Debian systeem te installeren middels apt, maar mocht je niet de beschikking hebben tot root-toegang, kun je de libaries ook in dezelfde map plaatsen.

Configuratie

Plaats in etc/ een .ini bestand. Ik heb zelf het organisation-id gebruikt, dus 1760.ini. Stop daar zoiets in:
[dbsettings]
db_host=localhost
db_name=scoutingtexel
db_user=xxx
db_password=yyy

db_schema=raksha	# Raksha or WDZ, depricated 

[snweb_settings]
user_name=xxx		# username on sol.scouting.nl
user_password=yyy
user_role=51,176000869,10,1760,10,7
output_dir=/home/scoutingte/scripts/wontolla-fetch/tmp

[useragent_settings]
support_address=user@example.com
De user_role is de rol die je moet hebben om de XML te kunnen downloaden. Je kunt dit achterhalen door in te loggen op Scouts Online, en dan in de source zoeken naar 'gegevensbeheerder'. Je komt dan vlak ervoor <option value="xxx">Gegevensbeheerder tegen. Waarde xxx is nodig :)

Database

De import probeert alle velden uit de export te verwerken. Dit zal inhouden dat de database soms aangepast moet worden, als Team Internet besluit een extra veld mee te geven bij de export. Ten tijden van schrijven was dit het schema: schema.sql. Mail me gerust om de meest recente versie.

Testen

Voer uit: ./bin/sndata_fetcher.py -c etc/1760.ini om de downloads te starten. Deze zullen dan in tmp/ verschijnen als groupdata.xml, roles.tsv en qualifications.tsv. Als dit succesvol is, kun je ./bin/sndata_parser.py -c etc/1760.ini draaien. Extra output is te verkrijgen met de parameter --verbose

Cron

Het is dan natuurlijk handig dat dit alles automatisch gebeurd. Zet daaom iets als dit in je cron. Let wel dat het downloaden een flinke belasting is op de Scouting Nederland servers, dus doe niet niet te vaak, maar wel regelmatig.
# Wontolla-fetch: XML import van Scouting Nederland naar lokaal
08 7,12,16,20,0 * * * /home/scoutingte/scripts/wontolla-fetch/bin/sndata_fetcher.py --config /home/scoutingte/scripts/wontolla-fetch/etc/1760.ini
25 7,12,16,20,0 * * * /home/scoutingte/scripts/wontolla-fetch/bin/sndata_parser.py --config /home/scoutingte/scripts/wontolla-fetch/etc/1760.ini

Vragen?

Schroom niet om me te mailen op tjerkjanvonk at scoutingtexel.nl