from Modules.Filters.FiltersObj import FiltersObj from Modules.Filters.FiltersUtils import FilterUtils from DBHelper.MongoHelperInstance import DB_TEST class FilterImpl(object): @staticmethod def new_filter(**kwargs): data = kwargs['data'] filters = FiltersObj() filters.filter_id = FilterUtils.make_new_cid() filters.filter_name = data['filter_name'] filters.filter_range = data['filter_range'] search_case = filters.SearchCase() if 'by_cid' in data['search_case']: by_cid = search_case.ByCid() by_cid.cid = data['search_case']['by_cid']['cid'] search_case.by_cid = by_cid if 'by_report_date' in data['search_case']: report_date = search_case.ByReportDate() report_date.report_date = data['search_case']['by_report_date']['report_date'] search_case.by_report_date = report_date if 'by_diy_case' in data['search_case']: search_case.by_diy_case = data['search_case']['by_diy_case'] filters.search_case = search_case set_value = filters.SetValue() def dispose_setting(dispose_data): """处理异常值""" dispose_obj = set_value.DisposeExcept() if 'null_type' in dispose_data: dispose_obj.null_type = None elif 'numeric_type' in dispose_data: numeric_type = dispose_obj.NumericType() numeric_type.value = dispose_data['numeric_type']['value'] numeric_type.bit = dispose_data['numeric_type']['bit'] dispose_obj.numeric_type = numeric_type else: dispose_obj.text_type = dispose_data['text_type'] return dispose_obj if 'case_none_str' in data['set_value']: set_value.dispose_none_string = dispose_setting(data['set_value']['case_none_str']) if 'case_none' in data['set_value']: set_value.dispose_none_value = dispose_setting(data['set_value']['case_none']) if 'case_no_key' in data['set_value']: set_value.dispose_not_exist = dispose_setting(data['set_value']['case_no_key']) filters.set_value = set_value DB_TEST.upsert_single_data( '模型数据', '筛选器数据', {'筛选器名称': data['filter_name']}, filters.fields_toggle() ) return '新建成功'