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)
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)
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)
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)