summaryrefslogblamecommitdiff
path: root/server/piztor/import.py
blob: 7646afc3270bba1dca5558849f5069cda45e2c65 (plain) (tree)
1
2
3
4
5
6
7
8
9



                                       
                                         

               

                                                         
                                
                                
                                
                                   
                                 
                           
                        
                      

                      
                                                          


                                    


                                                            





                                    
                           
                                                          

                                         
 
                      
                                                 


                                                 

                                             




                                                               
















                                                    





                                                        
                                                     



                                                    


                                               
 


                          
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
            line2 = f.readline().split()
            idx = 0
            sub = list()
            while idx < len(line2):
                sub.append((line2[idx], line2[idx + 1]))
                idx += 2
            data.append(UserData(username = line[0], 
                                nickname = line[1],
                                password = line[2], 
                                comp_no = line[3], 
                                sec_no = line[4],
                                sex = line[5],
                                perm = line[6],
                                sub = sub))


    create_database()
    import_user_data(data)