def update_division(d_id): json_request = dict(copy.deepcopy(request.json)) facility_display_name = request.json.get('facility_name', None) if facility_display_name is not None: facility_name = facility_display_name.strip().replace(' ', '').lower() json_request['facility_name'] = facility_name json_request['facility_display_name'] = facility_display_name.strip() inner = ', '.join('{:s} = {!r}'.format(key, val) for key, val in json_request.items()) query = '''UPDATE branches SET {:s} where id = {:d}'''.format(inner, d_id) with engine.connect() as con: try: con.execute(query) except IntegrityError as e: return record_exists_envelop() except Exception as e: raise return fatal_error_envelop() else: return record_updated_envelop(json_request)
def update_employee(id): '''This i iwill user the raw sql query because this would be easier to reason about''' if not request.json: abort(400) if not all(len(str(val).strip()) >= 1 for key, val in request.json.items()): abort(411) if 'age' not in request.json or 'retirement_age' not in request.json: return jsonify({'message' : 'please send both the age and retirement_age'}) abort(400) age = request.json['age'] retirement_age = request.json['retirement_age'] #first check about the age if int(age) > int(retirement_age) or int(age) < 18: return record_not_updated_env('Age cannot be more than retirement age or less than 18') #clean up the data data = {key : val.strip() if isinstance(val, str) else val for key, val in request.json.items()} #prepate the sql query inner = ', '.join('{} = {!r}'.format(key, val) for key, val in data.items()) query = '''UPDATE employees SET {}, updated_at=Now() where id={}'''.format(inner, id) #try to executre with engine.connect() as con: try: con.execute(query) except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_updated_envelop(request.json)
def update_empextra_by_emp(emp_id, ex_id): if not request.json: abort(400) #check to see if there is any empty values if not all(len(str(val).strip()) for val in request.json.values()): abort(411) #check to see if the request has the right type of keys result = set(request.json.keys()) - set( col.name for col in EmployeeExtra.__mapper__.columns) if result: return extra_keys_envelop('Keys: {!r} not accepted'.format(', '.join( r for r in result))) #clearn up the values for string #generator expression cleaned_json = ((key, val.strip()) if isinstance(val, str) else (key, val) for key, val in request.json.items()) #this means that it has extra set of keys that is not necessary #make the custom query inner = ', '.join('{:s} = {!r}'.format(key, val) for key, val in cleaned_json) query = '''UPDATE employee_extra SET {:s} WHERE id = {:d}'''.format( inner, ex_id) #try to executre with engine.connect() as con: try: con.execute(query) except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_updated_envelop(request.json)
def update_role(r_id): #check to see if they want to update the admin_role. refuse to change the admin_roel #clean up the json values cleaned_json = ((key, val.strip()) if isinstance(val, str) else (key, val) for key, val in request.json.items()) query = update_query(Role.__tablename__, cleaned_json, r_id) with engine.connect() as con: try: con.execute(query) except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_updated_envelop(request.json)
def update_agency(a_id): #checck to see if there is json data if not request.json: abort(400) db_fields = set( col.name for col in Branch.__mapper__.columns) - {'id', 'is_branch'} result = set(request.json.keys()) - db_fields if result: return extra_keys_envelop('Keys not accepted %r' % (', '.join(key for key in result))) #now check if there are any missing values whose length is less than 2 if not all(len(str(val).strip()) >= 1 for val in request.json.values()): return length_require_envelop() json_request = dict(copy.deepcopy(request.json)) facility_display_name = request.json.get('facility_name', None) if facility_display_name is not None: facility_name = facility_display_name.strip().replace(' ', '').lower() json_request['facility_name'] = facility_name json_request['facility_display_name'] = facility_display_name.strip() inner = ', '.join('{:s} = {!r}'.format(key, val) for key, val in json_request.items()) query = '''UPDATE branches SET {:s} where id = {:d}'''.format(inner, a_id) print(query) with engine.connect() as con: try: con.execute(query) except IntegrityError as e: return record_exists_envelop() except Exception as e: raise return fatal_error_envelop() else: return record_updated_envelop(json_request)