def save(self): """Save user""" if Users.query.filter_by(email=self.email).first(): json_abort({'msg': 'User exists.'}, 409) self.password = generate_password_hash(self.password) db.session.add(self) db.session.commit()
def post(self): data = request.get_json() # first time in the system if data.get("_id") is None: user_email = data.get("email") check_if_member_in_db = db.session.query(Member).filter_by(user_id=user_email).first() if check_if_member_in_db: json_abort(409, "כבר קיים משתמש רשום למערכת עם מייל זה") check_if_user_in_db = db.session.query(User).filter_by(_id=user_email).first() # if has user in db that its the email if check_if_user_in_db: self.createMember(data) # not exist in no db else: self.createNewUser(data) self.createMember(data) response = make_response(jsonify(message="המשתמש נרשם בהצלחה למערכת"), 200) # the user submit the form at least one time else: user_id = data.get("_id") user_mail = data.get("email") user_from_db = db.session.query(User).filter_by(_id=user_id).first() user_from_db._id = user_mail member_in_db = db.session.query(Member).filter_by(user_id=user_mail).first() if member_in_db is None: self.createMember(data) response = make_response(jsonify(message="המשתמש נרשם בהצלחה למערכת"), 200) else: json_abort(409, "כבר קיים משתמש רשום למערכת עם מייל זה") return response
def get(self, topic_id, msg_id): msg = db.session.query(Message).filter_by(topic_id=topic_id, id=msg_id).first() if not msg: json_abort(404, "ההודעה לא נמצאה") else: response = make_response(jsonify(msg.as_dict()), 200) return response
def save(self): """Save Project""" self.percentage_return = float(self.percentage_return) self.contract_value = float(self.contract_value) if self.contract_value < 1 or self.percentage_return < 1: json_abort( "Contract value and percentage return must" "be positive numbers", 400) db.session.add(self) db.session.commit()
def post(self): data = request.get_json() member = Member.authenticate(**data) if not member: json_abort(401, "שם משתמש/סיסמה לא נמצאו") return make_response( jsonify({ 'access_token': get_tokens(member.email, current_app), **member.as_dict() }), 200)
def get(self, article_id): article = Article.query.get(article_id) if not article: json_abort(404, "המאמר לא נמצא") # return send_from_directory(filename=article.file, directory=os.path.join(os.path.join(os.getcwd(), 'api'), 'articles')) return send_from_directory(filename=article.file, directory=os.path.join( os.path.join(ROOT_DIR, 'api'), 'articles'))
def get(self, topic_id, page): if page < 1: json_abort(400, "כמות הדפים שהוכנסו לא חוקי") all_messages = Message.query.filter_by(topic_id=topic_id).order_by( asc('created_at')).paginate(page=page, per_page=Config.MESSAGES_PER_PAGE) result = dict(datas=[a.as_dict() for a in all_messages.items], total=all_messages.total, current_page=all_messages.page, per_page=all_messages.per_page) response = make_response(jsonify(result), 200) return response
def get(self, user_id): portfolios = list() user = User.query.filter_by(_id=user_id).first() if user is None: json_abort(404, "לא נמצא משתמש עם פרטים אלו") ports_user_ans = PortUserAnswersSet.query.filter_by( user_id=user_id).order_by(desc('portfolios_date_time')).distinct( PortUserAnswersSet.portfolios_date_time).limit(10).all() for port_user_ans in ports_user_ans: portfolios.append(port_user_ans.portfolio) result = create_result_as_dict(portfolios) response = make_response(jsonify(result), 200) return response
def put(self): data = request.get_json() password_recovery = db.session.query(PasswordRecovery).filter_by( id=data.get('id')).first() if password_recovery is None: json_abort(404, "לא נמצא מזהה") if password_recovery.is_used: json_abort(401, "כבר בוצע שימוש בקישור הזה") member = password_recovery.member new_password = data.get("new_password") member.password = generate_password_hash(new_password, method='sha256') password_recovery.is_used = True db.session.commit() response = make_response(jsonify(message='הסיסמה עודכנה בהצלחה'), 200) return response
def get(self, page, cluster_title): if page < 1: json_abort(400, "כמות הדפים שהוכנסה אינה תקינה") try: all_topics = Topic.query.filter_by( cluster_title=cluster_title).order_by( desc('created_at')).paginate( page=page, per_page=Config.TOPICS_PER_PAGE) result = dict(datas=[a.as_dict() for a in all_topics.items], total=all_topics.total, current_page=all_topics.page, per_page=all_topics.per_page) response = make_response(jsonify(result), 200) return response except Exception as e: json_abort(500, e)
def post(self, curr_user): data = request.get_json() member = curr_user.member message_content = data.get("content") topic_id = data.get("topic_id") if not message_content or not topic_id: json_abort(400, "תוכן ההודעה ריק") new_message = Message(content=message_content, member_email=member.email, topic_id=topic_id) if not new_message: json_abort(500, "יצירת הודעה חדשה לא הצליחה") db.session.add(new_message) db.session.commit() response = make_response(jsonify(message='ההודעה התווספה בהצלחה'), 200) return response
def put(self, curr_user): data = request.get_json() member = curr_user.member msg_id = data.get("id") topic_id = data.get("topic_id") msg = db.session.query(Message).filter_by(member_email=member.email, topic_id=topic_id, id=msg_id).first() if not msg: json_abort(404, "ההודעה לא נמצאה") new_content = data.get("content") if not new_content: json_abort(400, "תוכן ההודעה ריק") msg.content = new_content db.session.commit() response = make_response(jsonify(message='ההודעה עודכנה בהצלחה'), 200) return response
def put(self, curr_user): data = request.get_json() if curr_user is None: json_abort(401, "לא נמצא משתמש רשום עם פרטים אלו") member = curr_user.member new_first_name = data.get("first_name") new_last_name = data.get("last_name") if len(new_first_name) > 0: member.first_name = new_first_name if len(new_last_name) > 0: member.last_name = new_last_name db.session.add(member) db.session.commit() return make_response(jsonify(message='הפרופיל עודכן בהצלחה'), 200)
def createMember(self, data): user_date_of_birth = data.get("date_of_birth") try: user_date_of_birth = datetime.strptime(user_date_of_birth, '%Y-%m-%d') except: user_date_of_birth = '' user_email = data.get("email") # check_if_in_member_db = db.session.query(Member).filter_by(user_id=user_email).first() # if check_if_in_member_db: # json_abort(409, "Member already exist") user_password = data.get("password") user_first_name = data.get("first_name") user_last_name = data.get("last_name") # user_gender = Gender.other # data.get("gender") user_id = user_email if not user_email or not user_password or not user_first_name or not user_last_name: json_abort(400, "אחד או יותר מהפרמטרים אינו חוקי") new_member = Member(user_email, user_password, user_first_name, user_last_name, user_date_of_birth, user_id) db.session.add(new_member) db.session.commit()
def post(self, curr_user): data = request.get_json() member = curr_user.member topic_title = data.get("title") cluster_title = data.get("cluster_title") message = data.get("message") if not topic_title or not cluster_title: json_abort(400, "אחד או יותר מהנושאים חסרים") new_topic = Topic(title=topic_title, member_email=member.email, cluster_title=cluster_title) db.session.add(new_topic) db.session.flush() # To obtain id. if not new_topic: json_abort(500, "תהליך יצירת נושא חדש נכשל") new_message = Message(content=message, member_email=member.email, topic_id=new_topic.id) db.session.add(new_message) db.session.commit() response = make_response(jsonify(message='הפוסט הוסף בהצלחה'), 200) return response
def post(self): data = request.get_json() user_email = data.get("email") check_if_member_in_db = db.session.query(Member).filter_by( user_id=user_email).first() if not check_if_member_in_db: json_abort(409, "לא נמצא משתמש רשום עם המייל הזה במערכת") uid = str(uuid.uuid4()) password_recovery = PasswordRecovery(id=uid, member_email=user_email) db.session.add(password_recovery) db.session.commit() stylesheet = ''' body { text-align: right; direction: rtl; } ''' # Note, links like: <a href="www.google.com">לינק איפוס</a> # will work really good and did not even considered as spam. reset_pass_mail( user_email, 'RoboAdvisor - איפוס סיסמא', f''' <html> <head> <style> {stylesheet} </style> </head> <body> <h1>איפוס סיסמא</h1> התקבלה בקשה לאיפוס סיסמתך, להמשך תהליך, נא להשתמש בלינק הבא: <a href="http://localhost:3000/reset_password/{uid}">לינק איפוס</a> <p>אם הלינק לא מופיע, אנא בצע העתקה אל חלון הכתובת בדפדפן של הכתובת</p> <p>http://localhost:3000/reset_password/{uid}</p> </body> </html> ''') response = make_response( jsonify(message="אימייל לשחזור סיסמה נשלח בהצלחה"), 200) return response
def get_project(project_id, bid_amount): """Retrieve a project if it is valid""" project = Projects.query.filter_by(id=project_id).first() if project is None: json_abort({'msg': 'This project is not available'}, 404) if project.end_date < datetime.date.today(): project.active = False project.save() json_abort( { 'msg': 'The end date for this project has passed.' ' You can no longer bid on it.' }, 403) total_bids = 0 for item in project.bids_received: total_bids = total_bids + float(item.amount) if float(project.contract_value) - total_bids < 1 or \ project.end_date < datetime.date.today(): project.active = False project.save() msg = { 'msg': 'This project has been closed. No more' ' investments are allowed' } json_abort(msg, 400) if (total_bids + bid_amount) > project.contract_value: msg = { 'msg': f'The amount you want to invest is too much.' ' You can only invest {}'.format( (float(project.contract_value) - total_bids)) } json_abort(msg, 400) return project
def put(self, curr_user): data = request.get_json() if curr_user is None: json_abort(401, "לא נמצא משתמש רשום עם פרטים אלו") member = curr_user.member old_password = data.get("password") # old_password_encoded = generate_password_hash(old_password, method='sha256') new_password = data.get("new_password") if check_password_hash(member.password, old_password): if check_password_hash(member.password, new_password): json_abort(409, "זוהי כבר הסיסמה הנוכחית") else: new_password_encoded = generate_password_hash(new_password, method='sha256') member.password = new_password_encoded db.session.commit() response = make_response( jsonify(message='הסיסמה עודכנה בהצלחה'), 200) return response else: json_abort(401, "זו אינה הסיסמה הישנה")
def get_bid(email, id): """Retrieve bid if valid""" bid = Bids.query.filter_by(user_email=email, id=id).first() if not bid: json_abort({'msg': 'You dont have access to this bid.'}, 401) return bid
def get_user(email, password): """Retrieve a user if their credentials are correct""" user = Users.query.filter_by(email=email).first() if user is None or not check_password_hash(user.password, password): json_abort({'msg': 'Invalid Email/Password entered'}, 401) return user
def post(self): try: dict_variable = { int(key) + 1: value + 1 for (key, value) in request.json.items() } print('Answers', dict_variable) except Exception as e: json_abort(*exceptions_mapper(400, []), e) result = check_if_all_questions_with_answers(dict_variable) if result is not None: json_abort(*exceptions_mapper(400, result), e) else: for number_question in dict_variable.keys(): answer_value = dict_variable[number_question] if number_question == 1: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 6: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 2: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 4: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 3: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 3: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 4: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 3: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 5: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 6: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 7: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper(400, "Wrong range")) if number_question == 8: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 4: json_abort(*exceptions_mapper(400, "Wrong range")) try: model = Markowitz() score = get_risk_horizon_score(dict_variable) fig = model.get_optimal_portfolio(0) base64image = plt_to_src(fig) except Exception as e: json_abort(*exceptions_mapper(500), e) return make_response(jsonify(message="Porfolio", src=base64image), 200)
def post(self): data = request.get_json() model_name = data['model_name'] if not is_valid_model_name(model_name): json_abort(*exceptions_mapper(400, 'שם המודל שהוזן אינו חוקי')) answers = data['answers'] try: dict_variable = { int(key) + 1: value + 1 for (key, value) in answers.items() } print('Answers', dict_variable) except Exception as e: json_abort(*exceptions_mapper(400, []), e) result = check_if_all_questions_with_answers(dict_variable) if result is not None: json_abort(*exceptions_mapper(400, result), e) else: for number_question in dict_variable.keys(): answer_value = dict_variable[number_question] if number_question == 1: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 6: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 2: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 4: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 3: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 3: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 4: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 3: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 5: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 6: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 7: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 5: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) if number_question == 8: # answer_value = dict_variable[number_question] if not 1 <= answer_value <= 4: json_abort(*exceptions_mapper( 400, "התשובה אינה בטווח התשובות האפשריות")) try: score = get_risk_horizon_score(dict_variable) if score is None: return make_response( jsonify(message="קיבלת רמת סיכון מינימלית"), 200) # If there are not problems with the request we wish to add the different values uid = data.get('uid') # Create user if not existed if uid and len(uid) > 0: user = User.query.get(uid) if not user: json_abort(*exceptions_mapper(400, "המזהה אינו חוקי")) else: uid = str(uuid.uuid4()) user = User(_id=uid) db.session.add(user) # Get AnswersSet answer_set_pk = "{}_{}_{}_{}_{}_{}_{}_{}_{}".format( score, dict_variable[1], dict_variable[2], dict_variable[3], dict_variable[4], dict_variable[5], dict_variable[6], dict_variable[7], dict_variable[8]) answers_set = AnswersSet.query.get(answer_set_pk) if not answers_set: json_abort(*exceptions_mapper(500, "לא נמצאו התשובות לשאלון")) # Get portfolio portfolio = Portfolio.query.filter_by( algorithm=model_name, risk=score).order_by(desc('date_time')).first() if not portfolio: json_abort( *exceptions_mapper(500, "תהליך מציאת תיק השקעות נכשל")) if not db.session.query(PortUserAnswersSet).filter_by( user_id=uid, ans_set_val=answer_set_pk, portfolios_id=portfolio.id).first(): pua = PortUserAnswersSet( user_id=uid, ans_set_val=answer_set_pk, portfolios_date_time=portfolio.date_time, portfolios_id=portfolio.id) db.session.add(pua) db.session.commit() except Exception as e: json_abort(*exceptions_mapper(500), e) return make_response(jsonify(message="Porfolio", link=portfolio.link), 200)