def get_lawyer_cases(id): print(id) lawyer = User.get_or_none(User.id == id) reviews = Cases.select().where(Cases.lawyer == lawyer).order_by( Cases.pub_at.desc()) reviews = [r.to_dict() for r in reviews] return respond(reviews, 201)
def get_user_by_username(username): print(username) user = User.get_or_none(User.username == username) if user is not None: return respond(user.to_dict(), 201) else: return respond_error("No user found", 404)
def _upload_profile_pic(): print("profile pic", flush=True) data = request.files.getlist("file[]") for file in data: if file.filename == "": return respond_error("No filename uploaded", 400) filename = secure_filename(file.filename) extension = filename.split(".")[-1] if extension not in ALLOWED_EXTENSIONS: return respond_error(f"{extension} not allowed", 400) result = [] for file in data: filename = secure_filename(file.filename) db_file = File(filename=filename, owner=g.user.id) db_file.save() file.save(os.path.join(os.environ["UPLOAD_DIR"], db_file.unique_id)) result.append(db_file.to_dict()) print(result[0], flush=True) user = User.get_or_none(User.id == g.user.id) if user is not None: user.profile_picture = result[0]['unique_id'] user.save() print(result, flush=True) return respond(result, 201)
def get_reviews(id): lawyer = User.get_or_none(User.id==id) if lawyer is not None: review = Review.select().where(Review.lawyer == id).order_by(Review.pub_at.desc()) review = [r.to_dict() for r in review] return respond(review, 201) else: return respond("No review", 500)
def get_profile(): user = g.user user = User.get_or_none(User.id == user["id"]) data = user.to_dict() membership = Membership.get_or_none(Membership.user == user.id) data["membership"] = membership.to_dict() return respond_data(data)
def login_user(): body = request.json email = body['email'] password = body['password'] user = User.get_or_none(User.email == email) if user is not None: if bcrypt.checkpw(password.encode('utf-8'), user.password.__str__().encode('utf-8')): token = create_token(user) return jsonify({'data': {'token': token, 'user': user.to_dict()}, 'status': 201}) else: return respond_error("UNAUTHORIZED", 401)
def update_profile(username): body = request.json['userData'] print(body) user = User.get_or_none(User.username == username) if user is not None: if body['name'] is not "" and body['name'] is not None: user.name = body['name'] print("updating name") if body['about'] is not "" and body['about'] is not None: user.about = body['about'] print("updating about") user.save() return respond(user.to_dict(), 201)
def login(): email = request.json.get("email") password = request.json.get("password") user = User.get_or_none(User.email == email) if not user or not user.check_password(password): raise SanoException(400, LOGIN_EXCEPTION, "Wrong email/password") access_token = token_urlsafe(40) data = user.to_session_dict() _save_session(access_token, data) data["access_token"] = access_token return respond_data(data)
def register(): user_data = request.json user_data["password"] = User.hash_password( user_data["password"].encode("utf-8")) user_data["role"] = UserRole.USER.value user = User.get_or_none(User.email == user_data.get("email")) if user: raise SanoException(400, REGISTER_EXCEPTION, "already registered") user = User(**user_data) user.save() access_token = token_urlsafe(40) data = user.to_session_dict() _save_session(access_token, data) data["access_token"] = access_token return respond_data(data, 201)
def create_review(): user = g.user data = request.json comment_text = data['review'] pub_at = dt.parse(data['pub_at']) stars = data['stars'] lawyer_id = data['lawyer'] lawyer = User.get_or_none(User.id == lawyer_id) if lawyer is not None: review = Review(review=comment_text, user=g.user.id, lawyer=lawyer_id, pub_at=pub_at, stars=stars) with db.atomic() as tx: try: review.save() return respond(review.to_dict(), 201) except Exception as e: print(e) tx.rollback() return respond_error(str(e), 500) else: return respond_error("No lawyer found!", 404)
def _create_post(): body = request.json title = body['title'] description = body['description'] pub_at = dt.parse(body['pub_at']) client = body['client'] user = User.get_or_none(User.email == client) if user is not None: c = Cases(title=title, description=description, verified=0, pub_at=pub_at, lawyer=g.user.id, user=user) with db.atomic() as tx: try: c.save() return respond(c.to_dict(), 201) except Exception as e: return respond_error(str(e), 500)
def get_lawyer_reviews(id): lawyer = User.get_or_none(User.id == id) reviews = Review.select().where(Review.lawyer == lawyer) reviews = [r.to_dict() for r in reviews] return respond(reviews, 201)