Esempio n. 1
0
 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"
     ]
Esempio n. 2
0
    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 '不用更新'
Esempio n. 3
0
 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
Esempio n. 4
0
 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()
Esempio n. 5
0
 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
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
 def update_parent_lock_status(self, pg):
     from Source.spec2db_server.arl.def_server import DefRecord
     p = DefRecord()
     p.update_post_lock_status(pg)
Esempio n. 9
0
 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
Esempio n. 10
0
 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