summaryrefslogtreecommitdiff
path: root/server/piztor/easy_import.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/piztor/easy_import.py')
-rw-r--r--server/piztor/easy_import.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/server/piztor/easy_import.py b/server/piztor/easy_import.py
new file mode 100644
index 0000000..e103de7
--- /dev/null
+++ b/server/piztor/easy_import.py
@@ -0,0 +1,82 @@
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+from model import *
+
+path = "root:helloworld@localhost/piztor"
+
+class UserData:
+ def __init__(self, username, nickname, password,
+ comp_no, sec_no, sex, perm, sub):
+ self.username = username
+ self.nickname = nickname
+ self.password = password
+ self.comp_no = int(comp_no)
+ self.sec_no = int(sec_no)
+ self.sex = int(sex)
+ self.perm = perm
+ self.sub = sub
+
+def create_database():
+ engine = create_engine('mysql://' + path, echo = True)
+ Base.metadata.drop_all(engine)
+ Base.metadata.create_all(engine)
+
+def find_or_create_group(comp_no, sec_no, session):
+ gid = UserModel.to_gid(comp_no, sec_no)
+ q = session.query(GroupInfo).filter(GroupInfo.id == gid)
+ entry = q.first()
+ if not entry:
+ entry = GroupInfo(gid = gid)
+ return entry
+
+
+def import_user_data(data):
+ engine = create_engine('mysql://' + path, echo = True)
+ Session = sessionmaker(bind = engine)
+ session = Session()
+
+ for user in data:
+ um = UserModel(username = user.username,
+ nickname = user.nickname,
+ sex = user.sex,
+ comp_no = user.comp_no,
+ sec_no = user.sec_no,
+ perm = user.perm)
+
+ for cn, sn in user.sub:
+ print cn, sn
+ g = find_or_create_group(int(cn), int(sn), session)
+ um.sub.append(g)
+ um.auth = UserAuth(user.password)
+ um.location = LocationInfo(lat = 0, lng = 0)
+ session.add(um)
+ session.commit()
+
+if __name__ == '__main__':
+
+ from sys import argv, exit
+ if len(argv) != 2:
+ print "Usage: " + argv[0] + " FILE"
+ exit(0)
+
+ data = list()
+ with open(argv[1], 'r') as f:
+ while True:
+ line = f.readline().split()
+ if len(line) == 0: break
+ idx = 0
+ comp_no = line[3]
+ sec_no = line[4]
+ sub = [ (comp_no, sec_no), (comp_no, 0xff) ]
+ data.append(UserData(username = line[0],
+ nickname = line[1],
+ password = line[0],
+ comp_no = comp_no,
+ sec_no = sec_no,
+ sex = line[2],
+ perm = line[5],
+ sub = sub))
+
+
+ create_database()
+ import_user_data(data)