def create_qualification_by_emp(id): if not request.json: abort(400) #check if there is empty field comming up if not all( len(str(val).strip()) >= 1 for key, val in request.json.items()): abort(411) #clean up the values qual = { key: val.strip() if isinstance(val, str) else val for key, val in request.json.items() } #insert print(qual) qual['employee_id'] = id ####################### qual['start_date'] = '03-jan-2018' qual['end_date'] = '05-jan-2020' ############### try: print(id) db_session.add(Qualification(**qual)) db_session.commit() except IntegrityError as e: return fatal_error_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def update_user(u_id): if not request.json: abort(400) if not request.args.get('action') == 'update_role': if 'password' not in request.json.keys(): return missing_keys_envelop() try: user = db_session.query(User).filter(User.id == u_id).one() if user is None: return record_notfound_envelop() hashed_pass = hash_password(request.json['password'].encode()) old_hashed_pass = user.password if old_hashed_pass == hashed_pass: return jsonify({ 'message': 'Please dont\'t use old password', 'status': 'fail' }) else: user.password = hashed_pass db_session.add(user) db_session.commit() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: return record_updated_envelop('Password updated Successfully.') #update the role if 'role_id' not in request.json: return missing_keys_envelop() try: user = db_session.query(User).filter(User.id == u_id).one() if user is None: return record_notfound_envelop() user.role_id = int(request.json['role_id']) db_session.add(user) db_session.commit() except NoResultFound as e: return record_notfound_envelop() except Exception as e: raise return fatal_error_envelop() else: return record_updated_envelop('Role updated successfully.')
def create_training_by_emp(id): if not request.json: abort(400) #check if there is empty field comming up #check if there is no registration number and registration body trs = { key: val.strip() if isinstance(val, str) else val for key, val in request.json.items() } #insert ################################### #trs['start_date'] = '01-feb-2012' #trs['end_date'] = '03-feb-2005' ########################## print(id) trs['employee_id'] = id try: db_session.add(Training(**trs)) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def create_certification_by_emp(id): if not request.json: abort(400) #check if there is empty field comming up cert = { key: val.strip() if isinstance(val, str) else val for key, val in request.json.items() } #insert cert['employee_id'] = id ################################### #cert['expiry_date'] = '04-mar-2012' #cert['last_renewal_date'] = '03-mar-2017' ################################ try: db_session.add(Certification(**cert)) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def get_qualifications_by_emp(id): try: qls = db_session.query(Qualification).filter( Qualification.employee_id == id).all() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: quals = ({ 'id': q.id, 'name': q.qualification_name.name if q.qualification_name else '', 'institute_name': q.institute_name if q.institute_name else '', 'city': q.city if q.city else '', 'state': q.state if q.state else '', 'province': q.province if q.province else '', 'country': q.country if q.country else '', 'start_date': str(q.start_date) if q.start_date else '', 'end_date': str(q.end_date) if q.end_date else '', 'qualification_name_id': q.qualification_name_id, 'qualification_name': q.qualification_name.name if q.qualification_name else '' } for q in qls) return records_json_envelop(list(quals))
def create_employee_extra(id): #cheek to see if ther is json if not request.json: abort(400) #if there is json, if there are required fields required_keys = set(col.name for col in EmployeeExtra.__mapper__.columns) - {'id', 'employee_id'} #keys from the rquest object result = request.json.keys() - required_keys #if there is extra remaining keys , abort if result: return extra_keys_envelop('keys not accepeted %r' % result) #check to see if there are any valuekjdhflkjadsfaklsdhfkajsds less than 1 if not all(len(str(val).strip())>=1 for val in request.json.values()): return length_require_envelop() #clearn up the dictionary json_vals = {key : val.strip() if isinstance(val, str) else val for key, val in request.json.items()} #try to insert to database try: db_session.add(EmployeeExtra(**json_vals, employee_id=id)) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: raise e return fatal_error_envelop() else: return record_created_envelop(request.json)
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 create_emp_cat_ranks(): if not request.json: abort(400) if not 'name' in request.json.keys(): abort(401) if len(request.json['name'].strip()) < 2: abort(411) #if everything is fine name = request.json['name'].replace(' ', '').lower().strip() display_name = request.json['name'].strip() #put to db try: rank = EmployeeCategoryRank(name=name, display_name=display_name) db_session.add(rank) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def create_emp_position(): if not request.json: abort(401) required_fields = set(col.name for col in EmployeePosition.__mapper__.columns) - {'id', 'emp_pos_title_display_name', 'del_flag'} extra_fields = set(request.json) - required_fields if extra_fields: return extra_keys_envelop('Unknown Keys : %s' % ', '.join(key for key in extra_fields)) _required = required_fields - set(request.json) if _required: return missing_keys_envelop('Required Keys : %s' % ', '.join(key for key in _required)) #check to see if there is any blank if not all(len(val.strip()) >= 1 for key, val in request.json.items() if isinstance(val, str)): return length_require_envelop() #inject request.json['emp_pos_title_display_name'] = request.json['emp_pos_title'] request.json['emp_pos_title'] = request.json['emp_pos_title'].lower().strip() #initiate the dession try: e_type = EmployeePosition(**request.json) db_session.add(e_type) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def wrapper(*args, **kwargs): if 'Token' not in request.headers: return unauthorized_envelop() try: decoded = decode_access_token(request.headers['Token']) print(decoded) if decoded is None: return unauthorized_envelop() except Exception as e: raise e return unauthorized_envelop() else: user_name = decoded['user_name'] try: user = db_session.query(User).filter( User.user_name == user_name).one() role = user.role role = role.to_dict()[key] except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() if role != 'N': return func(*args, **kwargs) else: print('as') return unauthorized_envelop()
def get_employee(id): try: emp = db_session.query(Employee).filter(Employee.id == id).one() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: return jsonify({ 'first_name': emp.first_name if emp.first_name else '', 'middle_name': emp.middle_name if emp.middle_name else '', 'last_name': emp.last_name if emp.last_name else '', 'sex': emp.sex if emp.sex else '', 'date_of_birth': str(emp.date_of_birth) if emp.date_of_birth else '', 'address_one': emp.address_one if emp.address_one else '', 'address_two': emp.address_two if emp.address_two else '', 'village': emp.village if emp.village else '', 'llg': emp.llg if emp.llg else '', 'district': emp.district if emp.district else '', 'province': emp.province if emp.province else '', 'region': emp.region if emp.region else '', 'country': emp.country if emp.country else '', 'email_address': emp.email_address if emp.email_address else '', 'contact_number': emp.contact_number if emp.contact_number else '', 'alt_contact_number': emp.alt_contact_number if emp.alt_contact_number else '', 'age': emp.age if emp.age else '', 'retirement_age': emp.retirement_age if emp.retirement_age else '', 'employement_number': emp.employement_number if emp.employement_number else '', 'salary_step': emp.salary_step if emp.salary_step else '', 'date_of_commencement': str(emp.date_of_commencement) if emp.date_of_commencement else '', 'contract_end_date': emp.contract_end_date if emp.contract_end_date else '', 'id': emp.id if emp.id else '', 'user_id': emp.user_id if emp.user_id else '', 'employee_branch_id': emp.employee_branch_id if emp.employee_branch_id else '' })
def get_empextras_by_emp(id): try: trs = db_session.query(EmployeeExtra).filter( EmployeeExtra.employee_id == id).all() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: trs = ({ 'id': q.id, 'ref_name': q.ref_name if q.ref_name else '', 'ref_address': q.ref_address if q.ref_address else '', 'ref_contact_number': q.ref_contact_number if q.ref_contact_number else '', 'emp_father_name': q.emp_father_name if q.emp_father_name else '', 'emp_mother_name': q.emp_mother_name if q.emp_mother_name else '', 'emp_single': q.emp_single if q.emp_single else '', 'emp_wife_name': q.emp_wife_name if q.emp_wife_name else '', 'emp_num_of_children': q.emp_num_of_children if q.emp_num_of_children else '' } for q in trs) return records_json_envelop(list(trs))
def handle_branch(branch, emp_branch_id, role_id, user_name, func, *args, **kwargs): print('hdnle branch callsed') if ROLES_PERMISSION[role_id]['permission_two'] == True: return func(*args, **kwargs) else: print('asdasdasdasdasdasd') #go ahead and check the permission that if he can edit for his/her own branch or not if ROLES_PERMISSION[role_id]['permission_four'] == True: try: user = db_session.query(User).filter( User.user_name == user_name).one() emp = user.employee if emp is None: return unauthorized_envelop() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: print('yeasdsadsad') employee_branch_id = emp.employee_branch_id print(employee_branch_id, emp_branch_id) if employee_branch_id == emp_branch_id: print('yeahs') return func(*args, **kwargs) else: return unauthorized_envelop() else: return unauthorized_envelop()
def create_emp_cat(rank_id): if not request.json: abort(400) if not 'name' in request.json.keys(): abort(401) if len(request.json['name'].strip()) < 2: abort(411) #strip down the values display_name = request.json['name'].strip() name = display_name.lower() emp_cat_rank_id = rank_id #try to put onto database try: cat = EmployeeCategory(name=name, display_name=display_name, emp_cat_rank_id=emp_cat_rank_id) db_session.add(cat) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
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 wrapper(*args, **kwargs): if 'Token' not in request.headers: return unauthorized_envelop() try: decoded = decode_access_token(request.headers.get('token')) if decoded is None: return unauthorized_envelop() except Exception as e: return unauthorized_envelop() else: #role_id = decoded['role_id'] user_name = decoded['user_name'] try: user = db_session.query(User).filter( User.user_name == user_name).one() role = user.role role = role.to_dict()[key] except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: if role == 'W' or role == 'E': return func(*args, **kwargs) else: return unauthorized_envelop()
def create_certification_by_emp(id): if not request.json: abort(400) #check if there is empty field comming up if not all( len(str(val).strip()) >= 1 for key, val in request.json.items()): abort(411) #check if there is no registration number and registration body result = {'regulatory_body', 'registration_number'} - set( request.json.keys()) if result: return keys_require_envelop( '"regulatory_body" and "regstration_number" is required') #clean up the values cert = { key: val.strip() if isinstance(val, str) else val for key, val in request.json.items() } #insert cert['employee_id'] = id ################################### cert['expiry_date'] = '04-mar-2012' cert['last_renewal_date'] = '03-mar-2017' ################################ try: db_session.add(Certification(**cert)) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def create_division(t_id): if not request.json: abort(400) if not all( len(val.strip()) >= 1 for val in request.json.values() if isinstance(val, unicode)): return length_require_envelop() _result = {'name', 'code'} - set(request.json.keys()) if _result: return keys_require_envelop('Key: %r is require' % ', '.join(_result)) request.json['display_name'] = request.json['name'].strip() request.json['name'] = request.json['name'].strip().lower() #inject the id request.json['division_type_id'] = t_id try: db_session.add(Division(**request.json)) db_session.commit() except IntegrityError: return record_exists_envelop() except Exception: return fatal_error_envelop() else: return record_created_envelop(request.json)
def update_agencytype(id): if not request.json: abort(400) #check to see if ther eis empty field if not all(len(val.strip()) >= 1 for val in request.json.values()\ if isinstance(val, str)): return length_require_envelop() if 'name' in request.json: request.json['display_name'] = request.json['name'].strip() request.json['name'] = request.json['name'].lower().strip() if 'code' in request.json: request.json['code'] = request.json['code'].strip() try: db_session.query(AgencyType).filter(AgencyType.id == id).update( request.json) db_session.commit() except IntegrityError: return record_exists_envelop() except Exception: return fatal_error_envelop() else: return record_updated_envelop(request.json)
def create_division_types(): if not request.json: abort(400) #empty check if not all( len(val.strip()) >= 1 for val in request.json.values() if isinstance(val, unicode)): return length_require_envelop() _result = {'name'} - set(request.json.keys()) if _result: return keys_require_envelop('key : name is required') request.json['display_name'] = request.json['name'].strip() request.json['name'] = request.json['name'].strip().lower() try: db_session.add(DivisionTypeSetup(**request.json)) db_session.commit() except IntegrityError: return record_exists_envelop() except Exception: return fatal_error_envelop() else: return record_created_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 create_province(): if not request.json: abort(400) if not set(request.json.keys()) == {'name', 'province_code', 'region_id'}: return jsonify({'message': 'missing keys'}) #lower case the facility name display_name = request.json['name'].strip() name = request.json['name'].replace(' ', '').lower().strip() province_code = request.json['province_code'].upper().strip() region_id = request.json['region_id'] #insert into the database try: dis = Province(name=name, display_name=display_name, province_code=province_code, region_id=region_id) db_session.add(dis) db_session.commit() except IntegrityError as ie: return record_exists_envelop() except Exception as e: print(e) return fatal_error_envelop() else: return record_created_envelop(request.json)
def create_training_by_emp(id): if not request.json: abort(400) #check if there is empty field comming up if not all( len(str(val).strip()) >= 1 for key, val in request.json.items()): abort(411) #check if there is no registration number and registration body result = {'name'} - set(request.json.keys()) if result: return keys_require_envelop('key : "name" is required') #clean up the values trs = { key: val.strip() if isinstance(val, str) else val for key, val in request.json.items() } #insert ################################### trs['start_date'] = '01-feb-2012' trs['end_date'] = '03-feb-2005' ########################## print(id) trs['employee_id'] = id try: print(id) db_session.add(Training(**trs)) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def create_employee_type(): if not request.json: abort(400) if not 'name' in request.json.keys(): abort(401) if len(request.json['name'].strip()) < 2: abort(411) #clear up the values display_name = request.json['name'].strip() name = display_name.lower() try: e_type = EmployeeType(name=name, display_name=display_name) db_session.add(e_type) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_created_envelop(request.json)
def update_emp_relativetype(id): if not request.json: abort(400) #check to see if there is any empty values if not all( len(str(val).strip()) >= 1 for val in request.json.values() if isinstance(val, str)): abort(411) #check to see if the request has the right type of keys #clearn up the values for string #generator expression cleaned_json = dict( (key, val.strip()) if isinstance(val, str) else (key, val) for key, val in request.json.items()) if 'name' in cleaned_json: cleaned_json['display_name'] = cleaned_json['name'] cleaned_json['name'] = cleaned_json['name'].strip().lower() #try to executre try: db_session.query(EmployeeRelativeType).filter( EmployeeRelativeType.id == id).update(cleaned_json) db_session.commit() except IntegrityError as e: return record_exists_envelop() except Exception as e: return fatal_error_envelop() else: return record_updated_envelop(request.json)
def get_regions(): try: provinces = db_session.query(Region).order_by(Region.name).all() gen_exp = (dict(name=f.display_name, id=f.id) for f in provinces) return records_json_envelop(list(gen_exp)) except Exception as e: return fatal_error_envelop()
def get_llg(): try: llgs = db_session.query(LLG).order_by(LLG.name).all() gen_exp = (dict(name=f.display_name, id=f.id) for f in llgs) return records_json_envelop(list(gen_exp)) except Exception as e: return fatal_error_envelop()
def get_districts(): try: districts = db_session.query(District).order_by(District.name).all() gen_exp = (dict(name=f.display_name, id=f.id) for f in districts) return records_json_envelop(list(gen_exp)) except Exception as e: return fatal_error_envelop()
def get_facilities(): try: facilities = db_session.query(FacilityType).order_by(FacilityType.name).all() gen_exp = (dict(name = f.display_name, id=f.id) for f in facilities) return records_json_envelop(list(gen_exp)) except Exception as e: return fatal_error_envelop()
def get_users(): try: users = db_session.query(User).filter(User.user_name != 'admin').all() except NoResultFound as e: return record_notfound_envelop() except Exception as e: return fatal_error_envelop() else: return records_json_envelop(list(user.to_dict() for user in users))