diff options
Diffstat (limited to 'pttbbs/upgrade/r4132_reglog2db.py')
-rwxr-xr-x | pttbbs/upgrade/r4132_reglog2db.py | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/pttbbs/upgrade/r4132_reglog2db.py b/pttbbs/upgrade/r4132_reglog2db.py deleted file mode 100755 index b5e47e8f..00000000 --- a/pttbbs/upgrade/r4132_reglog2db.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -# -# parse register.log and create reglog.db -# -# please first test and fix your register.log, then -# try writing to database. -# -# Create: piaip - -# python 2.5: -#import sqlite3 -# python 2.4 or prior: -from pysqlite2 import dbapi2 as sqlite3 - -import sys -import time - -def initdb(dbfn) : - db = sqlite3.connect(dbfn) - c = db.cursor() - # separate the tables to 'approved' and 'rejected', - # since the 'rejected' is rarely used... - c.execute('create table if not exists approved ' + - '(uid text, name text, career text, ' + - ' addr text, phone text, date integer, approved text)'); - c.execute('create table if not exists rejected ' + - '(uid text, name text, career text, ' + - ' addr text, phone text, date integer, rejected text)'); - return (db, c) - -def processblk(m) : - #print "process blk!" - if not m.has_key('uid') : - print "no uid record at line: ", lineno - sys.exit(-1) - if (not m.has_key('approved')) and (not m.has_key('rejected')) : - print "invalid record (action?) at line: ", lineno - sys.exit(-1) - if c != None : - type = 'rejected'; - if m.has_key('approved') : type = 'approved'; - # write into database - sql = 'insert into ' + type + ' values (?,?,?,?,?,?,?)'; - # follow the orders - c.execute(sql, (m['uid'], m['name'], m['career'], m['addr'], m['phone'], m['date'], m[type])); - -# default input -fn = "register.log" -dbfn= "" -db = None -c = None -if len (sys.argv) < 1 : - print "syntax:", sys.argv[0], "register.log [reglog.db]" - sys.exit(0) -if len (sys.argv) > 1 : - fn = sys.argv[1] -if len (sys.argv) > 2 : - dbfn = sys.argv[2] - -print "Opening ", fn, "..." -f = open(fn, "rt") - -if dbfn != '' : - (db, c) = initdb(dbfn) - -m={} -lineno = 0 -tickets = 0 -for s in f : - lineno = lineno +1 - # for each line... - if s.startswith("num:") : continue - if s.startswith("email:") : continue - if s.startswith("ident:") : continue - if s.startswith("]") : continue - if s.startswith("----") : - # ready to build new one - processblk(m) - m = {} - tickets = tickets +1 - if tickets % 10000 == 0 : - if db : db.commit() - print tickets, "forms processed." - continue - v = s.split(': ', 1) - if len(v) != 2 : - print "error at line ", lineno - sys.exit(-1) - k = v[0].lower() - if (m.has_key(k)) : - print "key duplicated at line ", lineno - sys.exit(-1) - # convert timestamp - v = v[1].strip() - if (k == 'date') : - # strip final weekday - v = v.split(' ') # mdy HMS abrv - if len(v) < 2 or len(v) > 3 : - print "invalid date entry at line ", lineno - sys.exit(-1) - v = v[0] + ' ' + v[1] - # build timestamp - v = int(time.mktime(time.strptime(v, "%m/%d/%Y %H:%M:%S"))) - m[k] = v - -f.close() - -# vim:sw=4:expandtab |