/[formed]/trunk/tools/anonym/xmlimport.py
ViewVC logotype

Contents of /trunk/tools/anonym/xmlimport.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 233 - (show annotations)
Mon Feb 25 06:35:39 2008 UTC (17 years ago) by teichmann
File MIME type: text/x-python
File size: 21753 byte(s)
Added support for reading files generated by XML export.

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # (c) 2008 by Intevation GmbH
4 # author: Sascha L. Teichmann
5 #
6 from datetime import date
7
8 from xml.sax.saxutils import DefaultHandler
9 from xml.sax import parse
10
11 import sys
12
13 def _int_converter(s):
14 return int(s)
15
16 def _bool_converter(s):
17 return int(s)
18
19 def _date_converter(s):
20 return date(*s.split("-"))
21
22 def _choice_converter(s):
23 return int(s)
24
25 def _radio_converter(s):
26 return int(s)
27
28 def _text_converter(s):
29 return s
30
31 RELATIONS = {
32 'master': {
33 "einverstaendniserklaerung": _bool_converter,
34 "fkz": _text_converter,
35 "name_kompetenzagentur": _text_converter,
36 "vorname": _text_converter,
37 "name": _text_converter,
38 "erstgespraech": _date_converter,
39 "zugang_kompetenzagentur": _choice_converter,
40 "kundennummer": _text_converter,
41 "schulpflichtig": _bool_converter,
42 "noch_schueler": _bool_converter,
43 "bei_eintritt_ist_der_jugendliche": _choice_converter,
44 "rechtlicher_kontext": _choice_converter,
45 "schnittstelle_zu": _choice_converter,
46 "kontaktdaten_arge": _text_converter,
47 "kundennummer_arge": _text_converter,
48 "kontaktdaten_agentur_fuer_arbeit": _text_converter,
49 "kundennummer_agentur_fuer_arbeit": _text_converter,
50 "kundennummer_jugendamt": _text_converter,
51 "kontaktdaten_jugendamt": _text_converter,
52 "kontaktdaten_schule": _text_converter,
53 "schulname": _text_converter,
54 "kontaktdaten_gerichtshilfe": _text_converter,
55 "kundennummer_gerichtshilfe": _text_converter,
56 "kontaktdaten_weitere_institutionen": _text_converter,
57 "vorname_1": _text_converter,
58 "name_1": _text_converter,
59 "geschlecht": _choice_converter,
60 "geburtsdatum": _date_converter,
61 "familienstand": _choice_converter,
62 "strasse": _text_converter,
63 "plz": _text_converter,
64 "wohnort": _text_converter,
65 "groesse_wohnort": _choice_converter,
66 "vorwahl": _text_converter,
67 "telefon_1": _text_converter,
68 "mobiltelefon": _text_converter,
69 "email": _text_converter,
70 "telefon_sonstige": _text_converter,
71 "zweiter_wohnort": _text_converter,
72 "geburtsland": _choice_converter,
73 "geburtsland_sonstige_nennung": _text_converter,
74 "muttersprache": _choice_converter,
75 "muttersprache_sonstige_nennung": _text_converter,
76 "staatsangehoerigkeit": _choice_converter,
77 "staatsangehoerigkeit_sonstige_nennung": _text_converter,
78 "aufenthaltsstatus": _choice_converter,
79 "aufenthaltsdauer": _int_converter,
80 "vater": _choice_converter,
81 "mutter": _choice_converter,
82 "familiaere_situation_1": _choice_converter,
83 "vorname_2": _text_converter,
84 "name_2": _text_converter,
85 "vorwahl_1": _text_converter,
86 "telefon_1_1": _text_converter,
87 "mobiltelefon_1": _text_converter,
88 "email_1": _text_converter,
89 "geschwister": _int_converter,
90 "anzahl_kinder": _int_converter,
91 "haushalt_jugendlicher": _int_converter,
92 "alleinerziehend": _choice_converter,
93 "familie_selbststaendig": _bool_converter,
94 "familie_staatliche_unterstuetzung": _bool_converter,
95 "jugendlicher_selbststaendig": _bool_converter,
96 "jugendlicher_staatliche_unterstuetzung": _bool_converter,
97 "jugendlicher_unterstuetzung_soziales_umfeld": _bool_converter,
98 "wohnaufenthalt": _choice_converter,
99 "arzt_gutachten_physisch": _bool_converter,
100 "physische_beeintraechtigungen": _choice_converter,
101 "physische_beeintraechtigungen_text": _text_converter,
102 "arzt_gutachten_psychisch": _bool_converter,
103 "psychische_beeintraechtigungen": _choice_converter,
104 "psychische_beeintraechtigungen_text": _text_converter,
105 "mutter_2": _bool_converter,
106 "vater_2": _bool_converter,
107 "grosseltern": _bool_converter,
108 "geschwister_2": _bool_converter,
109 "pflegefamilie_1": _bool_converter,
110 "stiefmutter": _bool_converter,
111 "stiefvater": _bool_converter,
112 "verwandte_1": _bool_converter,
113 "partner": _bool_converter,
114 "heimbetreuerin": _bool_converter,
115 "betreuerin": _bool_converter,
116 "lehrerin": _bool_converter,
117 "mitbewohner": _bool_converter,
118 "partner_mutter": _bool_converter,
119 "partner_vater": _bool_converter,
120 "freund": _bool_converter,
121 "keine_bezugsperson": _bool_converter,
122 "hobbies_1": _choice_converter,
123 "hobbies_text": _text_converter,
124 "mitarbeit_organisationen": _choice_converter,
125 "organisationen_vereine_text": _text_converter,
126 "sonstiges_1": _choice_converter,
127 "sonstiges_text": _text_converter,
128 "clique": _bool_converter,
129 "freundin": _bool_converter,
130 "parterin": _bool_converter,
131 "schule_2": _choice_converter,
132 "klassenstufe": _int_converter,
133 "klassenwiederholung": _choice_converter,
134 "abgang": _int_converter,
135 "nicht_anwesende_tage": _int_converter,
136 "unentschuldigte_tage": _int_converter,
137 "schulabschluss_1": _choice_converter,
138 "schulabschlusserwerbsland": _choice_converter,
139 "schulabschlusserwerbsland_sonstige_nennung": _text_converter,
140 "abschluss_betriebliche_ausbildung": _choice_converter,
141 "abschluss_im_ausbildungsberuf": _text_converter,
142 "ausbildungsdauer": _int_converter,
143 "wann_abgeschlossen": _date_converter,
144 "weitere_ausbildungen": _int_converter,
145 "weitere_ausbildungen_text": _text_converter,
146 "dauer_weitere_ausbildungen": _int_converter,
147 "abgebrochene_ausbildungen": _int_converter,
148 "abgebrochene_ausbildungen_text": _text_converter,
149 "abschluss_ausserbetriebliche_ausbildung": _choice_converter,
150 "abschluss_im_ausbildungsberuf_1": _text_converter,
151 "ausbildungsdauer_1": _int_converter,
152 "wann_abgeschlossen_1": _date_converter,
153 "weitere_ausbildungen_1": _int_converter,
154 "weitere_ausbildungen_text_1": _text_converter,
155 "dauer_weitere_ausbildungen_1": _int_converter,
156 "abgebrochene_ausbildungen_1": _int_converter,
157 "abgebrochene_ausbildungen_text_1": _text_converter,
158 "massnahmeteilnahme": _choice_converter,
159 "letzte_massnahme": _text_converter,
160 "finanzierung": _text_converter,
161 "austrittsdatum": _date_converter,
162 "dauer": _int_converter,
163 "weitere_massnahmen": _choice_converter,
164 "massnahme_1": _text_converter,
165 "massnahme1_finanzierung": _text_converter,
166 "massnahme_2": _text_converter,
167 "massnahme2_finanzierung": _text_converter,
168 "massnahme_3": _text_converter,
169 "massnahme3_finanzierung": _text_converter,
170 "abgebrochene_massnahmen": _int_converter,
171 "erwerbstaetigkeit_job": _choice_converter,
172 "letzte_taetigkeit": _text_converter,
173 "dauer_1": _int_converter,
174 "austrittsdatum_1": _date_converter,
175 "weitere_taetigkeiten": _int_converter,
176 "weitere_jobs_text": _text_converter,
177 "dauer_weitere_taetigkeiten": _int_converter,
178 "arbeitslosigkeit_1": _choice_converter,
179 "anzahl_arbeitslosigkeit": _int_converter,
180 "dauer_nach_letzter_beschaeftigung": _int_converter,
181 "dauer_insgesamt": _int_converter,
182 "wehrpflicht_zivildienst_freiwilligenjahr_1": _choice_converter,
183 "art_des_dienstes": _choice_converter,
184 "dauer_2": _int_converter,
185 "mutterschutz_erziehungsurlaub": _choice_converter,
186 "anzahl": _int_converter,
187 "dauer_letzter_erziehungsurlaub": _int_converter,
188 "dauer_insgesamt_1": _int_converter,
189 "kompetenzfeststellung": _choice_converter,
190 "zielsetzung": _choice_converter,
191 "begleitung": _choice_converter,
192 "welche_vermittlung_nennung": _text_converter,
193 "freie_dokumentation": _text_converter,
194 "bildender_bereich": _bool_converter,
195 "bereich_berufliche_qualifizierung": _bool_converter,
196 "bereich_berufsvorbereitung": _bool_converter,
197 "bereich_lebensbewaeltigung": _bool_converter,
198 "sonstiger_foerderbedarf": _bool_converter,
199 "sonstiger_foerderbedarf_nennung": _text_converter,
200 "foerderzeitraum_start": _date_converter,
201 "foerderzeitraum_ende": _date_converter,
202 "dokumentation_zum_foerderplan": _text_converter,
203 "anzahl_kontakte_termine": _int_converter,
204 "anzahl_der_stunden": _int_converter,
205 "zeitraum_fallmanagement": _int_converter,
206 "beendigung_5": _date_converter,
207 "art_beendigung": _choice_converter,
208 "abbruch_durch": _choice_converter,
209 "gruende_abbruch": _choice_converter,
210 "gruende_sonstiges_nennung_4": _text_converter,
211 "vermittlung": _choice_converter,
212 "vermittlung_nennung": _text_converter,
213 "veraenderungen_rechtskreis": _choice_converter,
214 "allgemein_bildender_schulabschluss": _choice_converter,
215 "allgemein_bildender_schulabschluss_sonstiges_nennung": _text_converter,
216 "massnahmeabschluss": _choice_converter,
217 "schulart": _choice_converter,
218 "schule_sonstiges_nennung": _text_converter,
219 "klassenstufe_1": _int_converter,
220 "ausbildung": _choice_converter,
221 "ausbildung_sonstiges_nennung": _text_converter,
222 "umschulung": _choice_converter,
223 "umschulung_nennung": _text_converter,
224 "arbeitstaetigkeit": _text_converter,
225 "erwerbstatus": _choice_converter,
226 "erwerbsstatus_sonstiges_nennung": _text_converter,
227 "beschaeftigungsumfang": _choice_converter,
228 "kategorien_nichterwerbsarbeit_nichtausbildung": _choice_converter,
229 "kategorien_sonstiges_nennung": _text_converter,
230 "zeitraum_nachbetreuung": _choice_converter,
231 "verbleib_nachbetreuung": _choice_converter,
232 "mitgliedschaft_organisationen_vereinen": _choice_converter,
233 "intensitaet_mitgliedschaft": _choice_converter,
234 "nutzung_kulturangeboten": _choice_converter,
235 "haeufigkeit": _choice_converter,
236 "soziales_engagement": _text_converter,
237 "unternehmungen_freunden": _choice_converter,
238 "unternehmungen_familie": _choice_converter,
239 "peergroup": _choice_converter,
240 "familie_1": _choice_converter,
241 "beziehung": _choice_converter,
242 "arbeit_schule": _choice_converter,
243 "bester_freund_freundin": _choice_converter,
244 "einschaetzung_zielerreichung": _choice_converter,
245 "erreichte_qualifikation": _choice_converter,
246 "integration_ist_nachhaltig": _choice_converter,
247 "selbststaendige_berufswegplanung": _choice_converter,
248 "eigenstaendige_lebensgestaltung": _choice_converter,
249 "soziale_bezugssysteme": _choice_converter,
250 "teilnahme_gesellschaftliches_leben": _choice_converter,
251 "freie_dokumentation_abschlussbewertung": _text_converter
252 },
253 'kompetenzfestellung': {
254 "verfahren_kompetenzfeststellung": _choice_converter,
255 "externeranbieter": _text_converter,
256 "assessment_center": _bool_converter,
257 "interview": _bool_converter,
258 "biografieorientierte_methoden": _bool_converter,
259 "selbsttest_selbstbeurteilung": _bool_converter,
260 "sonstiges_2": _bool_converter,
261 "artdesverfahrens_nennung_sonstiges": _text_converter,
262 "testverfahren": _bool_converter,
263 "intelligenztest": _bool_converter,
264 "intelligenztest_nennung": _text_converter,
265 "schultest": _bool_converter,
266 "schultest_nennung": _text_converter,
267 "leistungstest": _bool_converter,
268 "leistungstest_nennung": _text_converter,
269 "persoenlichkeitstest": _bool_converter,
270 "persoenlichkeitstest_nennung": _text_converter,
271 "einstellungs_interessentest": _bool_converter,
272 "einstellungs_interessentest_nennung": _text_converter,
273 "dauer_des_verfahrens": _choice_converter,
274 "rechenfaehigkeit": _choice_converter,
275 "raeumliches_vorstellungsvermoegen": _choice_converter,
276 "grundverstaendnis_naturwissenschaftlicher_zusammenhaenge": _choice_converter,
277 "logisches_denken": _choice_converter,
278 "wirtschaftliche_grundkenntnisse": _choice_converter,
279 "allgemeine_pc_kenntnisse": _choice_converter,
280 "spezielle_pc_kenntnisse_grafikbearbeitung_musikbearbeitung": _choice_converter,
281 "internet_anwendungen_und_e_mail_kenntnisse": _choice_converter,
282 "andere_medien": _choice_converter,
283 "hand_fingergeschick": _choice_converter,
284 "formauffassung": _choice_converter,
285 "umgang_maschinen_werkzeugen": _choice_converter,
286 "gestalterische_fantasie": _choice_converter,
287 "methoden_der_informationsgewinnung": _choice_converter,
288 "methoden_der_informationsverarbeitung": _choice_converter,
289 "einsatz_lern_und_arbeitstechniken": _choice_converter,
290 "problemloesungsorientierung": _choice_converter,
291 "texte_lesen_und_verstehen": _choice_converter,
292 "texte_schreiben_und_formulieren": _choice_converter,
293 "deutsche_sprache": _choice_converter,
294 "sprache1": _choice_converter,
295 "sprache1_sonstige_nennung": _text_converter,
296 "beherrschung_sprache1": _choice_converter,
297 "sprache2": _choice_converter,
298 "sprache2_sonstige_nennung": _text_converter,
299 "beherrschung_sprache2": _choice_converter,
300 "sprache3": _choice_converter,
301 "sprache3_sonstige_nennung": _text_converter,
302 "beherrschung_sprache3": _choice_converter,
303 "kommunikationsfaehigkeit": _choice_converter,
304 "kritikfaehigkeit": _choice_converter,
305 "konfliktfaehigkeit": _choice_converter,
306 "kreativitaet": _choice_converter,
307 "team_und_kooperationsfaehigkeit": _choice_converter,
308 "solidarisches_verhalten": _choice_converter,
309 "selbstaendiges_lernen_arbeiten": _choice_converter,
310 "selbstreflexion_selbsteinschaetzung": _choice_converter,
311 "verantwortungsuebernahme": _choice_converter,
312 "zielorientierung": _choice_converter,
313 "zuverlaessigkeit": _choice_converter,
314 "altersgerechter_entwicklungsstand": _choice_converter,
315 "gesundheitliche_voraussetzungen": _choice_converter,
316 "konzentration": _choice_converter,
317 "ausdauer": _choice_converter,
318 "durchhaltevermoegen": _choice_converter,
319 "merkfaehigkeit": _choice_converter,
320 "bearbeitungsgeschwindigkeit": _choice_converter,
321 "befaehigung_zu_daueraufmerksamkeit": _choice_converter,
322 "leistungsbereitschaft": _choice_converter,
323 "sorgfalt": _choice_converter,
324 "umgangsformen": _choice_converter,
325 "dokumentation_kompetenzfeststellung": _text_converter
326 },
327 'angebote_bildenden_bereich': {
328 "angebotsform": _choice_converter,
329 "art_der_unterstuetzung": _text_converter,
330 "durchfuehrende_institution": _text_converter,
331 "unterstuetzung_start": _date_converter,
332 "unterstuetzung_ende": _date_converter,
333 "zeitlicher_umfang_unterstuetzung": _int_converter,
334 "beendigung_1": _choice_converter,
335 "beendigung_durch": _choice_converter,
336 "gruende_vorzeitige_beendigung": _choice_converter,
337 "gruende_sonstiges_nennung": _text_converter,
338 "nachweis_bescheinigung": _choice_converter,
339 "sonstiges_nachweis_bescheinigung": _text_converter
340 },
341 'angebote_berufsvorbereitung': {
342 "angebotsform_1": _choice_converter,
343 "art_der_unterstuetzung_1": _choice_converter,
344 "unterstuetzung_sonstiges_nennung": _text_converter,
345 "durchfuehrende_institution_1": _text_converter,
346 "unterstuetzung_start_1": _date_converter,
347 "unterstuetzung_ende_1": _date_converter,
348 "zeitlicher_umfang_unterstuetzung_1": _int_converter,
349 "beendigung_2": _choice_converter,
350 "beendigung_durch_1": _choice_converter,
351 "gruende_vorzeitige_beendigung_1": _choice_converter,
352 "gruende_sonstiges_nennung_1": _text_converter,
353 "nachweis_bescheinigung_1": _choice_converter,
354 "sonstiges_nachweis_bescheinigung_1": _text_converter
355 },
356 'angebote_berufliche_qualifizierung': {
357 "angebotsform_2": _choice_converter,
358 "angebote_im_bereich": _choice_converter,
359 "unterstuetzung_sonstiges_nennung_1": _text_converter,
360 "durchfuehrende_institution_2": _text_converter,
361 "unterstuetzung_start_2": _date_converter,
362 "unterstuetzung_ende_2": _date_converter,
363 "zeitlicher_umfang_unterstuetzung_2": _int_converter,
364 "beendigung_3": _choice_converter,
365 "beendigung_durch_2": _choice_converter,
366 "gruende_vorzeitige_beendigung_2": _choice_converter,
367 "gruende_sonstiges_nennung_2": _text_converter,
368 "nachweis_bescheinigung_2": _choice_converter,
369 "sonstiges_nachweis_bescheinigung_2": _text_converter
370 },
371 'angebote_lebensbewaeltigung': {
372 "angebotsform_3": _choice_converter,
373 "unterstuetzung_angebotsform_sonstiges_nennung": _text_converter,
374 "art_der_unterstuetzung_2": _choice_converter,
375 "unterstuetzung_sonstiges_nennung_2": _text_converter,
376 "durchfuehrende_institution_3": _text_converter,
377 "unterstuetzung_start_3": _date_converter,
378 "unterstuetzung_ende_3": _date_converter,
379 "zeitlicher_umfang_unterstuetzung_3": _int_converter,
380 "beendigung_4": _choice_converter,
381 "beendigung_durch_3": _choice_converter,
382 "gruende_vorzeitige_beendigung_3": _choice_converter,
383 "gruende_sonstiges_nennung_3": _text_converter,
384 "nachweis_bescheinigung_3": _choice_converter,
385 "sonstiges_nachweis_bescheinigung_3": _text_converter
386 }
387 }
388
389 EXPECT_CASES = 0
390 EXPECT_CASE = 1
391 EXPECT_RELATION = 2
392 EXPECT_FIELD = 3
393 EXPECT_CHARS = 4
394
395 class Case:
396 def __init__(self):
397 self.relations = []
398
399 def append(self, relation):
400 self.relations.append(relation)
401
402 class Relation:
403
404 def __init__(self, name, items):
405 self.name = name
406 self.items = items
407 self.uuid = None
408 self.fields = []
409
410 def append(self, field):
411 self.fields.append(field)
412
413 class XMLHandler(DefaultHandler):
414
415 def __init__(self, case_store):
416 DefaultHandler.__init__(self)
417 self.mode = EXPECT_CASES
418 self.ignore = 0
419 self.relation = None
420 self.chars = None
421 self.case_store = case_store
422 self.case = None
423
424 def startElement(self, name, attrs):
425 if self.mode == EXPECT_CASES:
426 if name != "cases":
427 print >> sys.stderr, "ignore %s" % name
428 self.ignore += 1
429 else:
430 self.mode = EXPECT_CASE
431
432 elif self.mode == EXPECT_CASE:
433 if name != "case":
434 print >> sys.stderr, "ignore %s" % name
435 self.ignore += 1
436 else:
437 self.case = Case()
438 self.mode = EXPECT_RELATION
439
440 elif self.mode == EXPECT_RELATION:
441 rel = RELATIONS.get(name)
442 if rel is None:
443 print >> sys.stderr, "relation '%s' not found" % name
444 self.ignore += 1
445 else:
446 #print >> sys.stderr, "relation '%s' found" % name
447 self.relation = Relation(name, rel)
448 self.mode = EXPECT_FIELD
449
450 elif self.mode == EXPECT_FIELD:
451 self.mode = EXPECT_CHARS
452 self.chars = ""
453
454 elif self.mode == EXPECT_CHARS:
455 self.ignore += 1
456
457 def endElement(self, name):
458 if self.ignore > 0:
459 self.ignore -= 1
460 return
461
462 if self.mode == EXPECT_CHARS:
463 if name != "uuid_id":
464 converter = self.relation.items.get(name)
465 if converter is None:
466 print >> sys.stderr, "missing converter for %s" % name
467 else:
468 if not self.chars:
469 self.relation.append((name, None))
470 else:
471 #print >> sys.stderr, "convert %s" % name
472 self.relation.append((name, converter(self.chars)))
473 else:
474 self.relation.uuid = self.chars.strip()
475 #print >> sys.stderr, "uuid: %s" % self.relation.uuid
476
477 self.mode = EXPECT_FIELD
478 self.chars = None
479
480 if self.mode == EXPECT_FIELD:
481 if self.relation and self.relation.name == name:
482 self.case.append(self.relation)
483 self.relation = None
484 self.mode = EXPECT_RELATION
485 else:
486 pass
487
488 elif self.mode == EXPECT_RELATION:
489 if name == "case":
490 self.case_store.store(self.case)
491 self.case = None
492 self.mode = EXPECT_CASE
493
494 elif self.mode == EXPECT_CASE:
495 if name == "cases":
496 self.mode = EXPECT_CASES
497
498 def characters(self, content):
499 if self.mode == EXPECT_CHARS:
500 self.chars += content
501
502 class CaseStore:
503
504 def __init__(self):
505 pass
506
507 def store(self, case):
508 print >> sys.stderr, "case loaded"
509
510 def main():
511 case_store = CaseStore()
512 handler = XMLHandler(case_store)
513 parse(sys.stdin, handler)
514
515 if __name__ == '__main__':
516 main()
517
518 # vim:set ts=4 sw=4 si et sta sts=4:
519

Properties

Name Value
svn:executable *

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26