예제 #1
0
    def update_actor(data):
        """
        Update actor record by id
        """
        #data = get_request_data()
        ### YOUR CODE HERE ###

        # use this for 200 response code
        upd_record = Actor.update(1, **data)
        upd_actor = {
            k: v
            for k, v in upd_record.__dict__.items() if k in ACTOR_FIELDS
        }
        return make_response(jsonify(upd_actor), 200)
예제 #2
0
def update_actor():
    """
    Update actor record by id
    """
    data = get_request_data()
    if 'id' in data.keys():
        try:
            row_id = int(data['id'])
        except:
            err = 'Id must be integer'
            return make_response(jsonify(error=err), 400)
    else:
        err = 'No id specified'
        return make_response(jsonify(error=err), 400)
    keys = list(data.keys())
    keys.remove('id')
    for i in range(len(keys)):
        if keys[i] == 'date_of_birth':
            try:
                data['date_of_birth'] = dt.strptime(data['date_of_birth'],
                                                    '%d.%m.%Y').date()
            except:
                err = 'Wrong data format'
                return make_response(jsonify(error=err), 400)
            continue
        elif keys[i] == 'name':
            continue
        elif keys[i] == 'gender':
            continue
        else:
            err = 'Wrong keys'
            return make_response(jsonify(error=err), 400)
    try:
        upd_record = Actor.update(row_id, **data)
        upd_actor = {
            k: v
            for k, v in upd_record.__dict__.items() if k in ACTOR_FIELDS
        }
        return make_response(jsonify(upd_actor), 200)
    except:
        err = 'Record with such id does not exist'
        return make_response(jsonify(error=err), 400)
예제 #3
0
app = Flask(__name__, instance_relative_config=False)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config[
    'SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # silence the deprecation warning

db.init_app(app)

with app.app_context():
    db.create_all()
    # actor = Actor.create(**data_actor)
    # print('created actor:', actor.__dict__, '\n')
    #
    # movie = Movie.create(**data_movie)
    # print('created movie:', movie.__dict__, '\n')

    upd_actor = Actor.update(1, **data_actor_upd)
    print('updated actor:', upd_actor.__dict__, '\n')

    upd_movie = Movie.update(1, **data_movie_upd)
    print('updated movie:', upd_movie.__dict__, '\n')

    add_rels_actor = Actor.add_relation(1, upd_movie)
    movie_2 = Movie.create(**data_movie)
    add_more_rels_actor = Actor.add_relation(1, movie_2)
    print('relations list:', add_more_rels_actor.filmography, '\n')

    # clear_rels_actor = Actor.clear_relations(1)
    # print('all relations cleared:', clear_rels_actor.filmography, '\n')

    # del_actor = Actor.delete(15)
    # print('Actor deleted:', del_actor)
예제 #4
0
def upd_actor():
    data = get_request_data()
    new_record = data
    for dat in data:
        if dat not in set(ACTOR_FIELDS):
            err = 'Wrong key'
            return make_response(jsonify(error=err), 400)
    if data.get('id'):
        try:
            row_id = int(data['id'])
        except:
            err = 'Id must be integer'
            return make_response(jsonify(error=err), 400)

        obj = Actor.query.filter_by(id=row_id).first()

        try:
            try_actor = {
                k: v
                for k, v in obj.__dict__.items() if k in MOVIE_FIELDS
            }
        except:
            err = 'Record with such id does not exist'
            return make_response(jsonify(error=err), 400)
        if data.get('gender'):
            if (data['gender'] != "male") and (
                    data['gender'] !=
                    "female") and (data['gender'] != "Female") and (
                        data['gender'] != "Male"):  # !!!!!!!!!!!!!!!!!!!!!!!!
                err = 'There are only two genders'
                return make_response(jsonify(error=err), 400)
        else:
            new_record.pop('date_of_birth', None)

        if data.get('date_of_birth'):
            try:
                dt.strptime(data['date_of_birth'], DATE_FORMAT).date()
                new_record['date_of_birth'] = dt.strptime(
                    data['date_of_birth'], DATE_FORMAT).date()
            except:
                err = 'incorrect date format(d.m.y)'
                return make_response(jsonify(error=err), 400)
        else:
            new_record.pop('date_of_birth', None)

        if data.get('name'):
            obj = Actor.query.filter_by(name=new_record['name']).first()
            if obj:
                err = 'Actor with that name already exist'
                return make_response(jsonify(error=err), 400)
            if data['name'].isdigit():
                err = 'Name must be string'
                return make_response(jsonify(error=err), 400)

            if (len(data['name']) > 50):
                err = 'Name must be less than 50 characters'
                return make_response(jsonify(error=err), 400)
        else:
            new_record.pop('data', None)
        Actor.update(data['id'], **new_record)

        actor = Actor.query.filter_by(id=data['id']).first()
        print(actor)
        if actor:
            return_var = {
                k: v
                for k, v in actor.__dict__.copy().items()
                if not k.startswith('_')
            }
        else:
            err = f'Could not find an actor with ID {data.get("id")}'
            return make_response(jsonify(error=err), 400)

        return make_response(jsonify(return_var), 200)
    else:
        err = 'No id specified'
        return make_response(jsonify(error=err), 400)