Exemplo n.º 1
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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