コード例 #1
0
ファイル: Cases.py プロジェクト: mechaadi/OnlineLawyerSuite
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
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)
コード例 #11
0
ファイル: Cases.py プロジェクト: mechaadi/OnlineLawyerSuite
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)
コード例 #12
0
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)