コード例 #1
0
ファイル: buildStudentDB.py プロジェクト: goldbike/edutalk
def buildStudentDB():

    studentNoList = []
    # insert student info using 출석부 file ==> student no, name
    for no, name in readExcelStudentInfo(excelFilePath):
        LectureDB.insertStudentInfo(no, name, None) # katalk ID = None, not yet assigned
        studentNoList.append(no)

    # read katalk chat, extract matching katalk ID, name, no, update student info DB
    for katalkID, name, no in readKatalkUserInfo(chatFilePath):
        if LectureDB.findStudentInfo(no=no) is None:
            print('Error:', katalkID + '의 .user 정보작성에 오류가 있음. - 출석부에 학번', no, ' 존재하지 않음.')
            continue
        if LectureDB.findStudentInfo(name=name) is None:
            print('Error:', katalkID + '의 .user 정보작성에 오류가 있음. - 출석부에 이름', name, ' 존재하지 않음.')
            continue
        LectureDB.updateStudentInfo(no, name, katalkID)
        # print(no, name, katalkID)


    # check integrity of student info DB
    for no in studentNoList:
        info = LectureDB.findStudentInfo(no=no)
        # print(info)
        if info['katalkID'] is None:
            print('Error: ' , info['name']+'의 .user 정보작성에 오류가 있음.')
コード例 #2
0
ファイル: run.py プロジェクト: goldbike/edutalk
def main():

    LectureDB.create(year, semester, title, koreanTitle)

    # insert student info using 출석부 file ==> student no, name
    for no, name in readExcelStudentInfo(excelFilePath):
        LectureDB.insertStudent(no, name, None) # katalk ID = None, not yet assigned

    # read katalk chat, extract matching katalk ID, name, no, update student info DB
    for katalkID, name, no in readKatalkUserInfo(chatFilePath):
        if not LectureDB.studentExists(no=no):
            print('Error: invalid student no - does not exist')
        if not LectureDB.studentExists(name=name):
            print('Error: invalid student name - does not exist')
        else:
            LectureDB.updateStudent(no, name, katalkID)



    attendanceTable = db['attendance']
    reportTable = db['report']
    reportInfoTable = db['reportInfo']
    userInfoTable = db['userInfo']

    userFileTable = db['userFile'] # user upload file info
    for info in userInfoList:
        userFileTable.upsert(dict(학번=info.no), ['학번'])

    def processHostLine(date, year, talkTime, id, talk):
        cmd = commandParser.parseLine(talk)

        if commandParser.LECTURE == cmd[0]:
            if len(cmd) == 2:
                date = cmd[1] # .lecture @0304

            dateKey = '%d월 %d일' % ((date // 100), (date % 100))

            #print('making no %s table' % dateKey)
            dataList = []
            for row in userInfoTable:
                data = {'학번': row['no'], dateKey : 'O'} # default O --> attended
                dataList.append(data)

            #print(dataList)
            for data in dataList:
                attendanceTable.upsert(data, ['학번'])

            '''
            for row in attendanceTable:
                print(row)
            '''

        elif commandParser.REPORT == cmd[0]:
            if len(cmd) == 2: # .report 리포트
                reportName = cmd[1]
            elif len(cmd) == 3:
                date = cmd[1] # .report @0325 소스분석
                reportName = cmd[2]

            dateKey = '%d월 %d일' % ((date // 100), (date % 100))

            reportInfo = dict(date=dateKey, name=reportName)
            reportInfoTable.upsert(reportInfo, ['date'])


            dataList = []
            for row in userInfoTable:
                data = {'학번': row['no'], dateKey : '미제출'} # default X --> report not submitted
                dataList.append(data)

            for data in dataList:
                reportTable.upsert(data, ['학번'])

            '''
            for row in reportTable:
                print(row)
            '''

        elif commandParser.ABSENT == cmd[0]:
            if len(cmd) == 2: # .absent 이명박, 박근혜
                absentStudents = cmd[1]
            elif len(cmd) == 3:
                date = cmd[1] # .absent @0325 이명박, 박근혜
                absentStudents = cmd[2]

            dateKey = '%d월 %d일' % ((date // 100), (date % 100))






    for line in feedLine(katalkFileName):
        result = katalkParser.parseLine(line)
        if 'TALK_LINE' == result[0]:
            date, year, talkTime, id, talk = result[1:]
            fname = talk.split()[-1] # extract the last word from talk
            ext = os.path.splitext(fname)[-1]
            if len(ext) > 3: # this could file
                path = katalkFolder + fname
                if os.path.isfile(path):
                    try:
                        no = userInfoTable.find_one(katalkID=id)['no']
                        dateKey = '%d월 %d일' % ((date // 100), (date % 100))
                        data = {'학번': no, dateKey : fname}
                        shutil.copyfile(path, DBfolder + fname)
                        userFileTable.upsert(data, ['학번'])
                    except:
                        print('ERROR: ID %s is not registered.' % id)


        elif 'HOST_LINE' == result[0]:
            processHostLine(*result[1:])






    # update report db according to userInfo, userFileInfo, reportInfo


    # prepare report date list
    dateList = [row['date'] for row in reportInfoTable.all()]
    print(dateList) # now we have ['3월 25일', '4월 1일']

    userList = [row['학번'] for row in reportTable.all()]
    print(userList) # now we have ['201532', '89419022', '123456']

    for dateKey in dateList:
        for userKey in userList:
            # find upload file for the user and the date
            fname = userFileTable.find_one(학번=userKey)[dateKey]
            if fname == None:
                fname = '미제출'
            data = {'학번' : userKey, dateKey : fname}
            reportTable.upsert(data, ['학번'])
コード例 #3
0
        else:
            table.update(data, ['no'])
            #print(katalkID, name, no)
            # check integrity of student info DB





    for data in table:
        if data['katalkID'] is None:
            print('Error: ' + data['name'] + ' .user 정보를 제대로 작성하지 않음.')


import LectureDB

db = LectureDB.create()



def main():
    katalkParser.init()
    commandParser.init()
    db = common.LectureDB()

    updateStudentInfo()



if __name__ == "__main__":
    main()
コード例 #4
0
ファイル: buildStudentDB.py プロジェクト: goldbike/edutalk
def testUpdateStudentInfo():
    LectureDB.create(year, semester, title, koreanTitle)
    buildStudentDB()