X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=o2common%2Fviews%2Fview.py;h=57294e2fd7ac3174c9c78cfbaff98aebfe39495c;hb=bde5d75f2a24f709c0295fc4bf513b662cc4ff89;hp=d3906342f85414fc90634a61f0a1b7fb44cd0b07;hpb=9c9fde8a0fd391b71753e51ae8b8bdd4531d79aa;p=pti%2Fo2.git diff --git a/o2common/views/view.py b/o2common/views/view.py index d390634..57294e2 100644 --- a/o2common/views/view.py +++ b/o2common/views/view.py @@ -16,7 +16,8 @@ from sqlalchemy.sql.elements import ColumnElement from o2common.views.route_exception import BadRequestException -from o2common.domain.filter import gen_orm_filter +from o2common.domain.filter import gen_orm_filter, \ + transfer_filter_attr_name_in_special from o2common.helper import o2logging logger = o2logging.get_logger(__name__) @@ -55,24 +56,22 @@ def check_filter(obj: ColumnElement, filter_str: str): def check_filter_attribute(obj: ColumnElement, filter_str: str): - # filter_without_space = filter_str.replace(" ", "") - filter_without_space = filter_str.strip(' ()') + filter_without_space = filter_str.strip() logger.debug( f"filter_str: {filter_str}, stripped: {filter_without_space}") items = filter_without_space.split(';') for i in items: - # if '(' in i: - # i = i.replace("(", "") - # if ')' in i: - # i = i.replace(")", "") - filter_expr = i.split(',') + item = i.strip(' ()') + filter_expr = item.split(',') if len(filter_expr) < 3: raise BadRequestException( - 'ignore invalid filter {}'.format(i)) - continue + 'invalid filter {}'.format(i)) filter_op = filter_expr[0].strip() filter_key = filter_expr[1].strip() + if filter_key == 'objectType': + logger.debug('ignore objectType while checking formatter') + continue filter_vals = filter_expr[2:] if filter_op in ["eq", "neq", "gt", "lt", "gte", "lte"]: if len(filter_vals) != 1: @@ -87,6 +86,8 @@ def check_filter_attribute(obj: ColumnElement, filter_str: str): ) else: pass - if not hasattr(obj, filter_key): + filter_key = transfer_filter_attr_name_in_special(obj, filter_key) + if not hasattr(obj, filter_key) or \ + filter_key in ['hash', 'updatetime', 'createtime', 'events']: raise BadRequestException( 'Filter attrName {} is invalid'.format(filter_key))