Example #1
0
def resend_confirmation():
    if not request.is_json:
        raise NotValidRequestException("POST doesn't have payload.")

    email = request.json.get('email', None)
    username = request.json.get('username', None)
    if not email:
        raise MissingParametersException("Missing email.")
    if not username:
        raise MissingParametersException("Missing username.")

    user = Users.query.filter_by(name=username, email=email).first()

    if user and user.confirmed:
        raise UserIsConfirmedException("User is confirmed", user)

    token = generate_confirmation_token(user.email)

    # confirm_url = url_for('auth.confirmation', token=token, _external=True)
    confirm_url = 'http://localhost/register/confirmation?token=' + token.decode(
        "utf-8")
    send_email(user.email, confirm_url)

    user_event = UserEvents(user, "confirmation email sender again")
    db_session.add(user_event)

    db_session.commit()
    return user_schema.dump(user)
Example #2
0
def add_agreements():
    if not request.is_json:
        raise NotValidRequestException("POST doesn't have JSON payload.")

    agreement_id = request.json.get('agreement_id', None)
    if not agreement_id:
        raise MissingParametersException("Missing agreement_id.")

    is_accepted = request.json.get('is_accepted', None)

    current_user = get_jwt_identity()

    user = Users.query.filter_by(public_id=current_user).first()
    agreement = Agreements.query.filter_by(id=agreement_id).first()

    existing_user_agreements = UserAgreements.query.filter_by(
        user=user, agreement=agreement).first()

    if existing_user_agreements:
        raise CreatedRelationExistException(
            "User has Agreement relation exist.")

    user_agreements = UserAgreements(user=user,
                                     agreement=agreement,
                                     is_accepted=is_accepted)
    user_agreements.is_read = True

    db_session.add(user_agreements)
    db_session.commit()
    return jsonify(user_agreements_schema.dump(user_agreements))
Example #3
0
def post():
    if not request.json or not 'name' in request.json:
        abort(400)

    name = request.json['name']
    platform_id = request.json['platform']
    publisher_id = request.json['publisher']

    course = Courses(name)
    course.platform_id = platform_id
    course.publisher_id = publisher_id

    db_session.add(course)
    db_session.commit()

    # https://github.com/seek-ai/esengine
    # https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvi-full-text-search
    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    # from flask import current_app
    #
    # message = json.dumps(json.dumps(course_search_schema.dump(course)))
    #
    # current_app.logger.info(current_app.topic.__dict__)
    #
    # with current_app.topic.get_producer() as producer:
    #     producer.produce(message.encode('ascii'))

    return course_schema.dump(course)
Example #4
0
def update(id):
    publisher = Publishers.query.get(id)
    publisher.name = request.json.get('name', publisher.name)
    publisher.updated_on = func.now()

    db_session.commit()
    return jsonify(publisher_schema.dump(Publishers.query.get(id)))
Example #5
0
def update(id):
    platform = Platforms.query.get(id)
    platform.name = request.json.get('name', platform.name)
    platform.updated_on = func.now()

    db_session.commit()
    return jsonify(platform_schema.dump(Platforms.query.get(id)))
Example #6
0
def user_is_confirmed_exception(e):
    user = Users.query.filter_by(id=e.user.id).first()
    user_event = UserEvents(user, "confirmed user try another confirmation",
                            dict(request.headers))
    db_session.add(user_event)
    db_session.commit()

    return jsonify({"message": e.message}), 403
Example #7
0
def update(id):
    tag = Tags.query.get(id)
    tag.name = request.json.get('name', tag.name)
    tag.description = request.json.get('description', tag.description)
    tag.updated_on = func.now()

    db_session.commit()
    return jsonify(tag_schema.dump(Tags.query.get(id)))
Example #8
0
def not_authorized_logging_exception(e):
    user = Users.query.filter_by(id=e.user.id).first()
    user_event = UserEvents(user, "not authorized logging",
                            dict(request.headers))
    db_session.add(user_event)
    db_session.commit()

    return jsonify({"message": e.message}), 403
Example #9
0
def post():
    if not request.json or not 'name' in request.json:
        abort(400)
    name = request.json['name']
    publisher = Publishers(name)

    db_session.add(publisher)
    db_session.commit()
    return publisher_schema.dump(publisher)
Example #10
0
def post():
    if not request.json or not 'name' in request.json:
        abort(400)
    name = request.json['name']
    platform = Platforms(name)

    db_session.add(platform)
    db_session.commit()
    return platform_schema.dump(platform)
Example #11
0
def post():
    if not request.json or not 'name' in request.json:
        abort(400)
    name = request.json['name']
    description = request.json['description']
    tag = Tags(name, description)

    db_session.add(tag)
    db_session.commit()
    return tag_schema.dump(tag)
Example #12
0
def update(id):
    course = Courses.query.filter_by(id=id).first()
    course.name = request.json.get('name', course.name)
    course.updated_on = func.now()

    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return jsonify(course_schema.dump(course))
Example #13
0
def update(id):
    agreement = Agreements.query.get(id)
    agreement.title = request.json.get('title', agreement.title)
    agreement.description = request.json.get('description', agreement.description)
    agreement.body = request.json.get('body', agreement.body)
    agreement.is_required = request.json.get('is_required', agreement.is_required)
    agreement.valid_from = request.json.get('valid_from', agreement.valid_from)
    agreement.valid_to = request.json.get('valid_to', agreement.valid_to)
    agreement.is_active = request.json.get('is_active', agreement.is_active)
    agreement.updated_on = func.now()

    db_session.commit()
    return jsonify(agreement_schema.dump(Agreements.query.get(id)))
Example #14
0
def post():
    if not request.json or not 'title' in request.json:
        abort(400)
    title = request.json['title']
    agreement = Agreements(title)
    agreement.description = request.json['description']
    agreement.body = request.json['body']
    agreement.is_required = request.json['is_required']
    agreement.valid_from = request.json['valid_from']
    agreement.valid_to = request.json['valid_to']

    db_session.add(agreement)
    db_session.commit()
    return agreement_schema.dump(agreement)
Example #15
0
def add_tag(course_id):
    if not request.json or not 'tag_id' in request.json:
        abort(400)

    tag_id = request.json['tag_id']
    course = Courses.query.get(course_id)
    tag = Tags.query.filter_by(id=tag_id).first()

    course.tags.append(tag)
    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return jsonify(course_schema.dump(course))
Example #16
0
def post():
    if not request.json or not 'name' in request.json:
        abort(400)
    if not request.json or not 'description' in request.json:
        abort(400)

    name = request.json['name']
    description = request.json['description']

    release_type = ReleaseTypes(name=name, description=description)

    db_session.add(release_type)
    db_session.commit()
    return release_type_schema.dump(release_type)
Example #17
0
def add_keyword(course_id):
    if not request.json or not 'name' in request.json:
        abort(400)
    course = Courses.query.get(course_id)

    name = request.json['name']
    keyword = Keywords(name)
    course.keywords.append(keyword)

    course.updated_on = func.now()

    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return keyword_schema.dump(keyword)
Example #18
0
def confirmation(token):
    try:
        email = email_from_confirm_token(token)
    except:
        raise InvalidTokenException("URL Token is not valid.")

    print(email)

    user = Users.query.filter_by(email=email).first()
    if user.confirmed:
        raise UserIsConfirmedException("User is confirmed", user)
    else:
        user.confirmed = True
        user.confirmed_on = datetime.datetime.now()
        db_session.add(user)
        db_session.commit()
    return jsonify({"msg": "Confirmed!"}), 200
Example #19
0
def releases_create(course_id):
    course = Courses.query.get(course_id)

    name = request.json['name']
    description = request.json['description']
    release_type_id = request.json['release_type_id']

    release_type = ReleaseTypes.query.get(release_type_id)
    release = Releases(name, description, release_type)
    course.releases.append(release)

    course.updated_on = func.now()

    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return release_schema.dump(release)
Example #20
0
def ratings_create(course_id):
    if not request.json or not 'points' in request.json:
        abort(400)

    points = request.json['points']

    course = Courses.query.get(course_id)

    current_user = get_jwt_identity()
    user = Users.query.filter_by(public_id=current_user).first()

    rating = Ratings(user=user, course=course, points=points)
    db_session.add(rating)
    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return rating_schema.dump(rating)
Example #21
0
def reviews_create(course_id):
    if not request.json or not 'description' in request.json:
        abort(400)

    description = request.json['description']

    course = Courses.query.get(course_id)

    current_user = get_jwt_identity()

    user = Users.query.filter_by(public_id=current_user).first()

    review = Reviews(user=user, course=course, description=description)
    db_session.add(review)
    db_session.commit()

    # es.index(index='courses', doc_type='title', id=course.id, body=json.dumps(course_search_schema.dump(course)))

    return review_schema.dump(review)
Example #22
0
def password_change(token):
    if not request.is_json:
        raise NotValidRequestException("POST doesn't have JSON payload.")

    new_password = request.json.get('password', None)

    try:
        email = email_from_confirm_token(token)
    except:
        raise InvalidTokenException("URL Token is not valid.")

    user = Users.query.filter_by(email=email).first()

    if user and not user.confirmed:
        raise UserIsNotConfirmedException("User is not confirmed", user)

    user.password = sha256_crypt.encrypt(new_password)
    db_session.add(user)
    db_session.commit()
    return jsonify({"msg": "Password changed."}), 200
Example #23
0
def login():
    if not request.is_json:
        raise NotValidRequestException("POST doesn't have JSON payload.")

    username = request.json.get('username', None)
    password = request.json.get('password', None)
    if not username or not password:
        raise MissingParametersException("Missing username or password")

    user = Users.query.filter_by(name=username).first()

    if not user:
        raise UserNotExistException("User do not exist.")

    if user and not user.confirmed:
        raise UserIsNotConfirmedException("User is not confirmed", user)

    if sha256_crypt.verify(password, user.password):

        user_event = UserEvents(user, "correctly logged",
                                dict(request.headers))
        db_session.add(user_event)

        # https://flask-jwt-extended.readthedocs.io/en/stable/add_custom_data_claims/
        access_token = create_access_token(identity=user.public_id)
        refresh_token = create_refresh_token(identity=user.public_id)

        user_event = UserEvents(user, "generated tokens", {
            "access_token": access_token,
            "refresh_token": refresh_token
        })
        db_session.add(user_event)
        db_session.commit()
        return jsonify({
            'access_token': access_token,
            'refresh_token': refresh_token
        }), 200
    else:
        raise NotAuthorizedLoggingException(
            "User is not authorized or not exist.", user)
Example #24
0
def reviews_delete(course_id, review_id):
    db_session.delete(Reviews.query.get(review_id))
    db_session.commit()
    return jsonify({'result': True})
Example #25
0
def delete(id):
    db_session.delete(Platforms.query.get(id))
    db_session.commit()
    return jsonify({'result': True})
Example #26
0
def delete(id):
    db_session.delete(ReleaseTypes.query.get(id))
    db_session.commit()
    return jsonify({'result': True})
Example #27
0
def ratings_delete(course_id, rating_id):
    db_session.delete(Ratings.query.get(rating_id))
    db_session.commit()
    return jsonify({'result': True})