def __init__(self): DefRecord.__init__(self) self.table_name = "basic_req_definition" self.key_col = "def_rc_id" self.id_col = "definition_id" self.other_table_name = "definition" self.sub_list_name = "analysis_list" self.parent_col_name = "hu_def_id" self.model_table_name = "basic_req_definition_model_rel" self.attr_list = [ "def_rc_id", "author_name", "hu_def_id", "definition_id", "major_category", "medium_category", "small_category", "detail", "unique_id", "exception", "dcu_meu", "dcu_status", "dcu_trigger", "dcu_action", "meu_status", "meu_trigger", "meu_action", "hu_remark", "pf_status", "pf_trigger", "pf_action", "remark", "notice", "rel_hal_design", "rel_flow_diagram", "other_spec", "implementation", "analysis", "unrequire", "new_date", "reason", "translation_flag", "agree_flag", "has_problem", "complete_flag", "md5_key", "major_ver", "small_ver", "job_status", "update_time", "basic_req", "rel_requirement", "lock_status", "user_id", "group_id" ] self.other_attr_list = [ "def_rc_id", "author_name", "hu_def_id", "definition_id", "unique_id", "exception", "dcu_meu", "pf_status", "pf_trigger", "pf_action", "remark", "notice", "rel_hal_design", "rel_flow_diagram", "other_spec", "implementation", "analysis", "unrequire", "new_date", "reason", "translation_flag", "agree_flag", "has_problem", "complete_flag", "md5_key", "major_ver", "small_ver", "job_status", "update_time", "basic_req", "rel_requirement", "lock_status" ]
def _store(self, sheet, start_row, max_row, user_id, update_time): from Source.spec2db_server.arl.def_server import DefRecord def_obj = DefRecord() commit_list = [] for row in range(start_row, max_row + 1): # print row values1 = self.get_row(sheet, row, from_col=1, to_col=4) # 4个 values5 = self.get_row(sheet, row, from_col=9, to_col=10) # 基本要件——关连基本要件 values2 = self.get_row(sheet, row, from_col=11, to_col=11) # 1个 values3 = self.get_row(sheet, row, from_col=19, to_col=22) # 4个 values4 = self.get_row(sheet, row, from_col=52, to_col=63) # 12个, 63:Md5 hu_id = values1[1] if not hu_id: break definition_id, unique_id = values1[2], values1[3] unique_id = int(unique_id) values1[3] = unique_id if not definition_id: definition_id = '.'.join([hu_id, str(unique_id)]) values1[2] = definition_id if definition_id[0] in ('A', 'B', 'C', 'D'): continue # if type(unique_id) in (str, unicode): # unique_id = int((definition_id.split('.'))[-1]) # values1[3] = unique_id new_date = values4[-2] # 日付 if new_date: values4[-2] = self.convert_time(new_date) params = values1 + values5 + values2 + values3 + values4 model_vals = self.get_row(sheet, row, 23, 51) new_data = self._convert_info(params, model_vals) new_data["md5_key"] = values4[-1] try: md5_check, lock_check, curr_commit_list = def_obj.add( self._pg, new_data, self._col_list, update_time) if not md5_check: return definition_id + " MD5 不存在!" elif not lock_check: return definition_id + " 不能被修改!" elif curr_commit_list: commit_list += curr_commit_list except Exception as e: print e return e.message log = {'user_id': user_id, "commit_list": commit_list} if commit_list: from Source.spec2db_server.arl.commit_log import CommitLog commit_log = CommitLog() flag, commit_id = commit_log.add_commit_log2(self._pg, log) if flag: print '提交' self._pg.commit() else: print 'log_commit errol!' else: print '不用更新'
def _add_sub(self, pg, data, update_time): hu_id = data.get(self.id_col) def_data_list = data.get(self.sub_list_name) def_obj = DefRecord() sub_log_list = def_obj.add_list(pg, hu_id, def_data_list, update_time) if sub_log_list is None: return None point_out = PointOut(self.table_name) po_log_list = point_out.add_list(pg, data.get(self.id_col), data.get("point_list"), update_time) if po_log_list is None: return None return sub_log_list + po_log_list
def point_store(self, data_list, update_time, classify): if classify == "HU_DEF": record_obj = HuRecord() classify = 'hu' elif classify == "TAGL_DEF": record_obj = DefRecord() classify = 'definition' elif classify == "TAGL_ANA": record_obj = AnalysisRecord() classify = 'analysis' self._pg.connect() # import_record = dict() for _data in data_list: point_dict = self.get_point_data(_data) if point_dict: point_dict["classify"] = classify point_dict["update_time"] = update_time id = point_dict.get("id") if re.match("^[B|C|D].*", id): if classify == "hu": record_obj = BasicHuRecord() elif classify == "definition": record_obj = BasicDefRecord() elif classify == "analysis": record_obj = BasicAnaRecord() old_data = record_obj.get_by_id_for_diff( self._pg, id, record_obj.attr_list) record_id = old_data.get(record_obj.key_col) point_dict["record_id"] = record_id from Source.spec2db_server.arl.point_out import PointOut point_obj = PointOut(classify) point_obj.add_point_out(self._pg, point_dict) self._pg.commit() self._pg.close()
def get_by_id_deep(self, pg, _id): """ :param _id: arl_id :return: """ if not _id: return [] count, hu_data_list = self._get_by_arl_id(pg, _id) from Source.spec2db_server.arl.def_server import DefRecord def_obj = DefRecord() for data_dict in hu_data_list: hu_id = data_dict.get('hu_id') point_obj = PointOut(self.table_name) point_list = point_obj.get_list_by_id(pg, hu_id) data_dict["point_list"] = point_list data_dict[self.sub_list_name] = def_obj.get_by_id_deep(pg, hu_id) return hu_data_list
def _get_by_basic_id_deep(self, pg, _id, user_id, group_id): """ :param pg: :param _id: :return: """"" if not _id: return [] info_list = [] arl_dict = self.get_by_id(pg, _id, self.attr_list) if not arl_dict.get("user_id"): arl_dict["user_id"] = self.get_user_id_by_arl_id(arl_dict["hu_id"]) self.del_unkown_ch(arl_dict) if arl_dict: type_id = str(_id) if type_id[0] != 'B' and type_id[0] != 'C' and type_id[0] != 'D': hu_id = arl_dict.get('hu_id') point_obj = PointOut("hu") point_list = point_obj.get_list_by_id(pg, hu_id) arl_dict["point_list"] = point_list from Source.spec2db_server.arl.def_server import DefRecord def_obj = DefRecord() arl_dict[self.sub_list_name] = def_obj.get_by_id_deep(pg, _id) arl_user_id = arl_dict.get("user_id") # 设置权限控制 control_list = self._get_procudure_control(pg, arl_user_id, user_id) self._set_procudure_control(arl_dict, control_list) else: hu_id = arl_dict.get('hu_id') point_obj = PointOut(self.table_name) point_list = point_obj.get_list_by_id(pg, hu_id) arl_dict["point_list"] = point_list from Source.spec2db_server.arl.basic_def import BasicDefRecord def_obj = BasicDefRecord() arl_dict[self.sub_list_name] = def_obj.get_by_id_deep(pg, hu_id) arl_user_id = arl_dict.get("user_id") # 设置权限控制 control_list = self._get_procudure_control(pg, arl_user_id, user_id) self._set_procudure_control(arl_dict, control_list) info_list.append(arl_dict) return info_list
def _store(self, sheet, classify, start_row, max_row, user_id, update_time, up, down): error, update_count = None, 0 if classify == 'HU_DEF': obj = HuRecord() basic_obj = BasicHuRecord() elif classify == 'TAGL_DEF': obj = DefRecord() basic_obj = BasicDefRecord() elif classify == 'TAGL_ANA': obj = AnalysisRecord() basic_obj = BasicAnaRecord() else: error = 'Unkown classify [%s]' % classify return error, update_count commit_list = [] for row in range(start_row, max_row + 1): values = self.get_row(sheet, row, from_col=1, to_col=2) _id, block = values[0], values[1] if not _id: break lock_status = 0 # unlock if block == u'〇': lock_status = 1 # lock if self.is_basic_id(_id): curr_commit_list = basic_obj.upate_lock_status(self._pg, _id, lock_status, update_time, up, down) else: curr_commit_list = obj.upate_lock_status(self._pg, _id, lock_status, update_time, up, down) if curr_commit_list: update_count += 1 commit_list += curr_commit_list log = {'user_id': user_id, "commit_list": commit_list} if commit_list: commit_log = CommitLog() flag, commit_id = commit_log.add_commit_log2(self._pg, log) if flag: obj.update_post_lock_status(self._pg) obj.update_parent_lock_status(self._pg) else: self._pg.conn.rollback() error = 'log_commit errol!' else: print 'no change.' return error, update_count
def update_parent_lock_status(self, pg): from Source.spec2db_server.arl.def_server import DefRecord p = DefRecord() p.update_post_lock_status(pg)
def _delete_sub(self, pg, hu_id, update_time): def_obj = DefRecord() sub_log_list = def_obj.delete_by_parent(pg, hu_id, update_time) return sub_log_list
def new_store(self, def_data_list, user_id, update_time, role, check_list): def_import_record = dict() def_import_record['result'] = 0 self._pg.connect() commit_list = [] from Source.spec2db_server.arl.def_server import DefRecord from Source.spec2db_server.arl.basic_def import BasicDefRecord from Source.spec2db_server.arl.arl_group import ArlGroup from Source.spec2db_server.arl.basic_ana import BasicAnaRecord from Source.spec2db_server.spec_import.analysis import AnalysisSpec def_obj = DefRecord() basic_def_obj = BasicDefRecord() basic_ana_obj = BasicAnaRecord() group_obj = ArlGroup() sqlcmd = group_obj.get_group_id(user_id) self._pg.execute(sqlcmd) row = self._pg.fetchone() group_id = None if row: group_id = row[0] # data_list = group_obj.get_one_member(self._pg, user_id) for def_data in def_data_list: definition_id = def_data["definition_id"].get("datavalue") if not definition_id: continue basic_flag = False # if not self._import_power(self._pg, user_id, arl_id, data_list): # 导入权限验证 # continue try: if re.match("^[B|C|D].*", definition_id): new_data = self.convert_basic_data(def_data) if new_data.get("group_name"): new_data.pop("group_name") new_data["group_id"] = group_id new_data["user_id"] = user_id hu_id = new_data.get("hu_def_id") if not hu_id: continue basic_flag = True md5_check, lock_check, curr_commit_list = basic_def_obj.add( self._pg, new_data, self._col_list, update_time, role) else: new_data = self.convert_data(def_data) hu_id = new_data.get("hu_def_id") if not hu_id: continue md5_check, lock_check, curr_commit_list = def_obj.add( self._pg, new_data, self._col_list, update_time, role) if not md5_check: def_import_record['result'] = 1 if not new_data.get("md5_key"): def_import_record[ "error_list"] = definition_id + " MD5 不存在!" else: def_import_record[ "error_list"] = definition_id + " MD5 不正确!" return def_import_record elif not lock_check: def_import_record['result'] = 1 def_import_record["error_list"] = definition_id + " 不能被修改!" return def_import_record if curr_commit_list: if basic_flag: rel_ana_list = basic_ana_obj._get_by_parent_id( self._pg, definition_id) for ana_data in rel_ana_list: ana_data['dcu_meu'] = new_data['dcu_meu'] ana_data['pf_status'] = new_data['pf_status'] ana_data['pf_trigger'] = new_data['pf_trigger'] ana_data['pf_action'] = new_data['pf_action'] sub_result = basic_ana_obj.add( self._pg, ana_data, AnalysisSpec()._col_list, update_time, "Admin", excel_import=False) md5_check, lock_check, sub_commit_list = sub_result if sub_commit_list: curr_commit_list += sub_commit_list commit_list += curr_commit_list except Exception as e: def_import_record['result'] = 1 def_import_record["error_list"] = e.message return def_import_record if commit_list: author_commit_list, charger_commit_list = self.split_commit_list( commit_list) author_log = { 'user_id': user_id, "commit_list": author_commit_list, "group_id": group_id } charge_log = { 'user_id': user_id, "commit_list": charger_commit_list, "group_id": group_id } from Source.spec2db_server.arl.commit_log import CommitLog commit_log = CommitLog() if author_log: flag, commit_id = commit_log.add_commit_log2( self._pg, author_log) if flag: self.import_check_list(self._pg, check_list, 'definition', commit_id, 'author') else: print 'log_commit errol!' if charge_log: flag, commit_id = commit_log.add_commit_log2( self._pg, charge_log) if flag: self.import_check_list(self._pg, check_list, 'definition', commit_id, 'charge') print '提交' self._pg.commit() self._pg.close() else: self._pg.close() print '不用更新' return def_import_record