Esempio n. 1
0
def edit_personal(error = None):
    contactNumber, emailAddress, comment = None, None, None
    try:
        #Get User Information
        try:
            memberInformation = join_member_informations(select_match_member(memberCourseProblemParameter = MemberCourseProblemParameter(memberId = session[SessionResources().const.MEMBER_ID])).subquery()).first()
        except Exception:
            #None Type Exception
            memberInformation = []
        
        #Get Post
        if request.method == 'POST':
            password = request.form['password']
            passwordConfirm = request.form['passwordConfirm'] 
            #Get Updating Data
            contactNumber = request.form['contactNumber']
            emailAddress = request.form['emailAddress'] 
            comment = request.form['comment'] 
            #Password Same
            if(password and passwordConfirm) and password == passwordConfirm:
                #Generate Password
                tripleDes = triple_des(OtherResources().const.TRIPLE_DES_KEY,
                                       mode = ECB,
                                       IV = "\0\0\0\0\0\0\0\0",
                                       pad = None,
                                       padmode = PAD_PKCS5)
                
                # ID, Password NO
                if password == memberInformation.password\
                   or password == memberInformation.memberId:
                    error = get_message('pattenFailed')
                else:
                    
                    password = generate_password_hash(tripleDes.encrypt(str(password)))
                    passwordConfirm = None
                    #Update DB
                    update_member_informations(select_match_member(memberCourseProblemParameter = MemberCourseProblemParameter(memberId = session[SessionResources().const.MEMBER_ID])),
                                               password,
                                               contactNumber,
                                               emailAddress,
                                               comment)
                    # Commit Exception
                    try:
                        dao.commit()
                        flash(get_message('updateSucceeded'))
                        
                        return redirect(url_for(RouteResources().const.SIGN_IN))
                    except Exception:
                        dao.rollback()
                        error = get_message('upateFailed')
                
            #Password Different
            elif not password and not passwordConfirm:
                #Update DB
                update_member_informations(members = select_match_member(memberCourseProblemParameter = MemberCourseProblemParameter(memberId = session[SessionResources().const.MEMBER_ID])),
                                           password = None,
                                           contactNumber = contactNumber,
                                           emailAddress = emailAddress,
                                           comment = comment)
                # Commit Exception
                try:
                    dao.commit()
                    flash(get_message('updateSucceeded'))
                    
                    return redirect(url_for(RouteResources().const.SIGN_IN))
                except Exception:
                    dao.rollback()
                    error = get_message('upateFailed')
            else:
                error = get_message('wrongPassword')
        
        return render_template(HTMLResources().const.EDIT_PERSONAL_HTML,
                               memberInformation = memberInformation,
                               contactNumber = contactNumber,
                               emailAddress = emailAddress,
                               comment = comment,
                               error = error)
    except Exception:
        return unknown_error()