Esempio n. 1
0
def delete_detail(args):
    try:
        lock.acquire()
        ret = {}
        error_message = None
        if args['data'] != None:
            if args['data'].has_key('rank_code'):
                if args['data'].has_key('rec_id'):
                    ret = TMLS_Rank.remove_details(args)
                    lock.release()
                    return ret
                else:
                    error_message = "parameter 'rec_id' is not exist"
            else:
                error_message = "parameter 'rank_code' is not exist"

            lock.release()
            return dict(
                error = error_message
            )
        else:
            error_message = "request parameter is not exist"

        lock.release()
        return dict(
            error = error_message
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 2
0
def get_list_details_with_searchtext(args):

    if args['data'].has_key('rank_code'):
        rank_code = args['data']['rank_code']
        searchText = args['data'].get('search', '')
        pageSize = args['data'].get('pageSize', 0)
        pageIndex = args['data'].get('pageIndex', 20)
        sort = args['data'].get('sort', 20)

        pageIndex = (lambda pIndex: pIndex if pIndex != None else 0)(pageIndex)
        pageSize = (lambda pSize: pSize if pSize != None else 20)(pageSize)
        ret=TMLS_Rank.get_details(rank_code)
    
        if(searchText != None):
            ret.match("contains(object_code, @name) or contains(object_name, @name) " + \
                " or contains(total_from, @name) or contains(total_to, @name)",name=searchText)

        if(sort != None):
            ret.sort(sort)

        return ret.get_page(pageIndex, pageSize)

    else:
        return dict(
            error = "rank_code is not exist"
        )
Esempio n. 3
0
def get_list_details_with_searchtext(args):

    if args['data'].has_key('rank_code'):
        rank_code = args['data']['rank_code']
        searchText = args['data'].get('search', '')
        pageSize = args['data'].get('pageSize', 0)
        pageIndex = args['data'].get('pageIndex', 20)
        sort = args['data'].get('sort', 20)

        pageIndex = (lambda pIndex: pIndex if pIndex != None else 0)(pageIndex)
        pageSize = (lambda pSize: pSize if pSize != None else 20)(pageSize)
        ret=TMLS_Rank.get_details(rank_code)
    
        #if(searchText != None):
        #    ret.match("contains(rank_code, @name)",name=searchText)

        if(sort != None):
            ret.sort(sort)

        return ret.get_page(pageIndex, pageSize)

    else:
        return dict(
            error = "rank_code is not exist"
        )
Esempio n. 4
0
def update_details(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            collection  =  common.get_collection('TMLS_Rank')
            if args['data']['details'].has_key('rec_id'):
                check_exist = collection.find_one(
                    {
                        "rank_code":args['data']['rank_code'], 
                        "details":{
                                "$elemMatch":{
                                    "rec_id":args['data']['details']["rec_id"]
                                    }
                             }
                     })
                if check_exist != None:
                    details = set_dict_detail_update_data(args['data']['details'], args['data']['rank_code'])
                    ret = TMLS_Rank.update_details(args, details)

            lock.release()
            return ret

        lock.release()
        return dict(
            error = "request parameter is not exist"
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 5
0
def delete_detail(args):
    try:
        lock.acquire()
        ret = {}
        error_message = None
        if args['data'] != None:
            if args['data'].has_key('rank_code'):
                if args['data'].has_key('rec_id'):
                    ret = TMLS_Rank.remove_details(args)
                    lock.release()
                    return ret
                else:
                    error_message = "parameter 'rec_id' is not exist"
            else:
                error_message = "parameter 'rank_code' is not exist"

            lock.release()
            return dict(
                error = error_message
            )
        else:
            error_message = "request parameter is not exist"

        lock.release()
        return dict(
            error = error_message
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 6
0
def getListRankcodeWithData(args):
    ret = qmongo.models.TMPER_AprPeriodRank.aggregate
    ret.left_join(qmongo.models.auth_user_info, "created_by", "username", "uc")
    ret.left_join(qmongo.models.auth_user_info, "modified_by", "username",
                  "um")
    ret.match(
        "apr_period == {0} and apr_year == {1} and department_code == {2}",
        args['data']['apr_period'], args['data']['apr_year'],
        args['data']['department_code'])
    ret.project(
        rank_level=1,
        note=1,
        created_by="uc.login_account",
        created_on="created_on",
        modified_on="switch(case(modified_on!='',modified_on),'')",
        modified_by="switch(case(modified_by!='',um.login_account),'')",
    )
    ret = ret.get_item()
    if (ret != None):
        list_rank_code = TMLS_Rank.getListRank(args)
        for item in ret['rank_level']:
            if item['percent'] == 0:
                item['percent'] = '0'
            for i in list_rank_code:
                if (item['rank_code'] == i['rank_code']):
                    item['rank_name'] = i['rank_name']
                    break
    return ret
    return ret.get_item()
Esempio n. 7
0
def insert_details(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            if not args['data']['details'].has_key('rec_id'):
                if args['data'].has_key('rank_code') and args['data']['details'].has_key('change_object') and args['data']['details'].has_key('object_code'):
                    details = {}
                    if type(args['data']['details']['object_code']) is list:
                        for x in args['data']['details']['object_code']:
                            try:
                                details = set_dict_detail_insert_data({
                                    "change_object":args['data']['details']['change_object'],
                                    "object_code": x,
                                    "total_from":args['data']['details']['total_from'],
                                    "total_to":args['data']['details']['total_to'],
                                    "note":args['data']['details']['note'],
                                    }, args['data'].has_key('rank_code'))
                                ret = TMLS_Rank.insert_details(args, details)
                            except Exception as ex:
                                raise ex
                    else:
                        details = set_dict_detail_insert_data(args['data']['details'], args['data'].has_key('rank_code'))
                        ret = TMLS_Rank.insert_details(args, details)
                else:
                    lock.release()
                    return dict(
                        error = "request parameter is not enough"
                    )

            lock.release()
            return ret

        lock.release()
        return dict(
            error = "request parameter is not exist"
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 8
0
def get_list_with_searchtext(args):
    searchText = args['data'].get('search', '')
    pageSize = args['data'].get('pageSize', 0)
    pageIndex = args['data'].get('pageIndex', 20)
    sort = args['data'].get('sort', 20)

    pageIndex = (lambda pIndex: pIndex if pIndex != None else 0)(pageIndex)
    pageSize = (lambda pSize: pSize if pSize != None else 20)(pageSize)
    ret=TMLS_Rank.display_list_rank()

    if(searchText != None):
        ret.match("contains(rank_code, @name) or contains(rank_name, @name)" + \
            "contains(rank_content, @name) or contains(total_from, @name)" + \
            "contains(total_to, @name) or contains(ordinal, @name)" ,name=searchText.strip())

    if(sort != None):
        ret.sort(sort)
        
    return ret.get_page(pageIndex, pageSize)
Esempio n. 9
0
def update(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            data = set_dict_update_data(args)
            ret = models.TMLS_Rank().update(data, "_id == {0}",
                                            ObjectId(args['data']['_id']))
            if ret['data'].raw_result['updatedExisting'] == True:
                ret.update(item=TMLS_Rank.display_list_acadame().match(
                    "_id == {0}", ObjectId(args['data']['_id'])).get_item())
            lock.release()
            return ret

        lock.release()
        return dict(error="request parameter is not exist")
    except Exception as ex:
        lock.release()
        raise (ex)
Esempio n. 10
0
def get_list_with_searchtext(args):
    searchText = args['data'].get('search', '')
    pageSize = args['data'].get('pageSize', 0)
    pageIndex = args['data'].get('pageIndex', 20)
    sort = args['data'].get('sort', 20)

    pageIndex = (lambda pIndex: pIndex if pIndex != None else 0)(pageIndex)
    pageSize = (lambda pSize: pSize if pSize != None else 20)(pageSize)
    ret = TMLS_Rank.display_list_rank()

    if (searchText != None):
        ret.match("contains(rank_code, @name) or contains(rank_name, @name)" + \
            "contains(rank_content, @name) or contains(total_from, @name)" + \
            "contains(total_to, @name) or contains(ordinal, @name)" ,name=searchText)

    if (sort != None):
        ret.sort(sort)

    return ret.get_page(pageIndex, pageSize)
Esempio n. 11
0
def insert_details(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            if not args['data']['details'].has_key('rec_id'):
                if args['data'].has_key('rank_code'):
                    details = set_dict_detail_insert_data(
                        args['data']['details'])
                    ret = TMLS_Rank.insert_details(args, details)
                else:
                    lock.release()
                    return dict(
                        error="request parameter rank_code is not exist")

            lock.release()
            return ret

        lock.release()
        return dict(error="request parameter is not exist")
    except Exception as ex:
        lock.release()
        raise (ex)
Esempio n. 12
0
def update_details(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            collection  =  common.get_collection('TMLS_Rank')
            if args['data']['details'].has_key('rec_id'):
                check_exist = collection.find_one(
                    {
                        "rank_code":args['data']['rank_code'], 
                        "setup_change_object":{
                                "$elemMatch":{
                                    "change_object":args['data']['details']["change_object"],
                                    "object_code":args['data']['details']["object_code"]
                                    }
                             }
                     })
                if check_exist == None:
                    details = service.set_dict_detail_update_data(args['data']['details'], args['data']['rank_code'])
                    ret = TMLS_Rank.update_details(args, details)
                else:
                    ret = {
                            "error" : "duplicate",
                            "item" : check_exist
                        }

            lock.release()
            return ret

        lock.release()
        return dict(
            error = "request parameter is not exist"
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 13
0
def update(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            data =  set_dict_update_data(args)
            ret  =  models.TMLS_Rank().update(
                data, 
                "rank_code == {0}", 
                args['data']['rank_code'])
            if ret['data'].raw_result['updatedExisting'] == True:
                ret.update(
                    item = TMLS_Rank.display_list_rank().match("rank_code == {0}", args['data']['rank_code']).get_item()
                    )
            lock.release()
            return ret

        lock.release()
        return dict(
            error = "request parameter is not exist"
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 14
0
def insert_details(args):
    try:
        lock.acquire()
        ret = {}
        if args['data'] != None:
            if not args['data']['details'].has_key('rec_id'):
                if args['data'].has_key('rank_code') and args['data']['details'].has_key('change_object') and args['data']['details'].has_key('object_code'):
                    ######Check duplicate########
                    details = []
                    if type(args['data']['details']['object_code']) is list:
                        if len(args['data']['details']['object_code']) > 0:
                            for x in args['data']['details']['object_code']:
                                try:
                                    details.append(set_dict_detail_insert_data({
                                        "change_object":(lambda x: x['change_object'] if x.has_key('change_object') else None)(args['data']['details']),
                                        "object_code": x,
                                        "total_from":(lambda x: x['total_from'] if x.has_key('total_from') else None)(args['data']['details']),
                                        "total_to":(lambda x: x['total_to'] if x.has_key('total_to') else None)(args['data']['details']),
                                        "note":(lambda x: x['note'] if x.has_key('note') else None)(args['data']['details'])
                                        }, args['data'].has_key('rank_code')))
                                except Exception as ex:
                                    raise ex

                            collection  =  common.get_collection('TMLS_Rank')
                            for x in details:
                                check_exist = collection.find_one(
                                {
                                    "rank_code":args['data']['rank_code'], 
                                    "setup_change_object":{
                                            "$elemMatch":{
                                                "change_object":x["change_object"],
                                                "object_code":x["object_code"]
                                                }
                                            }
                                    })
                                if check_exist != None:
                                    ret = {
                                        "error" : "duplicate",
                                        "item" : check_exist
                                    }
                                    break

                            if ret == {}:
                                for x in details:
                                    try:
                                        ret = TMLS_Rank.insert_details(args, x)
                                    except Exception as ex:
                                        raise ex
                            else:
                                lock.release()
                                return ret
                        else:
                            lock.release()
                            return dict(
                                error = "object_code is not empty"
                            )
                    else:
                    ######Check duplicate########

                    ######Khong check duplicate########
                    #details = {}
                    #if type(args['data']['details']['object_code']) is list:
                    #    for x in args['data']['details']['object_code']:
                    #        try:
                    #            details = set_dict_detail_insert_data({
                    #                "change_object":(lambda x: x['change_object'] if x.has_key('change_object') else None)(args['data']['details']),
                    #                "object_code": x,
                    #                "total_from":(lambda x: x['total_from'] if x.has_key('total_from') else None)(args['data']['details']),
                    #                "total_to":(lambda x: x['total_to'] if x.has_key('total_to') else None)(args['data']['details']),
                    #                "note":(lambda x: x['note'] if x.has_key('note') else None)(args['data']['details'])
                    #                }, args['data'].has_key('rank_code'))
                    #            ret = TMLS_Rank.insert_details(args, details)
                    #        except Exception as ex:
                    #            raise ex
                    #else:
                    ######Khong check duplicate########
                        details = set_dict_detail_insert_data(args['data']['details'], args['data'].has_key('rank_code'))
                        ret = TMLS_Rank.insert_details(args, details)
                else:
                    lock.release()
                    return dict(
                        error = "request parameter is not enough"
                    )

            lock.release()
            return ret

        lock.release()
        return dict(
            error = "request parameter is not exist"
        )
    except Exception as ex:
        lock.release()
        raise(ex)
Esempio n. 15
0
def get_tree(args):
    ret = {}
    collection = common.get_collection('TMPER_AprPeriodRank').aggregate([{
        "$lookup": {
            'from': ('lv.HCSSYS_Departments'),
            'localField': 'department_code',
            'foreignField': 'department_code',
            'as': 'dd'
        }
    }, {
        "$unwind": {
            'path': '$dd',
            "preserveNullAndEmptyArrays": True
        }
    }, {
        "$lookup": {
            'from': ('lv.TMLS_Rank'),
            'localField': 'rank_code',
            'foreignField': 'rank_code',
            'as': 'rr'
        }
    }, {
        "$unwind": {
            'path': '$rr',
            "preserveNullAndEmptyArrays": True
        }
    }, {
        "$match": {
            "$and": [{
                'apr_period': args['data']['apr_period']
            }, {
                'apr_year': args['data']['apr_year']
            }]
        }
    }, {
        "$project": {
            "apr_period": 1,
            "apr_year": 1,
            "department_code": 1,
            "department_name": {
                "$ifNull": ["$dd.department_name", ""]
            },
            "rank_name": {
                "$ifNull": ["$rr.rank_name", ""]
            },
            "level": {
                "$ifNull": ["$dd.level", ""]
            },
            "level_code": {
                "$ifNull": ["$dd.level_code", ""]
            },
            "ordinal": {
                "$ifNull": ["$dd.ordinal", ""]
            },
            "parent_code": {
                "$ifNull": ["$dd.parent_code", ""]
            },
            "note": 1,
            "rank_level": 1
        }
    }, {
        "$sort":
        SON([("ordinal", 1), ("rank_name", 1)])
    }])
    ret = list(collection)
    if (ret != None):
        list_rank_code = TMLS_Rank.getListRank(args)
        for idx, val in enumerate(ret):
            if (val['rank_level'] != None):
                for index, value in enumerate(list_rank_code):
                    val[val['rank_level'][index]
                        ['rank_code']] = val['rank_level'][index]['percent']
    return ret