示例#1
0
def import_users():
    global users
    (row_success, row_error) = (0, 0)
    ses = db_session()
    users = read_users(full_user_csv)
    users = users[:-10]  # drop last 10 rows
    for user in users.values:
        try:
            record = User(
                **{
                    # "id": user[0],  # - nie wstawiam id, bo popsuje auto increment
                    "full_name": user[1],
                    "email": user[2],
                    "hashed_password": user[3],
                    "is_active": user[4],
                })
            ses.add(record)
            ses.commit()
            row_success += 1
        except:
            ses.rollback()
            ses = db_session()
            row_error += 1
    ses.close()
    print(f"User table results: success: {row_success}, failed: {row_error}")
示例#2
0
def import_movies():
    global movies
    (row_success, row_error) = (0, 0)
    ses = db_session()
    movies = read_clear_movies(reduced_movie_csv)
    for movie in movies.values:
        try:
            record = Movie(
                **{
                    "id": movie[0],
                    "imdb_id": movie[1],
                    "title": movie[2],
                    "genres": movie[3],
                    "release_date": movie[4],
                    "overview": movie[5],
                    "vote_average": movie[6],
                    "vote_count": movie[7],
                    "popularity": movie[8],
                    "budget": movie[9],
                    "release_year": movie[10]
                })
            ses.add(record)
            ses.commit()
            row_success += 1
        except:
            ses.rollback()
            ses = db_session()
            row_error += 1
    ses.close()
    print(f"Movie table results: success: {row_success}, failed: {row_error}")
示例#3
0
def crumb(crumb_dict):
    crumb_instance = Crumb(**crumb_dict)
    with db_session() as session:
        session.add(crumb_instance)
        session.commit()
        yield crumb_instance
        session.delete(crumb_instance)
示例#4
0
def user(user_dict):
    user_instance = User(**user_dict)
    with db_session() as session:
        session.add(user_instance)
        session.commit()
        yield user_instance
        session.delete(user_instance)
示例#5
0
def register():
    post_data = request.get_json()
    first_name = post_data.get('first_name')
    last_name = post_data.get('last_name')
    phone_number = post_data.get('phone_number')
    normalized_phone = normalize_phone_number(phone_number)
    with db_session() as session:
        existing = session.query(User).filter_by(
            phone_number=normalized_phone).first()
        if existing:
            return make_response(jsonify({
                'message': 'already-exists',
            })), 202
        else:
            user = User(first_name=first_name,
                        last_name=last_name,
                        phone_number=phone_number)
            session.add(user)
            session.commit()
            user.send_confirmation_code()
            return make_response(
                jsonify({
                    'first_name': user.first_name,
                    'last_name': user.last_name,
                    'user_id': str(user.id),
                })), 200
示例#6
0
 def resolve_crumb_images(self, args, context, info):
     with db_session() as session:
         res = session.query(CrumbImageModel).filter_by(
             crumb_id=args['crumb_id'])
         return [
             CrumbImage(id=crumb_image.id,
                        upload_status=crumb_image.upload_status,
                        s3_url=crumb_image.s3_url) for crumb_image in res
         ]
示例#7
0
def test_create_crumb(crumb_dict):
    """ successfully creates a crumb record
    """
    crumb = Crumb(**crumb_dict)
    with db_session() as session:
        session.add(crumb)
        session.commit()
        persisted_crumb = session.query(Crumb).first()
        assert isinstance(persisted_crumb.id, int) is True
        session.delete(persisted_crumb)
示例#8
0
def confirmed_user(user_dict):
    user_instance = User(**user_dict)
    with db_session() as session:
        session.add(user_instance)
        code = user_instance.confirmation_code
        user_instance.confirm_phone_number_with_code(code)
        session.add(user_instance)
        session.commit()
        yield user_instance
        session.delete(user_instance)
示例#9
0
def test_create_user(user_dict):
    """ successfully creates a user record
    """
    user = User(**user_dict)
    with db_session() as session:
        session.add(user)
        session.commit()
        persisted_user = session.query(User).filter_by(
            phone_number=user_dict['phone_number']).one()
        assert isinstance(persisted_user.id, int) is True
        session.delete(persisted_user)
示例#10
0
def test_login_with_valid_credentials(test_client, user_dict):
    user = User(**user_dict)
    with db_session() as session:
        session.add(user)
    res = test_client.post('/auth/login',
                           data=json.dumps(user_dict),
                           content_type='application/json')
    data = json.loads(res.data.decode())
    assert res.status_code == 200
    assert data.get('auth_token') is None
    assert data['user_id'] is not None
示例#11
0
    def mutate(root, args, context, info):
        with db_session() as session:
            crumb_image_instance = CrumbImageModel(
                user_id=g.current_user['id'],
                s3_url=args['s3_url'],
                crumb_id=args['crumb_id'])

            session.add(crumb_image_instance)
            session.commit()
            crumb_image = CrumbImage(s3_url=crumb_image_instance.s3_url,
                                     id=crumb_image_instance.id)

            return CreateCrumbImage(crumb_image=crumb_image)
示例#12
0
def test_create_duplicate_user(user_dict):
    """ the database should not let us insert duplicate phone numbers
    """
    user1 = User(**user_dict)
    user2 = User(**user_dict)
    with pytest.raises(sa.exc.IntegrityError):
        with db_session() as session:
            session.add(user1)
            session.commit()
            session.add(user2)
            session.commit()
            session.delete(user1)
            session.delete(user2)
示例#13
0
def test_create_crumb_image(crumb_image_dict):
    """ successfully creates a crumb image record
    """
    crumb_image = CrumbImage(**crumb_image_dict)
    with db_session() as session:
        session.add(crumb_image)
        session.commit()
        persisted_crumb_image = session.query(CrumbImage).first()
        assert isinstance(persisted_crumb_image.id, int) is True
        assert persisted_crumb_image.user.id == crumb_image_dict['user_id']
        assert persisted_crumb_image.crumb.id == crumb_image_dict['crumb_id']
        crumb = session.query(Crumb).get(crumb_image_dict['crumb_id'])
        assert len(crumb.crumb_images) == 1
        session.delete(persisted_crumb_image)
示例#14
0
def test_register_with_new_user(user_dict):
    """ register a user that doesn't already exist
    """
    res = register_user(user_dict)
    # lets go ahead and delete this user now that we have the response info
    # we need so we don't muck up the test database
    with db_session() as session:
        session.query(User).filter_by(
            phone_number=user_dict['phone_number']).delete()
    data = json.loads(res.data.decode())
    assert res.status_code == 200
    assert data.get('auth_token') is None
    assert data.get('user_id') is not None
    assert data.get('first_name') == user_dict['first_name']
    assert data.get('last_name') == user_dict['last_name']
示例#15
0
def import_ratings():
    (row_success, row_error) = (0, 0)
    ses = db_session()
    ratings = read_rating(reduced_rating_csv)
    ratings = ratings[ratings["movieId"].isin(movies['id'])]
    ratings = ratings[ratings["userId"].isin(users['id'])]
    for rating in ratings.values:
        try:
            record = Rating(
                **{
                    "user_id": rating[0],
                    "movie_id": rating[1],
                    "rating": rating[2],
                    "time_stamp": rating[3]
                })
            ses.add(record)
            ses.commit()
            row_success += 1
        except:
            row_error += 1
            ses.rollback()
            ses = db_session()
    ses.close()
    print(f"Rating table results: success: {row_success}, failed: {row_error}")
示例#16
0
def create_savvy_request():
    post_data = request.get_json()
    email_address = post_data.get('email_address')
    subject = post_data.get('subject')
    with db_session() as session:
        user = session.query(User).filter_by(
            email_address=email_address).first()
        if not user:
            user = User(email_address=email_address)
            session.add(user)
            session.commit()
        savvy_request = SavvyRequest(user_id=user.id, subject=subject)
        session.add(savvy_request)
        session.commit()
        return make_response(jsonify({
            'message': 'success',
        })), 200
示例#17
0
def confirm():
    post_data = request.get_json()
    user_id = post_data.get('user_id')
    confirmation_code = post_data.get('confirmation_code')
    with db_session() as session:
        user = session.query(User).filter_by(id=user_id).one()
        user.confirm_phone_number_with_code(confirmation_code)
        session.add(user)
        session.commit()
        if user.phone_number_confirmed:
            return make_response(
                jsonify({
                    'auth_token': user.generate_auth_token(),
                })), 200
        else:
            return make_response(jsonify({
                'message': 'invalid-code',
            })), 401
示例#18
0
def create_savvy_submission():
    post_data = request.get_json()
    email_address = post_data.get('email_address')
    title = post_data.get('title')
    body = post_data.get('body')
    with db_session() as session:
        user = session.query(User).filter_by(
            email_address=email_address).first()
        if not user:
            user = User(email_address=email_address)
            session.add(user)
            session.commit()
        savvy_submission = SavvySubmission(user_id=user.id,
                                           title=title,
                                           body=body)
        session.add(savvy_submission)
        session.commit()
        return make_response(jsonify({
            'message': 'success',
        })), 200
示例#19
0
def login():
    post_data = request.get_json()
    phone_number = post_data.get('phone_number')
    normalized_phone = normalize_phone_number(phone_number)
    with db_session() as session:
        user = session.query(User).filter_by(
            phone_number=normalized_phone).first()
        if user:
            user.send_confirmation_code()
            return make_response(
                jsonify({
                    'first_name': user.first_name,
                    'last_name': user.last_name,
                    'user_id': str(user.id),
                })), 200

        else:
            return make_response(jsonify({
                'message': 'no-user-for-phone',
            })), 401
示例#20
0
def add(x):
    session = db_session()
    session.add(x)
    session.commit()
示例#21
0
 def resolve_all_crumbs(self, args, context, info):
     with db_session() as session:
         res = session.query(CrumbModel)
         return [Crumb(id=crumb.id, status=crumb.status) for crumb in res]
示例#22
0
import asyncio
import pandas as pd

from src.crud import crud_movie
from src.services.omdb import load_data_from_omdb
from src.database import db_base, db_engine, db_session
from src.utilities import query_util

ses = db_session()


async def update_posters_url(movies_count: int):
    db_movies = crud_movie.get_movies_without_posters(db=ses, count=movies_count)

    if db_movies:
        df = pd.DataFrame(query_util.query_to_dict(db_movies))

        # data from omdb
        results = await load_data_from_omdb(df['imdb_id'])

        # transpose array
        url_list = {}
        for i in results:
            if i['Response'] == 'True':
                url_list[i['imdbID']] = i['Poster']

        # update each movies
        (row_success, row_error) = (0, 0)
        for movie in db_movies:
            poster_url = url_list[movie.imdb_id]
            if crud_movie.update_movie_poster_url(db=ses, movie_obj=movie, poster_url=poster_url):
示例#23
0
from src.database import get_db, db_session
from src.models import Movie, User, Rating
from data_loader.import_to_db import import_all

db = db_session()
try:
    print("Database migration check: ", end='')
    if \
        db.query(Movie).count() == 0 or \
        db.query(User).count() == 0 or \
        db.query(Rating).count() == 0:
        raise Exception('db is empty')
    print("data already populated.")
except:
    print("import is required!")
    import_all()