]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_abgleich/AWK/SVereinControl.py
Erste Version
[SVBaL.git] / python / eh_util / eh_abgleich / AWK / SVereinControl.py
1 from AWK.mitglied import Mitglied
2 class SVereinDatei(object):
3     '''
4     classdocs
5     '''
6
7     def __init__(self, datei_name):
8         '''
9         Constructor
10         '''
11         self.datei_name = datei_name
12         self.mitglieder = {}
13         self.get_merker = 0
14         
15         dh = open(datei_name)
16         line = dh.readline().rstrip()
17         export_header = line.split(";")
18         
19         sv_pn_spalte = -1
20         
21         i = 0
22         for kopf in export_header:
23             if kopf[0] == '"':
24                 kopf = kopf[1:-1]
25             if kopf == 'Mitglieds-Nr':
26                 sv_pn_spalte = i
27             i += 1
28         
29         if sv_pn_spalte == -1:
30             raise RuntimeError("S-Verein-Export enthält keine Partnernummer")
31
32         for line in dh:
33             data = line.rstrip().split(";")
34             pn = data[sv_pn_spalte]
35             if len(pn) == 0:
36                 print("Diese Zeile (export) hat keine Migliedsnummer: ", line)
37             else:
38                 if pn[0] == '"':
39                     pn = pn[1:-1]
40                 pn = int(pn)
41                 self.mitglieder[pn] = Mitglied(data)
42         # setze zusätzliche Mitgliedschaften im Stamm
43         for mnr in self.mitglieder:
44             if self.mitglieder[mnr].stammnummer > 0:
45                 self.mitglieder[self.mitglieder[mnr].stammnummer].add_weitere_mitgliedschaft(mnr)
46
47     def get(self, mnr = None):
48         if mnr:
49             return self.mitglieder[mnr]
50         if self.get_merker == 0:
51             for m in self.mitglieder:
52                 self.get_merker = m
53                 return self.mitglieder[m]
54         return_next = False
55         for m in self.mitglieder:
56             if return_next:
57                 self.get_merker = m
58                 return self.mitglieder[m]
59             if m == self.get_merker:
60                 return_next = True
61         return None