def __add_track(message, path): if "skip" in message._body['text']: message.reply_webapi("No worries, I won't add this one.") else: try: track_id = __get_track_id(path) spotify_track = dao.get_spotify_track(track_id) if spotify_track is None: spotify_api.add_track(track_id) if dao.insert_spotify_track(track_id, get_user_id(message)): message.reply_webapi(random.choice(success_messages)) else: message.reply_webapi( "Saving to DB broke (cc lou). Please send again and it should save." ) else: create_date = str(spotify_track.create_time.date()) if spotify_track.create_slack_user_id is not None: fail_msg = f"{random.choice(failure_messages)} This was added on {create_date}, credit to <@{spotify_track.create_slack_user_id}>." else: fail_msg = f"{random.choice(failure_messages)} This was added sometime before {create_date}." message.reply_webapi(fail_msg) except Exception as e: print(e) message.reply_webapi("Unknown error (cc lou).")
def set_dict_insert_data(args): ret_dict = dict() ret_dict.update( job_pos_code = (lambda x: x['job_pos_code'] if x.has_key('job_pos_code') else None)(args['data']), job_pos_name = (lambda x: x['job_pos_name'] if x.has_key('job_pos_name') else None)(args['data']), job_pos_name2 = (lambda x: x['job_pos_name2'] if x.has_key('job_pos_name2') else None)(args['data']), man_level = (lambda x: x['man_level'] if x.has_key('man_level') else None)(args['data']), ordinal = (lambda x: x['ordinal'] if x.has_key('ordinal') else None)(args['data']), note = (lambda x: x['note'] if x.has_key('note') else None)(args['data']), is_fix = (lambda x: x['is_fix'] if x.has_key('is_fix') else None)(args['data']), coeff = (lambda x: x['coeff'] if x.has_key('coeff') else None)(args['data']), begin_date_cal = (lambda x: x['begin_date_cal'] if x.has_key('begin_date_cal') else None)(args['data']), lock = (lambda x: x['lock'] if x.has_key('lock') else None)(args['data']), details = (lambda x: x['details'] if x.has_key('details') else [])(args['data']) ) if ret_dict.has_key('details') and type(ret_dict['details']) is dict: ret_dict['details'].update( rec_id = common.generate_guid(), seniority_from = (lambda x: x['seniority_from'] if x.has_key('seniority_from') else None)(args['data']), seniority_to = (lambda x: x['seniority_to'] if x.has_key('seniority_to') else None)(args['data']), coefficient = (lambda x: x['coefficient'] if x.has_key('coefficient') else None)(args['data']), salary = (lambda x: x['salary'] if x.has_key('salary') else None)(args['data']), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = None, modified_by = None ) return ret_dict
def set_dict_insert_data(args): ret_dict = dict() ret_dict.update( job_pos_code = (lambda x: x['job_pos_code'] if x.has_key('job_pos_code') else None)(args['data']), job_pos_name = (lambda x: x['job_pos_name'] if x.has_key('job_pos_name') else None)(args['data']), job_pos_name2 = (lambda x: x['job_pos_name2'] if x.has_key('job_pos_name2') else None)(args['data']), man_level = (lambda x: x['man_level'] if x.has_key('man_level') else None)(args['data']), ordinal = (lambda x: x['ordinal'] if x.has_key('ordinal') else None)(args['data']), note = (lambda x: x['note'] if x.has_key('note') else None)(args['data']), is_fix = (lambda x: x['is_fix'] if x.has_key('is_fix') else None)(args['data']), coeff = (lambda x: x['coeff'] if x.has_key('coeff') else None)(args['data']), begin_date_cal = (lambda x: x['begin_date_cal'] if x.has_key('begin_date_cal') else None)(args['data']), lock = (lambda x: x['lock'] if x.has_key('lock') else None)(args['data']), details = (lambda x: x['details'] if x.has_key('details') else [])(args['data']) ) if ret_dict.has_key('details') and type(ret_dict['details']) is dict: ret_dict['details'].update( rec_id = common.generate_guid(), seniority_from = (lambda x: x['seniority_from'] if x.has_key('seniority_from') else None)(args['data']), seniority_to = (lambda x: x['seniority_to'] if x.has_key('seniority_to') else None)(args['data']), coefficient = (lambda x: x['coefficient'] if x.has_key('coefficient') else None)(args['data']), salary = (lambda x: x['salary'] if x.has_key('salary') else None)(args['data']), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = None, modified_by = None ) return ret_dict
def set_dict_detail_insert_data(args): ret_dict = dict() ret_dict.update( rec_id=common.generate_guid(), rank_code=(lambda x: x['rank_code'] if x.has_key('rank_code') else None)(args), change_object=(lambda x: x['change_object'] if x.has_key('change_object') else None)(args), object_level=(lambda x: x['object_level'] if x.has_key('object_level') else None)(args), object_code=(lambda x: x['object_code'] if x.has_key('object_code') else None)(args), object_name=(lambda x: x['object_name'] if x.has_key('object_name') else None)(args), priority_no=(lambda x: x['priority_no'] if x.has_key('priority_no') else None)(args), total_from=(lambda x: x['total_from'] if x.has_key('total_from') else None)(args), total_to=(lambda x: x['total_to'] if x.has_key('total_to') else None)(args), created_on=datetime.datetime.now(), created_by=common.get_user_id(), modified_on=None, modified_by=None) return ret_dict
def insert_dept(args): try: find = qmongo.models.TM_EmailHR.aggregate.lookup( qmongo.models.HCSEM_Employees, "employee_code", "employee_code", "emp" ).project( employee_code="employee_code", email="switch(case(emp.email!='',emp.email),'')", department_code="department_code" ).match( "employee_code in @employee_code and department_code != @department_code", employee_code=args['data']['list'], department_code=None).get_list() lst_emp = args['data']['list'] list_insert = [ item for item in lst_emp if item not in [x['employee_code'] for x in find] ] dict_insert = [] import HCSEM_Employees for x in lst_emp: if x in list_insert: dict_insert.append({ "email": HCSEM_Employees.get_employee_by_emp_code({ "data": { "employee_code": x } }).get("email", ""), "employee_code": x, "department_code": args['data']['department_code'], "modified_on": None, "modified_by": None, "created_on": datetime.datetime.now(), "created_by": common.get_user_id() }) rs = common.get_collection("TM_EmailHR").insert_many(dict_insert) ret = {} if rs.acknowledged == True: ret = { "error": None, "inserted_ids": rs.inserted_ids, } else: ret = {"error": "have error when insert"} return ret except Exception as ex: raise (ex)
def update(args): emp_code = args['data']['employee_code'] del args['data']['employee_code'] args['data']['modified_on'] = datetime.datetime.now() args['data']['modified_by'] = common.get_user_id() rs = qmongo.models.TM_EmailHR.update(args['data'], "employee_code == {0}", emp_code) return rs
def edit_permission(args): try: if args['data'] != None: if args['data'].has_key('role_code') and args['data'].has_key('permission'): role_code = args['data']['role_code'] permission = args['data']['permission'] list_per = [] for x in permission: list_per.append({ "function_id":x['function_id'], "read":x['read'], "create":x['create'], "write":x['write'], "delete":x['delete'], "export":x['export'], "import":x['import'], "copy":x['copy'], "attach":x['attach'], "download":x['download'], "created_by":common.get_user_id(), "created_on":datetime.datetime.now(), "modified_by":common.get_user_id(), "modified_on":datetime.datetime.now() }) ret = Permission.edit_permission(role_code, list_per) if ret['updatedExisting'] == True: ret.update( error = None ) else: ret.update( error = "Error Internal Server" ) return ret else: return dict( error = "parameter 'role_code' is not exist" ) return dict( error = "request parameter is not exist" ) except Exception as ex: raise(ex)
def edit_permission(args): try: if args['data'] != None: if args['data'].has_key('role_code') and args['data'].has_key( 'permission'): role_code = args['data']['role_code'] permission = args['data']['permission'] list_per = [] for x in permission: list_per.append({ "function_id": x['function_id'], "read": x['read'], "create": x['create'], "write": x['write'], "delete": x['delete'], "export": x['export'], "import": x['import'], "copy": x['copy'], "attach": x['attach'], "download": x['download'], "print": x['print'], "action": x['action'], "created_by": common.get_user_id(), "created_on": datetime.datetime.now(), "modified_by": common.get_user_id(), "modified_on": datetime.datetime.now() }) ret = Permission.edit_permission(role_code, list_per) if ret['updatedExisting'] == True: ret.update(error=None) else: ret.update(error="Error Internal Server") return ret else: return dict(error="parameter 'role_code' is not exist") return dict(error="request parameter is not exist") except Exception as ex: raise (ex)
def set_dict_insert_factor_appraisal(args): ret_dict = dict() ret_dict.update(rec_id=common.generate_guid(), jow_w_code=(lambda x: x['jow_w_code'] if x.has_key('jow_w_code') else None)(args), factor_code=(lambda x: x['factor_code'] if x.has_key('factor_code') else None)(args), weight=(lambda x: x['weight'] if x.has_key('weight') else None)(args), created_on=datetime.datetime.now(), created_by=common.get_user_id(), modified_on=None, modified_by='') return ret_dict
def set_dict_detail_insert_data(args): ret_dict = dict() ret_dict.update( rec_id = common.generate_guid(), seniority_from = (lambda x: x['seniority_from'] if x.has_key('seniority_from') else None)(args), seniority_to = (lambda x: x['seniority_to'] if x.has_key('seniority_to') else None)(args), coefficient = (lambda x: x['coefficient'] if x.has_key('coefficient') else None)(args), salary = (lambda x: x['salary'] if x.has_key('salary') else None)(args), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = None, modified_by = None ) return ret_dict
def set_dict_detail_insert_data(args): ret_dict = dict() ret_dict.update( rec_id = common.generate_guid(), seniority_from = (lambda x: x['seniority_from'] if x.has_key('seniority_from') else None)(args), seniority_to = (lambda x: x['seniority_to'] if x.has_key('seniority_to') else None)(args), coefficient = (lambda x: x['coefficient'] if x.has_key('coefficient') else None)(args), salary = (lambda x: x['salary'] if x.has_key('salary') else None)(args), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = None, modified_by = '' ) return ret_dict
def set_dict_detail_insert_data(args, rank_code): ret_dict = dict() change_object = [] object = {} object_name = "" column_name = "" if args.has_key('change_object') and args.has_key('object_code'): change_object = TMSYS_ConfigChangeObjectPriority.get_list({"data":{"name":"TMChangeObjectRank"}}) for x in change_object: if x['change_object'] == args['change_object']: object = x break __collection = getattr(models, object['table_name'])() if object['change_object'] == 1: column_name = "gjw_code" ret = __collection.aggregate().project(gjw_code = 1, gjw_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['gjw_name'] elif object['change_object'] == 2: column_name = "job_w_code" ret = __collection.aggregate().project(job_w_code = 1, job_w_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['job_w_name'] elif object['change_object'] == 3: column_name = "job_pos_code" ret = __collection.aggregate().project(job_pos_code = 1, job_pos_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['job_pos_name'] elif object['change_object'] == 4: column_name = "emp_type_code" ret = __collection.aggregate().project(emp_type_code = 1, emp_type_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['emp_type_name'] else: return None ret_dict.update( rec_id = common.generate_guid(), rank_code = rank_code, change_object = (lambda x: x['change_object'] if x.has_key('change_object') else None)(args), object_level = None, object_code = (lambda x: x['object_code'] if x.has_key('object_code') else None)(args), object_name = object_name, priority_no = object['priority_no'], total_from = (lambda x: x['total_from'] if x.has_key('total_from') else None)(args), total_to = (lambda x: x['total_to'] if x.has_key('total_to') else None)(args), note = (lambda x: x['note'] if x.has_key('note') else None)(args), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = "", modified_by = "" ) return ret_dict
def set_dict_detail_insert_data(args, rank_code): ret_dict = dict() change_object = [] object = {} object_name = "" column_name = "" if args.has_key('change_object') and args.has_key('object_code'): change_object = TMSYS_ConfigChangeObjectPriority.get_list({"data":{"name":"TMChangeObjectRank"}}) for x in change_object: if x['change_object'] == args['change_object']: object = x break __collection = getattr(models, object['table_name'])() if object['change_object'] == 1: column_name = "gjw_code" ret = __collection.aggregate().project(gjw_code = 1, gjw_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['gjw_name'] elif object['change_object'] == 2: column_name = "job_w_code" ret = __collection.aggregate().project(job_w_code = 1, job_w_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['job_w_name'] elif object['change_object'] == 3: column_name = "job_pos_code" ret = __collection.aggregate().project(job_pos_code = 1, job_pos_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['job_pos_name'] elif object['change_object'] == 4: column_name = "emp_type_code" ret = __collection.aggregate().project(emp_type_code = 1, emp_type_name = 1) object_name = ret.match(column_name + " == {0}", args['object_code']).get_item()['emp_type_name'] else: return None ret_dict.update( rec_id = common.generate_guid(), rank_code = rank_code, change_object = (lambda x: x['change_object'] if x.has_key('change_object') else None)(args), object_level = None, object_code = (lambda x: x['object_code'] if x.has_key('object_code') else None)(args), object_name = object_name, priority_no = object['priority_no'], total_from = (lambda x: x['total_from'] if x.has_key('total_from') else None)(args), total_to = (lambda x: x['total_to'] if x.has_key('total_to') else None)(args), note = (lambda x: x['note'] if x.has_key('note') else None)(args), created_on = datetime.datetime.now(), created_by = common.get_user_id(), modified_on = "", modified_by = "" ) return ret_dict
def set_dict_insert_task(args): ret_dict = dict() ret_dict.update(rec_id=common.generate_guid(), task_name=(lambda x: x['task_name'] if x.has_key('task_name') else None)(args), weight=(lambda x: x['weight'] if x.has_key('weight') else None)(args), description=(lambda x: x['description'] if x.has_key('description') else None)(args), ordinal=(lambda x: x['ordinal'] if x.has_key('ordinal') else None)(args), created_on=datetime.datetime.now(), created_by=common.get_user_id(), modified_on=None, modified_by='') return ret_dict
def insert_force_dept(args): emp_codes = args['data']['list'] find = qmongo.models.HCSEM_Employees.aggregate.project( employee_code=1, email=1).match("employee_code in {0}", emp_codes).get_list() deleted = qmongo.models.TM_EmailHR.delete("employee_code in {0}", emp_codes) ret = None try: rs = common.get_collection("TM_EmailHR").insert_many([{ "employee_code": x["employee_code"], "email_address": x["email"], "note": None, "department_code": args['data']['department_code'], "modified_on": None, "modified_by": None, "created_on": datetime.datetime.now(), "created_by": common.get_user_id() } for x in find]) if rs.acknowledged == True: ret = { "error": None, "inserted_ids": rs.inserted_ids, } else: ret = {"error": "have error when insert"} except Exception as ex: ret = {"error": ex.message} return ret
def dict_insert_performance_standanrd(args): ret = dict() ret.update( rec_id=common.generate_guid(), kpi_code=(lambda x: x['kpi_code'] if x.has_key('kpi_code') else None)(args), kpi_name=(lambda x: x['kpi_name'] if x.has_key('kpi_name') else None)(args), unit=(lambda x: x['unit'] if x.has_key('unit') else None)(args), description=(lambda x: x['description'] if x.has_key('description') else None)(args), cycle=(lambda x: x['cycle'] if x.has_key('cycle') else None)(args), weight=(lambda x: x['weight'] if x.has_key('weight') else None)(args), #standard_mark = (lambda x: x['standard_mark'] if x.has_key('standard_mark') else None)(args), score_from=(lambda x: x['score_from'] if x.has_key('score_from') else None)(args), score_to=(lambda x: x['score_to'] if x.has_key('score_to') else None)(args), note=(lambda x: x['note'] if x.has_key('note') else None)(args), created_on=datetime.datetime.now(), created_by=common.get_user_id(), modified_on="", modified_by="") return ret
def set_dict_detail_update_data(args, rank_code): ret_dict = service.set_dict_detail_insert_data(args, rank_code) del ret_dict['rec_id'] ret_dict['modified_on'] = datetime.datetime.now() ret_dict['modified_by'] = common.get_user_id() return ret_dict
def insert_factor_appraisal(args): try: #lock.acquire() ret = {} rs = {"upserted": 0, "error": None} if args['data'] != None: if args['data'].has_key('factor_code'): if (args['data'].has_key('job_w_code')): collection = common.get_collection('HCSLS_JobWorking') collection.update_many( { "factor_appraisal": { "$elemMatch": { "factor_code": args['data']['factor_code'] } } }, {"$set": { 'factor_appraisal': [], }}) if args['data']['job_w_code'] != None and len( args['data']['job_w_code']) > 0: for x in args['data']['job_w_code']: try: param = { "job_w_code": str(x).format(), "factor_code": args['data']['factor_code'], "rec_id": common.generate_guid(), "weight": None, "created_on": datetime.datetime.now(), "created_by": common.get_user_id(), "modified_on": None, "modified_by": '' } factor = param ret = JobWorking.insert_evaluation_factor( {"data": { "job_w_code": str(x).format() }}, factor) if ret['updatedExisting'] and ret[ 'nModified'] > 0: rs['upserted'] += ret['nModified'] except Exception as ex: raise ex #lock.release() return rs else: return dict( error=dict(fields=['job_w_code'], code="missing")) else: #lock.release() return dict(error=dict(fields=['factor_code'], code="missing")) #lock.release() return ret #lock.release() return dict(error="request parameter is not exist") except Exception as ex: #lock.release() raise (ex)
def insert_job_working_kpi(job_w_code, kpi): try: if(len(job_w_code)) > 0: exist = HCSLS_VW_JobWorkingKPI().aggregate().project( rec_id = 1, kpi_code = 1, job_w_code = 1, job_w_name = 1, kpi_name = 1, unit = 1, description = 1, cycle = 1, weight = 1, standard_mark = 1, ordinal = 1, note = 1, created_on = 1, created_by = 1, modified_on = 1, modified_by = 1 ).match("kpi_code == @kpi_code", kpi_code = kpi['kpi_code']).get_list() list_insert = [] for x in job_w_code: if x not in map(lambda d: d['job_w_code'], exist): list_insert.append({ "rec_id":common.generate_guid(), "job_w_code": x, "kpi_code":kpi.get('kpi_code', None), "kpi_name":kpi.get('kpi_name', None), "unit":kpi.get('unit_code', None), "description":kpi.get('description', None), "cycle":kpi.get('cycle', None), "weight":kpi.get('weight', None), "standard_mark":kpi.get('standard_mark', None), "ordinal":kpi.get('ordinal', None), "note":kpi.get('note', None), "created_on":datetime.datetime.now(), "created_by":common.get_user_id() }) else: find = filter(lambda y: y['job_w_code'] == x, exist)[0] list_insert.append(find) ret = {} for x in exist: ret = common.get_collection('HCSLS_JobWorking').update( { "job_w_code": x['job_w_code'] }, { '$pull':{"kpi" :{ "rec_id": x['rec_id']}} }, True ) if len(list_insert) > 0: for x in list_insert: code = x['job_w_code'] del x['job_w_code'] ret = common.get_collection('HCSLS_JobWorking').update( { "job_w_code": code }, { '$push': { "kpi": x } } ) return ret except Exception as ex: raise(ex)
def update_performance_standanrd(args): try: lock.acquire() data = dict_insert_performance_standanrd(args['data']['kpi']) import TMLS_KPI default = qmongo.models.TMLS_KPI.aggregate.project( kpi_code=1, kpi_group_code=1, unit_code=1, cycle_type=1, kpi_desc=1, weight=1, benchmark=1, score_from=1, score_to=1).match("kpi_code == {0}", args['data']['kpi']['kpi_code']).get_item() data['description'] = default['kpi_desc'] data['unit'] = default['unit_code'] data['cycle'] = default['cycle_type'] data['kpi_code'] = data['kpi_code'] #default nếu bỏ trống data['weight'] = (lambda x, y: x if y == None or y == "" else y)( default['weight'], args['data']['kpi']['weight']) #default nếu bỏ trống #data['standard_mark'] = (lambda x, y: x if y == None or y == "" else y)(default['benchmark'], args['data']['kpi']['standard_mark']) data['score_from'] = (lambda x, y: x if y == None or y == "" else y)( default['score_from'], args['data']['kpi']['score_from']) data['score_to'] = (lambda x, y: x if y == None or y == "" else y)( default['score_to'], args['data']['kpi']['score_to']) collection = common.get_collection('HCSLS_JobWorking') check_exist = collection.find({ "job_w_code": args['data']['job_w_code'], "kpi": { "$elemMatch": { "kpi_code": args['data']['kpi']['kpi_code'] } } }) ret = None list_check = list(check_exist) if list_check != None and len(list_check) > 1: ret = {"error": "duplicate", "item": check_exist} lock.release() return ret try: ret = collection.update( { "job_w_code": args['data']['job_w_code'], "kpi": { "$elemMatch": { "rec_id": args['data']['kpi']["rec_id"] } } }, { "$set": { 'kpi.$.kpi_code': data['kpi_code'], 'kpi.$.weight': data['weight'], #'kpi.$.standard_mark': data['standard_mark'], 'kpi.$.score_from': data['score_from'], 'kpi.$.score_to': data['score_to'], 'kpi.$.note': data['note'], 'kpi.$.modified_by': common.get_user_id(), 'kpi.$.modified_on': datetime.datetime.now(), 'kpi.$.description': data['description'], 'kpi.$.unit': data['unit'], 'kpi.$.cycle': data['cycle'] } }) ret.update(error=None) lock.release() return ret except Exception as ex: lock.release() return {"error": ex.message} except Exception as ex: lock.release() raise (ex)
def set_dict_update_factor_appraisal(args): ret_dict = set_dict_insert_factor_appraisal(args) del ret_dict['rec_id'] ret_dict['modified_on'] = datetime.datetime.now() ret_dict['modified_by'] = common.get_user_id() return ret_dict
def set_dict_reject(data): data.update(rejected_by=common.get_user_id(), rejected_on=datetime.datetime.now()) return data
def set_dict_approve(data): data.update(approved_by=common.get_user_id(), approved_on=datetime.datetime.now()) return data
def set_dict_detail_update_data(args): ret_dict = set_dict_detail_insert_data(args) del ret_dict['rec_id'] ret_dict['modified_on'] = datetime.datetime.now() ret_dict['modified_by'] = common.get_user_id() return ret_dict
def insert_job_working_competency(job_w_code, comp): import qmongo try: if (len(job_w_code)) > 0: exist = qmongo.views.HCSLS_VW_JobWorkingCompetency.aggregate.project( rec_id=1, job_w_code=1, grade=1, com_code=1, com_level_code=1, weight=1, ordinal=1, note=1, created_on=1, created_by=1, modified_on=1, modified_by=1).match("com_code == @com_code", com_code=comp['com_code']).get_list() list_insert = [] for x in job_w_code: if x not in map(lambda d: d['job_w_code'], exist): list_insert.append({ "rec_id": common.generate_guid(), "job_w_code": x, "grade": comp.get("grade", None), "com_code": comp.get("com_code", None), "com_level_code": comp.get("com_level_code", None), "weight": comp.get("weight", None), "ordinal": comp.get("ordinal", None), "note": comp.get("note", None), "created_on": datetime.datetime.now(), "created_by": common.get_user_id() }) else: find = filter(lambda y: y['job_w_code'] == x, exist)[0] list_insert.append(find) ret = {} for x in exist: ret = common.get_collection('HCSLS_JobWorking').update( {"job_w_code": x['job_w_code']}, {'$pull': { "competency": { "rec_id": x['rec_id'] } }}, True) if len(list_insert) > 0: for x in list_insert: code = x['job_w_code'] del x['job_w_code'] ret = common.get_collection('HCSLS_JobWorking').update( {"job_w_code": code}, {'$push': { "competency": x }}) return ret except Exception as ex: raise (ex)