def get(person_id): with session() as sess: try: person = sess.query(Person).filter_by(id=person_id).one() except NoResultFound: return make_response(f"Person with id {person_id} does not exist", 404) return make_response("Success", 200, person=person.to_dict())
def get(office_id): with session() as sess: try: office = sess.query(Office).filter_by(id=office_id).one() except NoResultFound: return make_response(f"Office with id {office_id} does not exist", 404) return make_response(f"Office with id {office_id}", 200, office=office.to_dict())
def put(person_id): modified_person = request.json increment_age = modified_person.get('age', False) name = modified_person.get('name') with session() as sess: try: person = sess.query(Person).filter_by(id=person_id).one() if increment_age: person.age = person.age + 1 if name: person.name = name except NoResultFound: return make_response(f"Person with id {person_id} does not exist", 404) return make_response("Success", 200, person=person.to_dict())
def handle_error(e): status_code = 500 if isinstance(e, HTTPException): status_code = e.code return make_response( f"Operation failed with error: {type(e).__name__}: {str(e)}", status_code)
def remove_employee(): data = request.json if 'office_id' not in data or 'person_id' not in data: return make_response( "Both office_id and person_id need to be supplied", 404) office_id = data['office_id'] person_id = data['person_id'] with session() as sess: try: sess.query(Person).filter_by(id=person_id).update( {"office_id": None}) except NoResultFound: return make_response(f"No person with id {person_id} exists", 404) return make_response( f"Person with id {person_id} was removed from office with id {office_id}", 200, )
def post(): data = request.json with session() as sess: new_office = Office(name=data['name']) sess.add(new_office) sess.flush() return make_response(f"Created office with id {new_office.id}", 200, office=new_office.to_dict())
def post(): data = request.json office_id = data.get('office_id') office = None with session() as sess: if office_id: try: office = sess.query(Office).filter_by(id=office_id).one() except NoResultFound: return make_response( f"Office with id {office_id} does not exist, did not create person entry", 404) new_person = Person(name=data['name'], age=data['age'], office_id=office, office=office) sess.add(new_person) sess.flush() return make_response(f"Created person with id {new_person.id}", 200, person=new_person.to_dict())