def get_member_name(memberIdIndex): try: memberName = select_member(memberIdIndex = memberIdIndex).first().\ memberName return memberName except: return unknown_error(get_message('dbError'))
def submission_record(memberIdIndex, sortCondition, pageNum): # Not Accept URL Check if sortCondition not in (LanguageResources().const.SubmissionDate[1], LanguageResources().const.Memory[1], LanguageResources().const.FileSize[1], LanguageResources().const.Runtime[1]): return page_not_found() try: # Get MemberId try: member = select_member(memberIdIndex).first() except Exception: member = [] # 모든 제출 정보 submissions = select_all_submissions(memberIdIndex).subquery() try: # 차트 정보 chartSubmissionRecords = select_member_chart_submissions(submissions).first() except Exception: #None Type Exception chartSubmissionRecords = [] # Viiew Value Text chartSubmissionDescriptions = [LanguageResources().const.SolvedProblems, LanguageResources().const.Count, LanguageResources().const.Solved, LanguageResources().const.WrongAnswer, LanguageResources().const.TimeOver, LanguageResources().const.MemoryOverflow, LanguageResources().const.CompileError, LanguageResources().const.RuntimeError] try: # 모든 제출 정보 count = select_count(submissions.c.memberId).first().\ count # Sorted submissionRecords = get_page_record(submissions_sorted(submissions, sortCondition = sortCondition, DESC = True), pageNum = pageNum).all() except Exception: count = 0 submissionRecords = [] return render_template(HTMLResources().const.SUBMISSION_RECORD_HTML, memberIdIndex = memberIdIndex, sortCondition = sortCondition, member = member, submissionRecords = submissionRecords, chartSubmissionDescriptions = chartSubmissionDescriptions, chartSubmissionRecords = chartSubmissionRecords, pages = get_page_pointed(pageNum = pageNum, count = count)) except Exception as e: # Unknow Error return unknown_error(e)
def id_check(select, error=None): if request.method == 'POST': password = get_request_value(form=request.form, name='password') if password: check = select_member(memberIdIndex=session[ SessionResources().const.MEMBER_ID_INDEX]).first() # 암호가 일치 할 때 #Checking Success if len(password) <= 20\ and check_password_hash (check.password, TripleDES.encrypt(str(password))): # for all user if select == 'account': return redirect( url_for(RouteResources().const.EDIT_PERSONAL)) # server manager elif SETResources().const.ADMINISTRATOR in session[ SessionResources().const.AUTHORITY]: if select == 'user_submit': return redirect(url_for('.user_submit', pageNum=int(1))) elif select == 'manage_problem': return redirect( url_for( '.manage_problem', problemLevel=LanguageResources().const.All[1], pageNum=int(1))) elif select == 'manage_problem_set': return redirect( url_for('.manage_problem_set', activeTabIndex=LanguageResources().const. All[1], pageNum=int(1))) elif select == 'manage_user': return redirect( url_for( '.manage_user', sortCondition=LanguageResources().const.ID[1], filterCondition=' ', keyWord=' ', pageNum=int(1))) elif select == 'manage_service': return redirect(url_for('.manage_service')) # 암호가 일치 하지 않을 때 else: error = LanguageResources().const.WrongPassword else: error = LanguageResources().const.WrongPassword return render_template(HTMLResources().const.ID_CHECK_HTML, error=error)
def id_check(select, error = None): if request.method == 'POST': password = get_request_value(form = request.form, name = 'password') if password: check = select_member(memberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX]).first() # 암호가 일치 할 때 #Checking Success if len(password) <= 20\ and check_password_hash (check.password, TripleDES.encrypt(str(password))): # for all user if select == 'account': return redirect(url_for(RouteResources().const.EDIT_PERSONAL)) # server manager elif SETResources().const.ADMINISTRATOR in session[SessionResources().const.AUTHORITY]: if select == 'user_submit': return redirect(url_for('.user_submit', pageNum = int(1))) elif select == 'manage_problem': return redirect(url_for('.manage_problem', problemLevel = LanguageResources().const.All[1], pageNum = int(1))) elif select == 'manage_problem_set': return redirect(url_for('.manage_problem_set', activeTabIndex = LanguageResources().const.All[1], pageNum = int(1))) elif select == 'manage_user': return redirect(url_for('.manage_user', sortCondition = LanguageResources().const.ID[1], filterCondition = ' ', keyWord = ' ', pageNum = int(1))) elif select == 'manage_service': return redirect(url_for('.manage_service')) # 암호가 일치 하지 않을 때 else: error = LanguageResources().const.WrongPassword else: error = LanguageResources().const.WrongPassword return render_template(HTMLResources().const.ID_CHECK_HTML, error = error)
def edit_personal(error = None): contactNumber, emailAddress, comment = None, None, None try: #Get User Information try: members = select_member(memberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX]).subquery() memberInformation = select_member(memberIdIndex = members.c.memberIdIndex).first() except Exception: memberInformation = [] #Get Post if request.method == 'POST': password = get_request_value(form = request.form, name = 'password') passwordConfirm = get_request_value(form = request.form, name = 'passwordConfirm') #Get Updating Data contactNumber = get_request_value(form = request.form, name = 'contactNumber') emailAddress = get_request_value(form = request.form, name = 'emailAddress') comment = get_request_value(form = request.form, name = 'comment') #Password Same if(password and passwordConfirm) and password == passwordConfirm: #Generate Password encryPassword = TripleDES.encrypt(str(password)) passwordConfirm = None password = generate_password_hash(encryPassword) #Update DB update_members(select_member(memberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX]), password, contactNumber, emailAddress, comment) #Password Different elif not password and not passwordConfirm: #Update DB update_members(members = select_member(memberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX]), password = None, contactNumber = contactNumber, emailAddress = emailAddress, comment = comment) # Commit Exception try: dao.commit() return redirect(url_for(RouteResources().const.SIGN_IN)) except Exception: dao.rollback() error = LanguageResources().const.DBFailed return render_template(HTMLResources().const.EDIT_PERSONAL_HTML, memberInformation = memberInformation, contactNumber = contactNumber, emailAddress = emailAddress, comment = comment, error = error) except Exception as e: return unknown_error(e)
def access_authority_check(problemLevel=None, memberIdIndex=None, submissionIndex=None, problemIndex=None, submissionReplyIndex=None, articleIndex=None, boardReplyIndex=None, isAdministrator=None, isWrite=None, isCode=None): try: # Zero Index Check if memberIdIndex == 0\ or problemIndex == 0\ or submissionReplyIndex == 0\ or (articleIndex == 0 and not isWrite)\ or boardReplyIndex == 0: return False # Get Authority type Turple authority = is_authority(session[SessionResources().const.AUTHORITY]) # Get my Index thisMemberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX] # Authority check authority is turple, size 3 if isAdministrator and authority[0]: if problemLevel\ and problemLevel not in (LanguageResources().const.GoldLevel[1], LanguageResources().const.SilverLevel[1], LanguageResources().const.BronzeLevel[1]): return False return True elif isAdministrator and not authority[0]: return False else: # Division Index if submissionIndex: submissionIndex = select_data_of_submission_board( submissionIndex).first() memberIdIndex = submissionIndex.memberIdIndex problemIndex = submissionIndex.problemIndex # MemberIdIndex Check if memberIdIndex\ and not select_member(memberIdIndex).first(): return False if problemIndex\ and not course_problem_check(isAdministrator, authority, memberIdIndex, problemIndex, thisMemberIdIndex, isCode): return False # Submission Reply Index check if submissionReplyIndex: replySubmissionIndex = select_replies_on_code( submissionIndex=None, submissionReplyIndex=submissionReplyIndex).first() replySubmissionIndex = select_data_of_submission_board( replySubmissionIndex.submissionIndex).first() if not course_problem_check(isAdministrator, authority, replySubmissionIndex.memberIdIndex, replySubmissionIndex.problemIndex, thisMemberIdIndex, isCode): return False # Board Check if articleIndex: article = select_article(articleIndex).first() if isWrite\ and article.writerIdIndex != thisMemberIdIndex: return False # All Pass Authority return True except Exception as e: Log.error(str(e)) return False
def manage_user(filterCondition, keyWord, sortCondition, pageNum, error=None): # Not Accept URL Check if sortCondition not in (LanguageResources().const.ID[1], LanguageResources().const.Name[1]): return page_not_found() try: # Request Post if request.method == 'POST': # Search Event # FilterCondition if len(request.form) <= 2 and 'keyWord' in request.form: for form in request.form: if 'keyWord' != form: filterCondition = form keyWord = get_request_value(form=request.form, name='keyWord') pageNum = 1 break elif is_authority(session[SessionResources().const.AUTHORITY])[0]: if 'memberDeleted' in request.form: for form in request.form: if 'member' not in form and 'keyWord' not in form: memberIdIndex = form # Get Folder Path member = select_member( memberIdIndex=memberIdIndex).first() try: update_member_deleted(memberIdIndex) dao.commit() userPath = '{0}/Current/{1}_{2}'.format( projectPath, member.memberId, member.memberName) # Delete Folder if os.path.exists(userPath): shutil.rmtree(userPath) except Exception: dao.rollback() error = LanguageResources().const.DBFailed else: for form in request.form: # Insert Indivisual if 'memberInsert' in form: insertCount = int(form[len('memberInsert'):]) + 1 for i in range(1, insertCount): # Get Input Data detailInformation = get_request_value( form=request.form, name='detailInformation{0}'.format(i)) memberId = get_request_value( form=request.form, name='memberId{0}'.format(i)) memberName = get_request_value( form=request.form, name='memberName{0}'.format(i)) if memberId\ and memberName: try: memberIdIndex = select_match_member_id(memberId).first().\ memberIdIndex except Exception: memberIdIndex = None try: error = insert_member_registration( memberIdIndex=memberIdIndex, memberId=memberId, memberName=memberName, password=generate_password_hash( TripleDES.encrypt( str(memberId))), detailInformation=detailInformation ) dao.commit() # Get Folder Path userPath = '{0}/Current/{1}_{2}'.format( projectPath, memberId, memberName) # make Folders if not os.path.exists(userPath): os.makedirs(userPath) except Exception: dao.rollback() error = LanguageResources( ).const.DBFailed else: error = LanguageResources( ).const.FormValidation else: error = LanguageResources().const.GetOutHere # Get Users try: members = select_members().subquery() # Filter Case if filterCondition\ and filterCondition != ' ': if not keyWord: keyWord = ' ' members = search_members( members, FilterFindParameter(filterCondition=filterCondition, keyWord=(keyWord if keyWord != ' ' else ''))).subquery() count = select_count(members.c.memberIdIndex).first().\ count memberRecords = get_page_record(members_sorted( members, sortCondition), pageNum=pageNum) except Exception: count = 0 memberRecords = [] return render_template( '/manage_user.html', # 검색시 FilterCondition List Filters=[ LanguageResources().const.All, LanguageResources().const.ID, LanguageResources().const.Name ], sortCondition=sortCondition, filterCondition=filterCondition, keyWord=keyWord, memberRecords=memberRecords, pages=get_page_pointed(pageNum, count), count=count, error=error) except Exception as e: return unknown_error(e)
def submission_record(memberIdIndex, sortCondition, pageNum): # Not Accept URL Check if sortCondition not in (LanguageResources().const.SubmissionDate[1], LanguageResources().const.Memory[1], LanguageResources().const.FileSize[1], LanguageResources().const.Runtime[1]): return page_not_found() try: # Get MemberId try: member = select_member(memberIdIndex).first() except Exception: member = [] # 모든 제출 정보 submissions = select_all_submissions(memberIdIndex).subquery() try: # 차트 정보 chartSubmissionRecords = select_member_chart_submissions( submissions).first() except Exception: #None Type Exception chartSubmissionRecords = [] # Viiew Value Text chartSubmissionDescriptions = [ LanguageResources().const.SolvedProblems, LanguageResources().const.Count, LanguageResources().const.Solved, LanguageResources().const.WrongAnswer, LanguageResources().const.TimeOver, LanguageResources().const.MemoryOverflow, LanguageResources().const.CompileError, LanguageResources().const.RuntimeError ] try: # 모든 제출 정보 count = select_count(submissions.c.memberId).first().\ count # Sorted submissionRecords = get_page_record(submissions_sorted( submissions, sortCondition=sortCondition, DESC=True), pageNum=pageNum).all() except Exception: count = 0 submissionRecords = [] return render_template( HTMLResources().const.SUBMISSION_RECORD_HTML, memberIdIndex=memberIdIndex, sortCondition=sortCondition, member=member, submissionRecords=submissionRecords, chartSubmissionDescriptions=chartSubmissionDescriptions, chartSubmissionRecords=chartSubmissionRecords, pages=get_page_pointed(pageNum=pageNum, count=count)) except Exception as e: # Unknow Error return unknown_error(e)
def edit_personal(error=None): contactNumber, emailAddress, comment = None, None, None try: #Get User Information try: members = select_member(memberIdIndex=session[ SessionResources().const.MEMBER_ID_INDEX]).subquery() memberInformation = select_member( memberIdIndex=members.c.memberIdIndex).first() except Exception: memberInformation = [] #Get Post if request.method == 'POST': password = get_request_value(form=request.form, name='password') passwordConfirm = get_request_value(form=request.form, name='passwordConfirm') #Get Updating Data contactNumber = get_request_value(form=request.form, name='contactNumber') emailAddress = get_request_value(form=request.form, name='emailAddress') comment = get_request_value(form=request.form, name='comment') #Password Same if (password and passwordConfirm) and password == passwordConfirm: #Generate Password encryPassword = TripleDES.encrypt(str(password)) passwordConfirm = None password = generate_password_hash(encryPassword) #Update DB update_members( select_member(memberIdIndex=session[ SessionResources().const.MEMBER_ID_INDEX]), password, contactNumber, emailAddress, comment) #Password Different elif not password and not passwordConfirm: #Update DB update_members(members=select_member(memberIdIndex=session[ SessionResources().const.MEMBER_ID_INDEX]), password=None, contactNumber=contactNumber, emailAddress=emailAddress, comment=comment) # Commit Exception try: dao.commit() return redirect(url_for(RouteResources().const.SIGN_IN)) except Exception: dao.rollback() error = LanguageResources().const.DBFailed return render_template(HTMLResources().const.EDIT_PERSONAL_HTML, memberInformation=memberInformation, contactNumber=contactNumber, emailAddress=emailAddress, comment=comment, error=error) except Exception as e: return unknown_error(e)
def access_authority_check(problemLevel = None, memberIdIndex = None, submissionIndex = None, problemIndex = None, submissionReplyIndex = None, articleIndex = None, boardReplyIndex = None, isAdministrator = None, isWrite = None, isCode = None): try: # Zero Index Check if memberIdIndex == 0\ or problemIndex == 0\ or submissionReplyIndex == 0\ or (articleIndex == 0 and not isWrite)\ or boardReplyIndex == 0: return False # Get Authority type Turple authority = is_authority(session[SessionResources().const.AUTHORITY]) # Get my Index thisMemberIdIndex = session[SessionResources().const.MEMBER_ID_INDEX] # Authority check authority is turple, size 3 if isAdministrator and authority[0]: if problemLevel\ and problemLevel not in (LanguageResources().const.GoldLevel[1], LanguageResources().const.SilverLevel[1], LanguageResources().const.BronzeLevel[1]): return False return True elif isAdministrator and not authority[0]: return False else: # Division Index if submissionIndex: submissionIndex = select_data_of_submission_board(submissionIndex).first() memberIdIndex = submissionIndex.memberIdIndex problemIndex = submissionIndex.problemIndex # MemberIdIndex Check if memberIdIndex\ and not select_member(memberIdIndex).first(): return False if problemIndex\ and not course_problem_check(isAdministrator, authority, memberIdIndex, problemIndex, thisMemberIdIndex, isCode): return False # Submission Reply Index check if submissionReplyIndex: replySubmissionIndex = select_replies_on_code(submissionIndex = None, submissionReplyIndex = submissionReplyIndex).first() replySubmissionIndex = select_data_of_submission_board(replySubmissionIndex.submissionIndex).first() if not course_problem_check(isAdministrator, authority, replySubmissionIndex.memberIdIndex, replySubmissionIndex.problemIndex, thisMemberIdIndex, isCode): return False # Board Check if articleIndex: article = select_article(articleIndex).first() if isWrite\ and article.writerIdIndex != thisMemberIdIndex: return False # All Pass Authority return True except Exception as e: Log.error(str(e)) return False