summaryrefslogtreecommitdiffstats
path: root/pttbbs/upgrade/r4132_reglog2db.py
diff options
context:
space:
mode:
Diffstat (limited to 'pttbbs/upgrade/r4132_reglog2db.py')
-rwxr-xr-xpttbbs/upgrade/r4132_reglog2db.py108
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