Exemplo n.º 1
0
def create_new_kategorien(new_table, merkmals_datei):
    """Erstelle eine Liste der Kategorien und eine Liste der Codes,
    die für new_table benötigt werden, aber noch nicht in der Datenbank
    sind.
    """
    
    needed = [f.kat_code for f in new_table.fields if f.kat_code]
    needed.append('jghag') # Altersgruppe in keinem Feld
    existing = [k['code'] for k in KategorieList(where='')]
    needed_and_not_existing = [k for k in needed if k not in existing]
    
    merkmale = {}
    execfile(merkmals_datei, merkmale)
    kategorie_zeilen = merkmale['kategorie_list_str'].strip().split('\n')
    kategorien = [k.strip().split(';') for k in kategorie_zeilen]
    code_zeilen = merkmale['code_list_str'].strip().split('\n')
    codes = [c.strip().split(';') for c in code_zeilen]
    #print kategorien
    #print codes
    needed_kategorien = [k for k in kategorien if k[0] in needed_and_not_existing]
    needed_codes = [c for c in codes if c[2] in needed_and_not_existing]
    #print 'KATEGORIEN', needed_kategorien
    #print 'CODES:', needed_codes

    for kat_code, kat_name in needed_kategorien:
        k = Kategorie()
        k.new()
        k['code'] = kat_code
        k['name'] = kat_name
        k['zeit'] = int(time())
        k.insert()
        logging.debug("Neue Kategorie für %s: %s" % (kat_name, kat_code))
    logging.info("Neue Kategorien hinzugefügt")

    last_kat_code = None
    for code_data in needed_codes:
        code, name, kat_code = code_data[:3]
        if kat_code != last_kat_code:
            k = Kategorie(code=kat_code)
            sort = 1
        c = Code()
        c.new()
        c['code'] = code
        c['name'] = name
        c['kat_id'] = k['id']
        c['kat_code'] = kat_code
        c['sort'] = sort
        c['off'] = 0
        c['zeit'] = int(time())
        if len(code_data) > 3 and code_data[3]:
            c['mini'] = int(code_data[3])
        if len(code_data) > 4 and code_data[4]:
            c['maxi'] = int(code_data[4])
        c.insert()
        sort += 1
        logging.debug("Neue Code für %s: %s" % (name, code))
    logging.info("Neue Codes hinzugefügt")

    """
Exemplo n.º 2
0
 def wartezeit_bereichskategorie_eintragen(self):
     kat_code = 'wartez'
     try:
         k = Kategorie(code=kat_code)
         return
     except:
         pass # Kategorie gibts noch nicht
     k = Kategorie()
     k.new()
     k.init(
         code=kat_code,
         name='Wartezeit zwischen Anmeldung und erster Leistung',
         flag=1,  # ist Bereichskategorie
         zeit=int(time()),
         )
     k.insert()
     kat_id = k['id']
     logging.info("Bereichskategorie 'wartez' hinzugefuegt")
     assert isinstance(kat_id, (int, long))
     code_data = (
         ('1', 'am selben Tag', 0, 0, ),
         ('2', 'bis 1 Woche', 1, 7, ),
         ('3', 'bis 2 Wochen', 8, 14, ),
         ('4', 'bis 3 Wochen', 15, 21, ),
         ('5', 'bis 1 Monat', 22, 30, ),
         ('6', 'bis 3 Monate', 31, 91, ),
         ('7', 'bis 6 Monate', 92, 183, ),
         ('6', 'mehr als 6 Monate', 184, 9999, ),
         )
     sort = 0
     for code, name, mini, maxi in code_data:
         sort += 1
         c = Code()
         c.new()
         c.init(
             code=code,
             name=name,
             kat_id=kat_id,
             kat_code=kat_code,
             sort=sort,
             off=0,
             zeit=int(time()),
             mini=mini,
             maxi=maxi,
             )
         assert c['kat_code'] == kat_code == k['code'] == 'wartez'
         c.insert()
         logging.info("Code fuer 'wartez' hinzugefuegt: code=%s name=%s" % (code, name))