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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 233 - (hide 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 teichmann 233 #!/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