コード例 #1
0
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).")
コード例 #2
0
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
コード例 #3
0
ファイル: HCSLS_Position.py プロジェクト: nttlong/quicky-01
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
コード例 #4
0
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
コード例 #5
0
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)
コード例 #6
0
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
コード例 #7
0
ファイル: AD_Roles.py プロジェクト: truongductri/saverpart
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)
コード例 #8
0
ファイル: AD_Roles.py プロジェクト: nttlong/quicky-01
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)
コード例 #9
0
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
コード例 #10
0
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
コード例 #11
0
ファイル: HCSLS_Position.py プロジェクト: nttlong/quicky-01
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
コード例 #12
0
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
コード例 #13
0
ファイル: TMLS_Rank.py プロジェクト: truongductri/saverpart
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
コード例 #14
0
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
コード例 #15
0
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
コード例 #16
0
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
コード例 #17
0
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
コード例 #18
0
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)
コード例 #19
0
ファイル: TMLS_KPI.py プロジェクト: nttlong/quicky-01
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)
コード例 #20
0
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)
コード例 #21
0
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
コード例 #22
0
def set_dict_reject(data):

    data.update(rejected_by=common.get_user_id(),
                rejected_on=datetime.datetime.now())

    return data
コード例 #23
0
def set_dict_approve(data):

    data.update(approved_by=common.get_user_id(),
                approved_on=datetime.datetime.now())

    return data
コード例 #24
0
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
コード例 #25
0
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)