diff --git a/afu/.post_code b/afu/.post_code new file mode 100644 index 0000000..a27c241 --- /dev/null +++ b/afu/.post_code @@ -0,0 +1,20 @@ +2345 Brunn/Gebirge#Brunn am Gebirge +2431 Kleinneusiedl +2560 Berndorf +3813 Dietmanns +4020 Linz|Humboldtstraße +4871 Pfaffing|Tiefenbach 6 +5023 Salzburg|Langmoosweg 5 +5300 Hallwang|Bäckerweg 7 +6393 St Ulrich|Dorfstr 13#St. Ulrich am Pillersee#Dorfstraße 13%JN67gm86ut +7323 Ritzing +8051 Graz|Wienerstrasse 256/41 +8054 Graz|Dr.Lemisch-Strasse 19#Graz#Doktor-Lemisch-Straße 19 +8430 Leibnitz|Kittenberg 7 +8438 Mayrhofen|Hochsteeg 589#Mayrhofen#Hochsteg 589 +8453 St.Johann I.S. +8561 Söding|Steinstraße 10 +8972 Ramsau Am Dachstein#Ramsau am Dachstein +9020 Klagenfurt|Feldhofg 75#Klagenfurt#Feldhofgasse 75 +9500 Villach|Kiesweg 4/2 +9580 Drobollach#Drobollach#Raimund-Kalcher-Straße 4 diff --git a/afu/.sql_init b/afu/.sql_init index 589ba1a..ed927a1 100644 --- a/afu/.sql_init +++ b/afu/.sql_init @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS `callbook_user`( `created_by` INT(10) UNSIGNED NOT NULL DEFAULT 0, `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_by` INT(10) UNSIGNED NOT NULL DEFAULT 0, - `active` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + `active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'the user is active', `inactive` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `address_id` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'link to id of callbook_adress', PRIMARY KEY(`id`) @@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS `callbook_address`( `address` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'original address from the import', `postal_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'also known as Zip code, "Postleitzahl"', `org_city` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'original city from the import', - `city` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'original city from the import', + `city` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'calculated city from the original city', `federal_state_code` TINYINT NOT NULL DEFAULT -1 COMMENT 'Austria: 0...outside, 1...Vienna, 2...Salzburg, 3...Lower Austria, 4...Burgenland, 5...Upper Austria, 6...Styria, 7...Tyrol, 8...Carinthia, 9...Vorarlberg', `lat` DOUBLE NOT NULL DEFAULT 0.0 COMMENT 'latitude', diff --git a/afu/callbook.py b/afu/callbook.py index fab00f4..ec93bcb 100755 --- a/afu/callbook.py +++ b/afu/callbook.py @@ -329,6 +329,31 @@ def fix_typo(call, fullname, verbose=1): fix_typo.lines = None fix_typo.spaces = [] +def isinteger(s): + for char in s: + if not char.isdigit(): + return False + return True + +def call_change_city(location): + match location: + case 'Groß Schweinbarth': + city = location + postal_code = 2221 + + +def call_postal_code(location): + + if location == '' or location[0] == '*': + return '' + p = location.split(' ',1) + if isinteger(p[0]) and int(p[0]) > 1000 and int(p[0]) < 10000: + postal_code = p[0] + city = p[1] + else: + postal_code, city = call_change_city(location) + return postal_code + def call_data_record(line, mod_date, verbose, cur): # we have to split the record with a cost-intensive regular expression @@ -381,26 +406,36 @@ def call_data_record(line, mod_date, verbose, cur): print(f'Call: {call}, Name: {fullname}, Gender: {gender}') else: print(f'Call: {call}, First Name: {firstname}, Surname: {surname}, Gender: {gender}') - print(f'Location: {location}, Address: {address}, Permit: {permit_class}') created = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') call_data_record.cnt += 1 # increment the User_id user_id = call_data_record.cnt - # print(created) - statement = "INSERT INTO `callbook_user`(`user_id`,`call`,`firstname`,`surname`,`gender`,`created`,`modified`) VALUES (%s, %s, %s, %s, %s, %s, %s)" - data = (user_id,call,firstname,surname,gender,created,created) - try: - # cur.execute(f"INSERT INTO `callbook_user` (`call`,`firstname`,`surname`,\ - # `created`,`created_by`,`modified`,`modified_by`,`active`)\ - # VALUES ('{call}','{firstname}','{surname}','{created}','0','{created}','0','{created}');") - # cur.execute(f'INSERT INTO `callbook_user` (`call`) VALUES ("{call}");') - cur.execute(statement, data) - except mariadb.Error as e: - print(f'\n[WARN] MySQLError during execute statement\n\tArgs: {e.args}') - except Exception as e: - print('Error: {}'.format(e), file=sys.stderr) + statement = f'SELECT `call`, `firstname`, `surname`, `gender` FROM `callbook_user` WHERE `call` = "{call}" AND `active` = 1' + cur.execute(statement) + result = cur.fetchall() + if not result: + postal_code = call_postal_code(location) + statement = "INSERT INTO `callbook_address`(`location`,`address`,`postal_code`) VALUES (%s,%s,%s)" + data = (location,address,postal_code) + try: cur.execute(statement, data) + except mariadb.Error as e: + print(f'\n[WARN] MySQLError during execute statement\n\tArgs: {e.args}') + except Exception as e: + print('Error: {}'.format(e), file=sys.stderr) + + statement = "INSERT INTO `callbook_user`(`user_id`,`call`,`firstname`,`surname`,`gender`,`created`,`modified`,`address_id`) VALUES (%s, %s, %s, %s, %s, %s, %s, LAST_INSERT_ID())" + data = (user_id,call,firstname,surname,gender,created,created) + try: + cur.execute(statement, data) + except mariadb.Error as e: + print(f'\n[WARN] MySQLError during execute statement\n\tArgs: {e.args}') + except Exception as e: + print('Error: {}'.format(e), file=sys.stderr) + else: + for r in result: + print(f'Call: {call} {firstname} {surname} {gender} <- ') call_data_record.cnt = 0