示例#1
0
def baseLine(factory,
             device,
             measurePoint,
             year,
             month,
             day,
             hashname,
             day_point=96):
    date = datetime.datetime(year, month, day)
    start = date - datetime.timedelta(days=8)
    end = date + datetime.timedelta(days=2)
    print(start)
    print(date)
    data, device_index = Tool.getP_totalBySQL(
        factory, device, measurePoint,
        [start.strftime("%Y-%m-%d"),
         end.strftime("%Y-%m-%d")])
    # data, device_index = Tool.getP_totalBySQL(factory, device, measurePoint)
    baseValue, trueValue = baseline(data, device_index, year, month, day,
                                    day_point)

    resultDict = {'baseValue': list(baseValue), 'trueValue': list(trueValue)}
    try:
        resultJson = json.dumps(resultDict, ensure_ascii=False)
    except Exception as e:
        e.with_traceback()

    sql = "insert into baseline (hashstr,json)values ('%s','%s')" % (
        hashname, resultJson)

    Tool.excuteSQL(sql)
    return hashname
示例#2
0
def correlationFunc(factory, device, measurePoint, timeRange, hashname):
    if device == "-1":
        P_total, device_index = Tool.getP_totalBySQL(-1, device, measurePoint,
                                                     timeRange)
    else:
        P_total, device_index = Tool.getP_totalBySQL(factory, device,
                                                     measurePoint, timeRange)
    corr_device = correlation(P_total, device_index, 3, 96)

    addSelfDeviceCorrIndex = corr_device.index.tolist()
    addSelfDeviceCorrIndex.append(device)
    corrData = P_total.loc[:, addSelfDeviceCorrIndex]

    corrDataDict = {
        'timestamp':
        corrData.index.strftime("%Y-%m-%d %H:%M:%S").values.tolist(),
    }
    for i in addSelfDeviceCorrIndex:
        corrDataDict[i] = corrData.loc[:, i].values.tolist()
    corrDataJson = json.dumps(corrDataDict, ensure_ascii=False)
    # keys:带有设备的文件名  values:相似度
    a, b = corr_device.keys(), corr_device.values
    resultDict = {}
    for i, j in zip(a, b):
        resultDict[i] = j

    resultJson = json.dumps(resultDict, ensure_ascii=False)

    sql = ''' insert into sjtudb.correlation values('%s','%s','%s') ''' % (
        hashname, resultJson, corrDataJson)
    Tool.excuteSQL(sql)
    return hashname
示例#3
0
 def accept(self):
     ui = self.createToolUi
     ui.hide()
     setStatus("hidden")
     mode = getGUIMode()
     if mode == "AddingToolFromIcon":
         self.tool = Tool(self.selectedObject)
         p = self.setToolProperties()
         self.tool.getObject().Label = ui.nameEdit.text()
         self.tool.setProperties(p, self.tool.getObject())
         setGUIMode("None")
         return True
     elif mode == "EditingToolFromIcon":
         self.tool = self.selectedObject.Proxy
         self.tool.Label = ui.nameEdit.text()
         p = self.setToolProperties()
         self.tool.setProperties(p, self.selectedObject)
         setGUIMode("None")
         return True
     elif mode == "AddingToolFromGUI":
         p = self.setToolProperties()
         setGUIProperties(ui.nameEdit.text(), p)
         return True
     elif mode == "EditingToolFromGUI":
         p = self.setToolProperties()
         setGUIProperties(ui.nameEdit.text(), p)
         return True
     else:
         print "unexpected mode (" + mode + ")"
     return False
示例#4
0
def get_zhuanlan_comment(headers, number, fp=None):

    tool = Tool()
    writer = csv.writer(fp)

    url_web = 'https://zhuanlan.zhihu.com/api/posts/{}/comments?limit=10&offset='  #专栏评论
    base_url = url_web.format(number) + '{}'
    url_number = 'https://zhuanlan.zhihu.com/p/' + number  #专栏文章url
    request = requests.get(url_number, headers=headers)
    soup = BeautifulSoup(request.text, 'lxml')
    title = soup.select('head > title')
    commentCount = soup.select(
        '#react-root > div > div > div.Layout-main.av-card.av-paddingBottom.av-bodyFont.Layout-titleImage--normal > div.PostComment > div.BlockTitle.av-marginLeft.av-borderColor.PostComment-blockTitle > span.BlockTitle-title'
    )
    commentCount = commentCount[0].get_text().split()[0]
    if commentCount == '还没有评论':
        return
    all_comment_num = int(commentCount)
    if all_comment_num % 10 != 0:
        count = 1 + all_comment_num // 10
    else:
        count = all_comment_num // 10
    for i in range(count):
        url_contents = base_url.format(i * 10)
        wb_data = requests.get(url_contents, headers=headers)
        js = json.loads(wb_data.content)
        for each in js:
            con = tool.replace(each['content'])
            writer.writerow([title[0].get_text(), con])
            print(title[0].get_text(), con)
    time.sleep(random.uniform(2, 4))


# get_zhuanlan_comment(headers,'28047189')
示例#5
0
def clusterFunc(factory, device, measurePoint, timeRange, hashname):
    P_total, device_index = Tool.getP_totalBySQL(factory, device, measurePoint,
                                                 timeRange)
    kmeans_hour, labels_hour, kmeans_day, labels_day = cluster(
        P_total, device_index, 96)
    hourList = kmeans_hour.tolist()
    dayList = kmeans_day.tolist()
    # print(dayList)
    hourX = len(hourList[0])
    dayX = len(dayList[0])
    resultDict = {
        'hourX': list(range(0, hourX)),
        'dayX': list(range(0, dayX)),
        'hourList': hourList,
        'dayList': dayList
    }

    try:
        resultJson = json.dumps(resultDict, ensure_ascii=False)
    except Exception as e:
        e.with_traceback()

    sql = "insert into clusterresult (hashstr,json)values ('%s', '%s')" % (
        hashname, resultJson)
    Tool.excuteSQL(sql)
    return hashname
示例#6
0
 def __init__(self, baseUrl, seeLz, floorTag):
     self.baseUrl = baseUrl
     self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
     self.headers = {'User-Agent' : self.user_agent, 'Content-Type':'text/html; charset=UTF-8', 'Vary':'Accept-Encoding'}
     self.seeLz = '?see_lz=' + str(seeLz)
     self.tool = Tool()
     self.floor = 1
     self.defaultTitle = u"百度贴吧"
     self.floorTag = floorTag
示例#7
0
文件: Tools.py 项目: danheeks/PyCAM
    def load_default(self):
        self.Clear()

        try:
            cad.OpenXmlFile(wx.GetApp().cam_dir + "/default.tooltable", self)
        except:
            # no default file found, add 2 tools
            cad.AddUndoably(
                Tool(diameter=3.0, type=TOOL_TYPE_SLOTCUTTER, tool_number=1),
                self, None)
            cad.AddUndoably(
                Tool(diameter=6.0, type=TOOL_TYPE_SLOTCUTTER, tool_number=2),
                self, None)
            return
示例#8
0
def get_contents(headers, number, fp):

    tool = Tool()

    writer = csv.writer(fp)

    url_web = 'https://www.zhihu.com/api/v4/questions/{}/answers?include=data%5B*%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cupvoted_followees%3Bdata%5B*%5D.mark_infos%5B*%5D.url%3Bdata%5B*%5D.author.follower_count%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&limit=20&sort_by=default&offset='
    base_url = url_web.format(number) + '{}'
    url_number = 'https://www.zhihu.com/question/' + str(number)
    wb = requests.get(url_number, headers=headers)
    sp = BeautifulSoup(wb.text, 'lxml')
    num_sel = sp.select(
        '#QuestionAnswers-answers > div > div > div.List-header > h4 > span')
    follower = sp.select(
        '#root > div > main > div > div > div.QuestionHeader > div.QuestionHeader-content > div.QuestionHeader-side > div > div > div > button > div.NumberBoard-value'
    )
    title = sp.select(
        '#root > div > main > div > div > div.QuestionHeader > div.QuestionHeader-content > div.QuestionHeader-main > h1'
    )
    browsed = sp.select(
        '#root > div > main > div > div > div.QuestionHeader > div.QuestionHeader-content > div.QuestionHeader-side > div > div > div > div.NumberBoard-item > div.NumberBoard-value'
    )
    if num_sel == []:
        return
    all_answer_num = int(num_sel[0].get_text().split()[0])
    if all_answer_num % 20 != 0:
        count = 1 + all_answer_num // 20
    else:
        count = all_answer_num // 20
    for i in range(count):
        url_contents = base_url.format(i * 20)
        wb_data = requests.get(url_contents, headers=headers)
        js = json.loads(wb_data.content)
        for each in js['data']:
            con = tool.replace(each['content'])
            timestamp = each['created_time']  # 转换成localtime
            time_local = time.localtime(timestamp)  # 转换成新的时间格式
            dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)
            times = time_local.tm_mon + time_local.tm_mday / 100
            if (times < 6.18 or times > 8.28):
                pass
            else:
                writer.writerow([
                    title[0].get_text(), follower[0].get_text(),
                    browsed[0].get_text(), dt, con
                ])
                print(title[0].get_text(), follower[0].get_text(),
                      browsed[0].get_text(), dt, con)
    time.sleep(random.uniform(2, 4))
示例#9
0
def getClearSysMsgSql(start, end):
    dbIndex = None
    if start == end:
        dbIndex = start

    dbs = getDbs(dbIndex)

    sqls = ''

    for d in dbs:
        companyId = str(d[1])
        index = str(d[3])
        dbName = "curato" + index
        if not Tool.dbExist(dbName):
            continue
        tblName = dbName + '.' + companyId + '_message'

        sql = '''
        DELETE FROM %s
        WHERE sender = 0 ;
        '''
        sql = sql % tblName

        sqls += sql

    return sqls
示例#10
0
def getExtraSql(start, end):
    dbIndex = None
    if start == end:
        dbIndex = start

    dbs = getDbs(dbIndex)

    sqls = ''

    for d in dbs:
        companyId = str(d[1])
        index = str(d[3])
        dbName = "curato" + index
        if not Tool.dbExist(dbName):
            continue
        tblName = dbName + '.' + companyId + '_report_read_info'

        sql = '''
        ALTER TABLE %s
        MODIFY COLUMN `id`  int(11) NOT NULL AUTO_INCREMENT FIRST ;
        '''
        sql = sql % tblName

        sqls += sql

    return sqls
示例#11
0
def oldMain(factory, line, device, measurePoint='三相总有功功率'):
    # print(factory)
    # print(line)
    # print(device)
    #
    # dataDir = "data/"+factory+"/"
    # # measurePoint = ''  # 所分析数据项
    # # device = '低压总出'  # 所要预测设备(全建筑总出)
    # # if os.path.exists('data\\tmp\\P_total.csv'):
    # #     P_total = pd.read_csv('data\\tmp\\P_total.csv', index_col=0)
    # # else:
    # P_total = readData(dataDir, (measurePoint))
    # P_total.to_csv('data/tmp/P_total.csv')
    # P_total.index = pd.to_datetime(P_total.index)
    # # 补全device名并得到device_index
    # for i in range(P_total.shape[1]):
    #     if device in P_total.columns[i]:
    #         device = P_total.columns[i]
    #         device_index = i
    # if device_index == -1:
    #     raise NameError('Check the device!')

    # 不需要时间参数
    # 功能一:基于自适应时滞pearson相关系数找最相关设备
    P_total, device_index = Tool.getP_total(factory, line, device,
                                            measurePoint)
    print("—————————————————一、时空相关性分析(图1)—————————————————————")
    corr_device = correlation(P_total, device_index, 3)
    print('corr_device:', corr_device)

    # 功能二:进行负荷预测模型的训练与测试
    # 需要返回什么数据/模型可自行修改函数
    print("—————————————————二、用户负荷建模与预测(图2)—————————————————————")
    a, b = train_forecast(P_total, corr_device, device_index)
    return a.tolist(), b.tolist()
示例#12
0
def olapRotate(user=None,
               device=None,
               timeRange=None,
               metric=None,
               groups: list = None,
               agg=None,
               hashname=None):
    data = olapSlice(user, device, timeRange, metric, groups, agg, 1)
    data = data.T
    resultJson = getRe(data)

    sql = "insert into olapresult (hashname,json)values ('%s','%s')" % (
        hashname, resultJson)
    Tool.excuteSQL(sql)

    return hashname
示例#13
0
def getNewSql(start, end):
    dbIndex = None
    if start == end:
        dbIndex = start

    dbs = getDbs(dbIndex)

    sqls = ''

    for d in dbs:
        companyId = str(d[1])
        index = str(d[3])
        dbName = "curato" + index
        if not Tool.dbExist(dbName):
            continue
        tblName = dbName + '.' + companyId + '_schedule'

        # sql = '''
        # INSERT INTO t_level (company_id,level_name,sort,is_deleted) values
        # ('%s','总经理级别','1','0'),
        # ('%s','副总经理级别','2','0'),
        # ('%s','总监级别','3','0'),
        # ('%s','经理级别','4','0'),
        # ('%s','主管级别','5','0'),
        # ('%s','员工级别','6','0');
        # ''' % ((companyId,)*6)

        sql = '''
        ALTER TABLE %s 
ADD COLUMN `week_day` varchar(255) NULL COMMENT '工作日,周一到周日,数字表示' AFTER `rest`;
        ''' % tblName

        sqls += sql

    return sqls
示例#14
0
def predictRealData(factory, device, measurePoint, year, month, day):
    P_total, device_index = Tool.getP_totalBySQL(factory, device, measurePoint)
    P_total = P_total[year + '-' + month + '-' + day]
    day_point = 480  # 一天为480个数据点
    P_forecast = P_total.iloc[:, device_index]
    y_total = P_forecast[day_point * 7:].reset_index(drop=True)
    return np.array(y_total)[-7 * day_point:].tolist()
示例#15
0
def olapDrill(user=None,
              device=None,
              timeRange=None,
              metric=None,
              timeMode=0,
              zoneMode=0,
              hashname=None):

    totalData, deviceList, metricList = Tool.olapData(timeRange)
    dataDrill = Drill(totalData, deviceList, metricList, user, device,
                      timeRange, metric, timeMode, zoneMode)
    print("drill")
    resultJson = getRe(dataDrill)

    sql = "insert into olapresult (hashname,json)values ('%s','%s')" % (
        hashname, resultJson)
    Tool.excuteSQL(sql)
    # dataDrill.to_csv(os.path.join(os.path.dirname(os.path.abspath(__file__)), hashname+".csv"))
    return hashname
示例#16
0
def predictFunc(factory, device, measurePoint, timeRange, hashname):

    resultFileName = hashname[0:15]

    # insertSQL = '''insert into sjtudb.algorithmresult values('%s','%s',null)''' % (parameterHash, resultFileName)
    # Tool.excuteSQL(insertSQL)

    P_total, device_index = Tool.getP_totalBySQL(factory, device, measurePoint,
                                                 timeRange)
    corr_device = correlation(P_total, device_index, 3, 96)
    a, b = train_forecast(P_total, corr_device, device_index, 96)
    lastResult = {'y_true': a, 'y_pred': b}
    jsonStr = json.dumps(lastResult)

    insertSQL = '''insert into sjtudb.algorithmresult values('%s','%s','%s')''' % (
        hashname, resultFileName, jsonStr)
    # print(insertSQL)
    Tool.excuteSQL(insertSQL)
    return hashname
示例#17
0
文件: AutoD.py 项目: miichy/Pisces
    def __init__(self, host, comms, key, user, ):

        self.logger = MyLogger().getLogger();
        self.logger.info('AutoD initial beginning~~~')
        self.tool = Tool()

        self.host = host
        self.comms = comms
        if not key:
            self.child = run('ssh {0}@{1}'.format(user, host))
        else:
            self.child = run('ssh -i {0} {1}@{2}'.format(key, user, host))
示例#18
0
def getClearSql(start, end):
    dbIndex = None
    if start == end:
        dbIndex = start

    dbs = getDbs(dbIndex)

    sqls = ''

    for d in dbs:
        companyId = str(d[1])
        index = str(d[3])
        dbName = "curato" + index
        if not Tool.dbExist(dbName):
            continue
        tblName = dbName + '.' + companyId + '_apply_config'

        sql = '''
        DELETE FROM %s;
        INSERT INTO %s (type,company,apply_name,process_type,status,create_time) VALUES
        (1,1, '请假申请',1, 1,NOW()),
        (2,1, '加班申请',1, 1,NOW()),
        (3,1, '外勤申请',1, 1,NOW()),
        (4,1, '补签申请',1, 1,NOW()),
        (5,1, '通用申请',1, 1,NOW());
        '''
        sql = sql % (tblName, tblName)

        # 申请,排班,考勤,公告,日报
        # apply, apply_info; schedule, default_schedule; attendance, attendance_record; notice; report;
        prefix = dbName + '.' + companyId + '_'
        to_be_clear = [
            'apply', 'apply_info', 'schedule', 'default_schedule',
            'attendance', 'attendance_record', 'notice', 'report'
        ]
        clears = []
        for i in to_be_clear:
            clears.append(prefix + i)
        clears = tuple(clears)
        sql += '''
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        DELETE FROM %s;
        ''' % clears

        sqls += sql

    return sqls
示例#19
0
文件: AutoD.py 项目: miichy/Pisces
class AutoD:
    def __init__(self, host, comms, key, user, ):

        self.logger = MyLogger().getLogger();
        self.logger.info('AutoD initial beginning~~~')
        self.tool = Tool()

        self.host = host
        self.comms = comms
        if not key:
            self.child = run('ssh {0}@{1}'.format(user, host))
        else:
            self.child = run('ssh -i {0} {1}@{2}'.format(key, user, host))

    def destroyed(self):
        self.logger.info('Destoryed the ssh login ~~~ ')
        self.child.close(force=True)

    def exec_command(self):
        self.logger.info('AutoD.exec_command ')
        self.tool.jdk_exist()
        print('command is {}'.format(self.comms))
示例#20
0
    def load_default(self):
        self.ClearChildren()

        try:
            f = open(HeeksCNC.heekscnc_path + "/default_tools.txt")
        except:
            # no default file found, add 2 tools
            self.Add(
                Tool(diameter=3.0, type=TOOL_TYPE_SLOTCUTTER, tool_number=1))
            self.Add(
                Tool(diameter=6.0, type=TOOL_TYPE_SLOTCUTTER, tool_number=2))
            return

        import cPickle
        from Object import next_object_index
        while True:
            try:
                tool = cPickle.load(f)
            except:
                break  # end of file
            tool.index = next_object_index
            next_object_index = next_object_index + 1
            self.Add(tool)
        f.close()
示例#21
0
def olapSlice(user=None,
              device=None,
              timeRange=None,
              metric=None,
              groups: list = None,
              agg=None,
              rotate=None,
              parameterHash=None):
    totalData, deviceList, metricList = Tool.olapData(timeRange)

    dataSlice = pd.DataFrame()
    if timeRange == None and metric == None and groups == None:
        # 1.选定[用户+设备]切片
        dataSlice = Slice(totalData, deviceList, metricList, user, device)
    elif timeRange != None and metric == None and groups == None:
        # 2.选定[用户+设备+时间段]切块
        dataSlice = Slice(totalData, deviceList, metricList, user, device,
                          timeRange)
    elif timeRange != None and metric != None and groups == None:
        # 3.选定[用户+设备+时间段+属性]切块
        dataSlice = Slice(totalData, deviceList, metricList, user, device,
                          timeRange, metric)
    elif timeRange != None and metric != None and groups != None:
        dataSlice = Slice(totalData, deviceList, metricList, user, device,
                          timeRange, metric, groups, agg)

    print("slice")

    if rotate == None:
        resultJson = getRe(dataSlice)
        sql = "insert into olapresult (hashname,json)values ('%s','%s')" % (
            parameterHash, resultJson)
        Tool.excuteSQL(sql)
        return parameterHash
        # dataSlice.to_csv(os.path.join(os.path.dirname(os.path.abspath(__file__)), parameterHash + '.csv'))
    return dataSlice
示例#22
0
def tool_dispatcher(tool):

    tid, ip = setup_log_vars()
    lggr = setup_local_logger(tid, ip)

    TOL = Tool()

    data = getattr(TOL, tool.lower())(request)

    if hasattr(current_user, 'id'):
        data['handle'] = current_user.id
    data['current_user'] = current_user

    o = urlparse.urlparse(request.url)
    data['host_url'] = urlparse.urlunparse(
        (URL_SCHEME, o.netloc, '', '', '', ''))

    t = time.time()
    data['today'] = time.strftime("%A %b %d, %Y ", time.gmtime(t))

    if 'redirect' in data:
        return data
    else:
        return render_template(data['template'], data=data)
示例#23
0
    def __init__(self, labyrinth):
        """ initializing Game Manager """
        self.labyrinth = labyrinth

        # player & guard positioning
        position_p = self.labyrinth.get_player_position()
        position_g = self.labyrinth.get_guard_position()
        self.MacGyver = Player(position_p[0], position_p[1])
        self.guard = Guard(position_g[0], position_g[1])

        # tools random positioning from an empty spaces list
        empty_spaces = self.labyrinth.get_empty_spaces()
        self.tools = []
        self.symbols = ['E', 'N', 'T']
        self.names = ['éther', 'aiguille', 'tube']

        for idx, symbol in enumerate(self.symbols):
            tmp_pos = random.choice(empty_spaces)
            temp_tool = Tool(tmp_pos[0], tmp_pos[1], symbol, self.names[idx])
            self.tools.append(temp_tool)
            empty_spaces.remove(tmp_pos)

        for tool in self.tools:
            self.labyrinth.write_symbol((tool.x, tool.y), tool.symbol)
示例#24
0
 def get_tools_list(self, TOOL_FILE_PATH):
     tool_list = []
     cur_tool_obj = None
     with open(TOOL_FILE_PATH, "r", errors='ignore',
               encoding='utf-8') as reader:
         for line in reader:
             line = line.strip()
             if (line == ""):
                 continue
             tool_pattern = re.compile(TOOL)
             tool_id_pattern = re.compile(TOOL_ID)
             tool_name_pattern = re.compile(TOOL_NAME)
             tool_description_pattern = re.compile(TOOL_DESCR)
             tool_url_pattern = re.compile(TOOL_URL)
             tool_supp_smells_pattern = re.compile(TOOL_SUPP_SMELL)
             tool_supp_langs_pattern = re.compile(TOOL_SUPP_LANGS)
             tool_end_pattern = re.compile(TOOL_END)
             if (re.search(tool_pattern, line) != None):
                 cur_tool_obj = Tool()
             elif (re.search(tool_end_pattern, line) != None):
                 tool_list.append(cur_tool_obj)
             elif (re.search(tool_id_pattern, line) != None):
                 cur_tool_obj.id = re.split(TOOL_ID, line)[1].strip()
             elif (re.search(tool_name_pattern, line) != None):
                 cur_tool_obj.name = re.split(TOOL_NAME, line)[1].strip()
             elif (re.search(tool_description_pattern, line) != None):
                 cur_tool_obj.description = re.split(TOOL_DESCR,
                                                     line)[1].strip()
             elif (re.search(tool_url_pattern, line) != None):
                 cur_tool_obj.url = re.split(TOOL_URL, line)[1].strip()
             elif (re.search(tool_supp_smells_pattern, line) != None):
                 cur_tool_obj.supported_smells.append(
                     re.split(TOOL_SUPP_SMELL, line)[1].strip())
             elif (re.search(tool_supp_langs_pattern, line) != None):
                 cur_tool_obj.supported_langs = re.split(
                     TOOL_SUPP_LANGS, line)[1].strip()
     return tool_list
示例#25
0
 def apply(self):
     ui = self.createTTUi
     if self.dirty == True:
         if self.selectedObject == None:
             obj = FreeCAD.ActiveDocument.addObject(
                 'App::DocumentObjectGroupPython', "ToolTable")
             ViewToolTable(obj.ViewObject)
             obj.addProperty("App::PropertyString", "ObjectType")
             obj.ObjectType = "ToolTable"
             obj.setEditorMode("ObjectType", ("ReadOnly", ))
             self.selectedObject = obj
             FreeCADGui.Selection.clearSelection()
             FreeCADGui.Selection.addSelection(obj)
         for tool in self.selectedObject.Group:
             FreeCAD.ActiveDocument.removeObject(tool.Name)
         for line in self.toolList:
             tool = Tool(self.selectedObject)
             tool.getObject().Label = line['label']
             tool.setProperties(line['properties'], tool.getObject())
         self.selectedObject.Label = ui.nameLE.text()
         self.dirty = False
         FreeCAD.ActiveDocument.recompute()
示例#26
0
    resultSum = []
    resultSD = []
    result = []
    time = []
    bestR = []
    bestD = 10**(20)
    dict = []
    constk = 10
    for idx in range(5):
        result = []
        k = (idx + 1) * constk
        # percent = 0.1 + 0.1*idx
        ep = []

        #get the time
        tools = Tool(data)
        start = datetime.datetime.now().timestamp()
        a, b, c = tools.Generic_Algorithm(k, t, percent)
        end = datetime.datetime.now().timestamp()
        time.append(end - start)

        for i in range(10):
            np.random.shuffle(data)
            tools = Tool(data)
            a, b, c, e = tools.Generic_Algorithm_Epoch(k, t, percent, epoch)
            ep.append(e)
            if b < bestD:
                bestR = np.copy(a)
                bestD = b
                dict = copy.deepcopy(c)
示例#27
0
文件: Gui.py 项目: sofbrin/Projet-3
    def __init__(self, labyrinth):
        self.labyrinth = labyrinth

        # Player positioning
        position_p = self.labyrinth.get_player_position()
        self.MacGyver = Player(position_p[0], position_p[1])

        # GUI elements initializing
        pygame.init()

        self.screen = pygame.display.set_mode((800, 600))
        self.background_image = pygame.image.load(r"img/background.png")
        self.ether_image = pygame.image.load(r"img/ether.png")
        self.guard_image = pygame.image.load(r"img/guard.png")
        self.macgyver_image = pygame.image.load(r"img/macgyver.png")
        self.needle_image = pygame.image.load(r"img/needle.png")
        self.tube_image = pygame.image.load(r"img/tube.png")
        self.wall_image = pygame.image.load(r"img/wall.png")
        self.win_image = pygame.image.load(r"img/win.png")
        self.lost_image = pygame.image.load(r"img/lost.png")
        self.title_image = pygame.image.load(r"img/title.png")
        self.etherC_image = pygame.image.load(r"img/etherC.png")
        self.needleC_image = pygame.image.load(r"img/needleC.png")
        self.tubeC_image = pygame.image.load(r"img/tubeC.png")
        self.clock = pygame.time.Clock()

        self.character_sprites_list = pygame.sprite.Group()
        self.tools_sprites_list = pygame.sprite.Group()
        self.wall_sprites_list = pygame.sprite.Group()

        self.macgyver_sprite = ImageSprite(self.macgyver_image)
        self.guard_sprite = ImageSprite(self.guard_image)
        self.tools_list = (ImageSprite(self.ether_image),
                           ImageSprite(self.needle_image),
                           ImageSprite(self.tube_image))

        self.character_sprites_list.add([self.macgyver_sprite,
                                         self.guard_sprite])
        self.tools_sprites_list.add(self.tools_list)

        # To be used when printing tool's names & icons in lateral
        self.start_tools_y = 200
        self.start_icons_y = 200

        pygame.display.set_caption("Le labyrinthe de MacGyver")

        # Tools random positioning from an empty spaces list
        empty_spaces = self.labyrinth.get_empty_spaces()
        self.tools = []
        self.symbols = ['E', 'N', 'T']
        self.names = ['Ether', 'Aiguille', 'Tube']
        self.images = [self.etherC_image, self.needleC_image, self.tubeC_image]

        for idx, symbol in enumerate(self.symbols):
            tmp_pos = random.choice(empty_spaces)
            temp_tool = Tool(tmp_pos[0], tmp_pos[1], symbol,
                             self.names[idx], self.images[idx])
            self.tools.append(temp_tool)
            empty_spaces.remove(tmp_pos)

        for tool in self.tools:
            self.labyrinth.write_symbol((tool.x, tool.y), tool.symbol)
示例#28
0
class ToolGui():
    def __init__(self):
        self.createToolUi = FreeCADGui.PySideUic.loadUi(
            os.path.dirname(__file__) + "/resources/ui/tool.ui")

        self.straightToolPic = QtGui.QPixmap(
            os.path.dirname(__file__) + "/resources/png/straightBitPic.png")
        self.taperedToolPic = QtGui.QPixmap(
            os.path.dirname(__file__) + "/resources/png/taperedBitPic.png")
        self.conicalToolPic = QtGui.QPixmap(
            os.path.dirname(__file__) + "/resources/png/conicalBitPic.png")
        self.ballToolPic = QtGui.QPixmap(
            os.path.dirname(__file__) + "/resources/png/ballBitPic.png")
        self.taperedBallToolPic = QtGui.QPixmap(
            os.path.dirname(__file__) + "/resources/png/taperedBallBitPic.png")

        self.toolTypes = [
            "StraightTool", "TaperedTool", "ConicalTool", "BallTool",
            "TaperedBallTool"
        ]

        ui = self.createToolUi
        iv = VAL.MyIntValidator()
        ui.logoL.setPixmap(
            QtGui.QPixmap(
                os.path.dirname(__file__) +
                "/resources/ui/logo side by side.png"))

        ui.numberEdit.setValidator(iv)
        ui.toolTypeCB.currentIndexChanged.connect(self.validateAllFields)
        ui.numberEdit.textChanged.connect(self.validateAllFields)
        ui.nameEdit.textChanged.connect(self.validateAllFields)
        ui.feedRateEdit.textChanged.connect(self.validateAllFields)
        ui.plungeRateEdit.textChanged.connect(self.validateAllFields)
        ui.spindleSpeedEdit.textChanged.connect(self.validateAllFields)
        ui.stepOverEdit.textChanged.connect(self.validateAllFields)
        ui.depthOfCutEdit.textChanged.connect(self.validateAllFields)

        ui.straightDiameterEdit.textChanged.connect(self.validateAllFields)
        ui.straightCutLengthEdit.textChanged.connect(self.validateAllFields)
        ui.straightToolLengthEdit.textChanged.connect(self.validateAllFields)
        ui.straightShaftDiameterEdit.textChanged.connect(
            self.validateAllFields)

        ui.taperedTopDiameterEdit.textChanged.connect(self.validateAllFields)
        ui.taperedBottomDiameterEdit.textChanged.connect(
            self.validateAllFields)
        ui.taperedCutLengthEdit.textChanged.connect(self.validateAllFields)
        ui.taperedToolLengthEdit.textChanged.connect(self.validateAllFields)
        ui.taperedShaftDiameterEdit.textChanged.connect(self.validateAllFields)

        ui.conicalTopDiameterEdit.textChanged.connect(self.validateAllFields)
        ui.conicalCutAngleEdit.textChanged.connect(self.validateAllFields)
        ui.conicalToolLengthEdit.textChanged.connect(self.validateAllFields)
        ui.conicalShaftDiameterEdit.textChanged.connect(self.validateAllFields)

        ui.ballDiameterEdit.textChanged.connect(self.validateAllFields)
        ui.ballToolLengthEdit.textChanged.connect(self.validateAllFields)
        ui.ballShaftDiameterEdit.textChanged.connect(self.validateAllFields)

        ui.taperedBallTopDiameterEdit.textChanged.connect(
            self.validateAllFields)
        ui.taperedBallDiameterEdit.textChanged.connect(self.validateAllFields)
        ui.taperedBallCutLengthEdit.textChanged.connect(self.validateAllFields)
        ui.taperedBallToolLengthEdit.textChanged.connect(
            self.validateAllFields)
        ui.taperedBallShaftDiameterEdit.textChanged.connect(
            self.validateAllFields)

        ui.buttonBox.accepted.connect(self.accept)
        ui.buttonBox.rejected.connect(self.reject)
        ui.toolTypeCB.currentIndexChanged.connect(self.changeToolTypeWidget)

        self.selectedObject = None
        self.currentToolNumber = -1
        self.originalToolName = ""

    def reset(self):
        ui = self.createToolUi
        ui.stackedWidget.setCurrentIndex(0)
        ui.nameEdit.clear()
        ui.numberEdit.clear()
        ui.makeEdit.clear()
        ui.modelEdit.clear()
        ui.toolTypeCB.setCurrentIndex(0)
        ui.materialEdit.clear()
        ui.feedRateEdit.clear()
        ui.plungeRateEdit.clear()
        ui.spindleSpeedEdit.clear()
        ui.stepOverEdit.clear()
        ui.depthOfCutEdit.clear()
        ui.straightDiameterEdit.clear()
        ui.straightCutLengthEdit.clear()
        ui.straightToolLengthEdit.clear()
        ui.straightShaftDiameterEdit.clear()
        ui.taperedTopDiameterEdit.clear()
        ui.taperedBottomDiameterEdit.clear()
        ui.taperedCutLengthEdit.clear()
        ui.taperedToolLengthEdit.clear()
        ui.taperedShaftDiameterEdit.clear()
        ui.conicalTopDiameterEdit.clear()
        ui.conicalCutAngleEdit.clear()
        ui.conicalToolLengthEdit.clear()
        ui.conicalShaftDiameterEdit.clear()
        ui.ballDiameterEdit.clear()
        ui.ballToolLengthEdit.clear()
        ui.ballShaftDiameterEdit.clear()
        ui.taperedBallTopDiameterEdit.clear()
        ui.taperedBallDiameterEdit.clear()
        ui.taperedBallCutLengthEdit.clear()
        ui.taperedBallToolLengthEdit.clear()
        ui.taperedBallShaftDiameterEdit.clear()

    def GetResources(self):
        return {
            'Pixmap': os.path.dirname(__file__) +
            "/resources/svg/tool.svg",  # the name of a svg file available in the resources
            'MenuText': "New Tool",
            'ToolTip': "Sets up a new tool that can be added to a tool table"
        }

    def validateAllFields(self):
        ui = self.createToolUi
        valid = True
        toolType = ui.toolTypeCB.currentText()
        if toolType == 'None Selected...':
            VAL.setLabel(ui.toolTypeLabel, 'INVALID')
            valid = False
        else:
            VAL.setLabel(ui.toolTypeLabel, 'VALID')
        if ui.numberEdit.text() == "":
            VAL.setLabel(ui.numberLabel, 'INVALID')
            valid = False
        else:
            VAL.setLabel(ui.numberLabel, 'VALID')
            for tool in self.parent.Group:
                if tool.Number == self.currentToolNumber: continue
                if str(tool.Number) == ui.numberEdit.text():
                    VAL.setLabel(ui.numberLabel, 'INVALID')
                    valid = False
                    break
        VAL.setLabel(ui.nameLabel, 'VALID')
        if ui.nameEdit.text() == "":
            valid = False
            VAL.setLabel(ui.nameLabel, 'INVALID')
        mode = getGUIMode()
        sameName = FreeCAD.ActiveDocument.getObjectsByLabel(ui.nameEdit.text())
        if (len(sameName) > 0):
            if len(sameName) > 1:
                valid = False
                VAL.setLabel(ui.nameLabel, 'INVALID')
            elif mode != 'EditingToolFromIcon' and mode != 'EditingToolFromGUI':
                valid = False
                VAL.setLabel(ui.nameLabel, 'INVALID')
            else:
                if ui.nameEdit.text() == self.originalToolName:
                    VAL.setLabel(ui.nameLabel, 'VALID')
                else:
                    VAL.setLabel(ui.nameLabel, 'INVALID')
                    valid = False

        valid = VAL.validate(ui.feedRateEdit, ui.feedRateL, False, valid,
                             VAL.VELOCITY)
        valid = VAL.validate(ui.plungeRateEdit, ui.plungeRateL, False, valid,
                             VAL.VELOCITY)
        valid = VAL.validate(ui.spindleSpeedEdit, ui.spindleSpeedLabel, False,
                             valid, VAL.ANGULAR_VELOCITY)
        valid = VAL.validate(ui.stepOverEdit, ui.stepOverL, False, valid,
                             VAL.LENGTH)
        valid = VAL.validate(ui.depthOfCutEdit, ui.docL, False, valid,
                             VAL.LENGTH)
        if toolType == "Straight":
            valid = VAL.validate(ui.straightDiameterEdit, ui.straightDiameterL,
                                 True, valid, VAL.LENGTH)
            valid = VAL.validate(ui.straightCutLengthEdit, ui.straightCutLenL,
                                 True, valid, VAL.LENGTH)
            valid = VAL.validate(ui.straightToolLengthEdit,
                                 ui.straightToolLenL, True, valid, VAL.LENGTH)
            valid = VAL.validate(ui.straightShaftDiameterEdit,
                                 ui.staightShaftDiameterL, True, valid,
                                 VAL.LENGTH)
        elif toolType == "Tapered":
            valid = VAL.validate(ui.taperedTopDiameterEdit,
                                 ui.taperedTopDiameterL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedBottomDiameterEdit,
                                 ui.taperedBottomDiameterL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedCutLengthEdit, ui.taperedCutLengthL,
                                 True, valid, VAL.LENGTH)
            valid = VAL.validate(ui.taperedToolLengthEdit,
                                 ui.taperedToolLengthL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedShaftDiameterEdit,
                                 ui.taperedShaftDiameterL, True, valid,
                                 VAL.LENGTH)
        elif toolType == "Conical":
            valid = VAL.validate(ui.conicalTopDiameterEdit,
                                 ui.conicalTopDiameterL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.conicalCutAngleEdit, ui.conicalCutAngleL,
                                 True, valid, VAL.ANGLE)
            valid = VAL.validate(ui.conicalToolLengthEdit,
                                 ui.conicalToolLengthL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.conicalShaftDiameterEdit,
                                 ui.conicalShaftDiameterL, True, valid,
                                 VAL.LENGTH)
        elif toolType == "Ball":
            valid = VAL.validate(ui.ballDiameterEdit, ui.ballDiameterL, True,
                                 valid, VAL.LENGTH)
            valid = VAL.validate(ui.ballToolLengthEdit, ui.ballToolLengthL,
                                 True, valid, VAL.LENGTH)
            valid = VAL.validate(ui.ballShaftDiameterEdit,
                                 ui.ballShaftDiameterL, True, valid,
                                 VAL.LENGTH)
        elif toolType == "TaperedBall":
            valid = VAL.validate(ui.taperedBallTopDiameterEdit,
                                 ui.taperedBallTopDiameterL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedBallDiameterEdit,
                                 ui.taperedBallBallDiameterL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedBallCutLengthEdit,
                                 ui.taperedBallCutLengthL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedBallToolLengthEdit,
                                 ui.taperedBallToolLengthL, True, valid,
                                 VAL.LENGTH)
            valid = VAL.validate(ui.taperedBallShaftDiameterEdit,
                                 ui.taperedBallShaftDiameterL, True, valid,
                                 VAL.LENGTH)

        ui.buttonBox.buttons()[0].setEnabled(valid)
        return valid

    def changeToolTypeWidget(self):
        i = self.createToolUi.toolTypeCB.currentIndex()
        self.createToolUi.stackedWidget.setCurrentIndex(i)
        if i == 1: self.createToolUi.imageLabel.setPixmap(self.straightToolPic)
        elif i == 2:
            self.createToolUi.imageLabel.setPixmap(self.taperedToolPic)
        elif i == 3:
            self.createToolUi.imageLabel.setPixmap(self.conicalToolPic)
        elif i == 4:
            self.createToolUi.imageLabel.setPixmap(self.ballToolPic)
        elif i == 5:
            self.createToolUi.imageLabel.setPixmap(self.taperedBallToolPic)
        else:
            self.createToolUi.imageLabel.setPixmap(None)

    def setUnits(self):
        ui = self.createToolUi
        if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt(
                "UserSchema") in [0, 1, 4, 6]:
            self.units = 'mm'
            ui.unitsLabel.setText("Default units are mm, mm/min, and rpm")
        else:
            ui.unitsLabel.setText("Default units are in, in/min, and rpm")
            self.units = 'in'

    def getToolProperties(self, obj):
        ui = self.createToolUi
        ui.stackedWidget.setCurrentIndex(
            self.toolTypes.index(obj.ObjectType) + 1)
        ui.nameEdit.setText(obj.Label)
        ui.numberEdit.setText(str(obj.Number))
        if hasattr(obj, 'Make'): ui.makeEdit.setText(obj.Make)
        if hasattr(obj, 'Model'): ui.modelEdit.setText(obj.Model)
        ui.toolTypeCB.setCurrentIndex(self.toolTypes.index(obj.ObjectType) + 1)
        if hasattr(obj, 'StockMaterial'):
            ui.materialEdit.setText(obj.StockMaterial)
        if hasattr(obj, 'FeedRate'):
            ui.feedRateEdit.setText(obj.FeedRate.UserString)
        if hasattr(obj, 'PlungeRate'):
            ui.plungeRateEdit.setText(obj.PlungeRate.UserString)
        if hasattr(obj, 'SpindleSpeed'):
            ui.spindleSpeedEdit.setText(obj.SpindleSpeed)
        if hasattr(obj, 'StepOver'):
            ui.stepOverEdit.setText(obj.StepOver.UserString)
        if hasattr(obj, 'DepthOfCut'):
            ui.depthOfCutEdit.setText(obj.DepthOfCut.UserString)

        toolType = ui.toolTypeCB.currentText()
        if toolType == "Straight":
            ui.straightDiameterEdit.setText(obj.Diameter.UserString)
            ui.straightCutLengthEdit.setText(obj.CutLength.UserString)
            ui.straightToolLengthEdit.setText(obj.ToolLength.UserString)
            ui.straightShaftDiameterEdit.setText(obj.ShaftDiameter.UserString)
        elif toolType == "Tapered":
            ui.taperedTopDiameterEdit.setText(obj.TopDiameter.UserString)
            ui.taperedBottomDiameterEdit.setText(obj.BottomDiameter.UserString)
            ui.taperedCutLengthEdit.setText(obj.CutLength.UserString)
            ui.taperedToolLengthEdit.setText(obj.ToolLength.UserString)
            ui.taperedShaftDiameterEdit.setText(obj.ShaftDiameter.UserString)
        elif toolType == "Conical":
            ui.conicalTopDiameterEdit.setText(obj.TopDiameter.UserString)
            ui.conicalCutAngleEdit.setText(obj.CutAngle.UserString)
            ui.conicalToolLengthEdit.setText(obj.ToolLength.UserString)
            ui.conicalShaftDiameterEdit.setText(obj.ShaftDiameter.UserString)
        elif toolType == "Ball":
            ui.ballDiameterEdit.setText(obj.BallDiameter.UserString)
            ui.ballToolLengthEdit.setText(obj.ToolLength.UserString)
            ui.ballShaftDiameterEdit.setText(obj.ShaftDiameter.UserString)
        elif toolType == "TaperedBall":
            ui.taperedBallTopDiameterEdit.setText(obj.TopDiameter.UserString)
            ui.taperedBallDiameterEdit.setText(obj.BallDiameter.UserString)
            ui.taperedBallCutLengthEdit.setText(obj.CutLength.UserString)
            ui.taperedBallToolLengthEdit.setText(obj.ToolLength.UserString)
            ui.taperedBallShaftDiameterEdit.setText(
                obj.ShaftDiameter.UserString)

    def getToolPropertiesFromGUI(self, props):
        ui = self.createToolUi
        ui.nameEdit.setText(props['label'])
        for prop in props['properties']:
            if prop[1] == 'ToolType': toolType = prop[2]
        for prop in props['properties']:
            if prop[1] == 'Number': ui.numberEdit.setText(str(prop[2]))
            elif prop[1] == 'Make': ui.makeEdit.setText(prop[2])
            elif prop[1] == 'Model': ui.modelEdit.setText(prop[2])
            elif prop[1] == 'ToolType':
                index = 0
                while index < ui.toolTypeCB.count():
                    if prop[2] == ui.toolTypeCB.itemText(index):
                        ui.toolTypeCB.setCurrentIndex(index)
                        break
                    index = index + 1
            elif prop[1] == 'StockMaterial':
                ui.materialEdit.setText(prop[2])
            elif prop[1] == 'FeedRate':
                ui.feedRateEdit.setText(
                    VAL.fromSystemValue('velocity', prop[2]))
            elif prop[1] == 'PlungeRate':
                ui.plungeRateEdit.setText(
                    VAL.fromSystemValue('velocity', prop[2]))
            elif prop[1] == 'SpindleSpeed':
                ui.spindleSpeedEdit.setText(prop[2])
            elif prop[1] == 'StepOver':
                ui.stepOverEdit.setText(VAL.fromSystemValue('length', prop[2]))
            elif prop[1] == 'DepthOfCut':
                ui.depthOfCutEdit.setText(
                    VAL.fromSystemValue('length', prop[2]))
            elif toolType == "Straight":
                if prop[1] == 'Diameter':
                    ui.straightDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == 'CutLength':
                    ui.straightCutLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == 'ToolLength':
                    ui.straightToolLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == 'ShaftDiameter':
                    ui.straightShaftDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
            elif toolType == "Tapered":
                if prop[1] == "TopDiameter":
                    ui.taperedTopDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "BottomDiameter":
                    ui.taperedBottomDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "CutLength":
                    ui.taperedCutLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ToolLength":
                    ui.taperedToolLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ShaftDiameter":
                    ui.taperedShaftDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
            elif toolType == "Conical":
                if prop[1] == "TopDiameter":
                    ui.conicalTopDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == 'CutAngle':
                    ui.conicalCutAngleEdit.setText(
                        VAL.fromSystemValue('angle', prop[2]))
                elif prop[1] == 'ToolLength':
                    ui.conicalToolLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == 'ShaftDiameter':
                    ui.conicalShaftDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
            elif toolType == "Ball":
                if prop[1] == "BallDiameter":
                    ui.ballDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ToolLength":
                    ui.ballToolLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ShaftDiameter":
                    ui.ballShaftDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
            elif toolType == "TaperedBall":
                if prop[1] == "TopDiameter":
                    ui.taperedBallTopDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "BallDiameter":
                    ui.taperedBallDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "CutLength":
                    ui.taperedBallCutLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ToolLength":
                    ui.taperedBallToolLengthEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))
                elif prop[1] == "ShaftDiameter":
                    ui.taperedBallShaftDiameterEdit.setText(
                        VAL.fromSystemValue('length', prop[2]))

    def setToolProperties(self):
        ui = self.createToolUi
        if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt(
                "UserSchema") in [0, 1, 4, 6]:
            units = 1
        else:
            units = 25.4
        S = "App::PropertyString"
        I = "App::PropertyInteger"
        L = "App::PropertyLength"
        A = "App::PropertyAngle"
        V = "App::PropertySpeed"
        Q = "App::PropertyQuantity"
        tooltype = ui.toolTypeCB.currentText()
        #obj.Label = ui.nameEdit.text()
        p = [
            [S, "ObjectType", tooltype + "Tool"],
            #[S,	"Name",				ui.nameEdit.text()],
            [I, "Number", eval(ui.numberEdit.text())],
            [S, "ToolType", tooltype]
        ]
        if ui.makeEdit.text() != "": p.append([S, "Make", ui.makeEdit.text()])
        if ui.modelEdit.text() != "":
            p.append([S, "Model", ui.modelEdit.text()])
        if ui.materialEdit.text() != "":
            p.append([S, "StockMaterial", ui.materialEdit.text()])
        if ui.feedRateEdit.text() != "":
            p.append([
                V, "FeedRate",
                VAL.toSystemValue(ui.feedRateEdit, 'velocity')
            ])
        if ui.plungeRateEdit.text() != "":
            p.append([
                V, "PlungeRate",
                VAL.toSystemValue(ui.plungeRateEdit, 'velocity')
            ])
        if ui.spindleSpeedEdit.text() != "":
            p.append([
                S, "SpindleSpeed",
                VAL.toSystemValue(ui.spindleSpeedEdit, 'angularVelocity')
            ])
        if ui.stepOverEdit.text() != "":
            p.append(
                [L, "StepOver",
                 VAL.toSystemValue(ui.stepOverEdit, 'length')])
        if ui.depthOfCutEdit.text() != "":
            p.append([
                L, "DepthOfCut",
                VAL.toSystemValue(ui.depthOfCutEdit, 'length')
            ])
        if tooltype == "Straight":
            p.append([
                L, "Diameter",
                VAL.toSystemValue(ui.straightDiameterEdit, 'length')
            ])
            p.append([
                L, "CutLength",
                VAL.toSystemValue(ui.straightCutLengthEdit, 'length')
            ])
            p.append([
                L, "ToolLength",
                VAL.toSystemValue(ui.straightToolLengthEdit, 'length')
            ])
            p.append([
                L, "ShaftDiameter",
                VAL.toSystemValue(ui.straightShaftDiameterEdit, 'length')
            ])
        elif tooltype == "Tapered":
            p.append([
                L, "TopDiameter",
                VAL.toSystemValue(ui.taperedTopDiameterEdit, 'length')
            ])
            p.append([
                L, "BottomDiameter",
                VAL.toSystemValue(ui.taperedBottomDiameterEdit, 'length')
            ])
            p.append([
                L, "CutLength",
                VAL.toSystemValue(ui.taperedCutLengthEdit, 'length')
            ])
            p.append([
                L, "ToolLength",
                VAL.toSystemValue(ui.taperedToolLengthEdit, 'length')
            ])
            p.append([
                L, "ShaftDiameter",
                VAL.toSystemValue(ui.taperedShaftDiameterEdit, 'length')
            ])
        elif tooltype == "Conical":
            p.append([
                L, "TopDiameter",
                VAL.toSystemValue(ui.conicalTopDiameterEdit, 'length')
            ])
            p.append([
                A, "CutAngle",
                VAL.toSystemValue(ui.conicalCutAngleEdit, 'angle')
            ])
            p.append([
                L, "ToolLength",
                VAL.toSystemValue(ui.conicalToolLengthEdit, 'length')
            ])
            p.append([
                L, "ShaftDiameter",
                VAL.toSystemValue(ui.conicalShaftDiameterEdit, 'length')
            ])
        elif tooltype == "Ball":
            p.append([
                L, "BallDiameter",
                VAL.toSystemValue(ui.ballDiameterEdit, 'length')
            ])
            p.append([
                L, "ToolLength",
                VAL.toSystemValue(ui.ballToolLengthEdit, 'length')
            ])
            p.append([
                L, "ShaftDiameter",
                VAL.toSystemValue(ui.ballShaftDiameterEdit, 'length')
            ])
        elif tooltype == "TaperedBall":
            p.append([
                L, "TopDiameter",
                VAL.toSystemValue(ui.taperedBallTopDiameterEdit, 'length')
            ])
            p.append([
                L, "BallDiameter",
                VAL.toSystemValue(ui.taperedBallDiameterEdit, 'length')
            ])
            p.append([
                L, "CutLength",
                VAL.toSystemValue(ui.taperedBallCutLengthEdit, 'length')
            ])
            p.append([
                L, "ToolLength",
                VAL.toSystemValue(ui.taperedBallToolLengthEdit, 'length')
            ])
            p.append([
                L, "ShaftDiameter",
                VAL.toSystemValue(ui.taperedBallShaftDiameterEdit, 'length')
            ])

        return p

    def setSelectedObject(self, obj):
        self.selectedObject = obj

    def setMode(self):
        if self.selectedObject == None: mode = getGUIMode()
        elif self.selectedObject.ObjectType in self.toolTypes:
            mode = "EditingToolFromIcon"
        elif self.selectedObject.ObjectType == "ToolTable":
            if getGUIMode() == 'None': mode = "AddingToolFromIcon"
            else: mode = getGUIMode()
        setGUIMode(mode)
        return mode

    def Activated(self):
        self.setUnits()
        mode = self.setMode()
        if mode == "AddingToolFromIcon":
            self.currentToolNumber = -1
            self.originalToolName = ""
            self.reset()
            self.parent = self.selectedObject
            self.validateAllFields()
        elif mode == "EditingToolFromIcon":
            self.currentToolNumber = self.selectedObject.Number
            self.originalToolName = self.selectedObject.Label
            self.parent = self.selectedObject.getParentGroup()
            self.getToolProperties(self.selectedObject)
            self.validateAllFields()
        elif mode == "AddingToolFromGUI":
            self.currentToolNumber = -1
            self.originalToolName = ""
            self.parent = self.selectedObject
            self.reset()
            self.validateAllFields()
        elif mode == "EditingToolFromGUI":
            self.parent = self.selectedObject
            self.getToolPropertiesFromGUI(getGUIProperties())
            self.currentToolNumber = eval(self.createToolUi.numberEdit.text())
            self.originalToolName = self.createToolUi.nameEdit.text()
            self.validateAllFields()
        else:
            print "unexpected mode (" + mode + ")"
            return False
        self.createToolUi.show()
        setStatus("showing")
        return True

    def accept(self):
        ui = self.createToolUi
        ui.hide()
        setStatus("hidden")
        mode = getGUIMode()
        if mode == "AddingToolFromIcon":
            self.tool = Tool(self.selectedObject)
            p = self.setToolProperties()
            self.tool.getObject().Label = ui.nameEdit.text()
            self.tool.setProperties(p, self.tool.getObject())
            setGUIMode("None")
            return True
        elif mode == "EditingToolFromIcon":
            self.tool = self.selectedObject.Proxy
            self.tool.Label = ui.nameEdit.text()
            p = self.setToolProperties()
            self.tool.setProperties(p, self.selectedObject)
            setGUIMode("None")
            return True
        elif mode == "AddingToolFromGUI":
            p = self.setToolProperties()
            setGUIProperties(ui.nameEdit.text(), p)
            return True
        elif mode == "EditingToolFromGUI":
            p = self.setToolProperties()
            setGUIProperties(ui.nameEdit.text(), p)
            return True
        else:
            print "unexpected mode (" + mode + ")"
        return False

    def reject(self):
        self.createToolUi.hide()
        setStatus("hidden")
        setGUIMode("None")
        return False

    def IsActive(self):
        mode = getGUIMode()
        if mode in ["EditingToolFromGUI", "AddingToolFromGUI"]:
            return True
        mw = FreeCADGui.getMainWindow()
        tree = mw.findChildren(QtGui.QTreeWidget)[0]
        if len(tree.selectedItems()) != 1: return False
        item = tree.selectedItems()[0]
        obj = FreeCAD.ActiveDocument.getObjectsByLabel(item.text(0))[0]
        if obj.ObjectType in [
                "ToolTable", "StraightTool", "TaperedTool", "ConicalTool",
                "BallTool", "TaperedBallTool"
        ]:
            self.selectedObject = obj
            return True
        return False
示例#29
0
def op_update_dump(start=None, end=None):
    print 'Generating update ..'
    update_dump_start = time.time()
    db = connection
    cursor = db.cursor()
    # cursor.execute("select * from t_database where dbname < 3 ")
    cursor.execute("use curato_base")

    dbIndex = None
    if start == end:
        dbIndex = start

    if dbIndex:
        s = "select * from t_database where dbname = '" + dbIndex + "' "
    elif start and end:
        s = "select * from t_database where dbname >= %s and dbname <= %s " % (
            start, end)
    else:
        all = raw_input('Dump all ? (y/N) ')
        if all != 'y':
            sys.exit()
        s = "select * from t_database"

    cursor.execute(s)
    data = cursor.fetchall()

    # log_file = dir + 'update.log'
    # h = open(log_file, 'w')

    sqls = ""

    for d in data:
        t1 = time.time()
        sn = str(d[1])  # companyId
        dbName = "curato" + d[3]  # db index
        if not Tool.dbExist(dbName):
            continue
        s = ""
        create_sql = getCreateSql(dbName, sn)
        print 'create_sql..' + dbName + '-' + sn
        modify_sql = getModifySql(dbName, sn)
        print 'modify_sql..' + dbName + '-' + sn
        s += create_sql
        s += modify_sql

        sqls += s

        t2 = time.time()

        t = t2 - t1
        print "Generating %s Cost Time %s" % (dbName + '-' + sn, t)

        # h.write("Generating %s Cost Time %s" % (dbName + '-' + sn, t))

    f = update_file
    fo = open(f, "w")
    fo.write(sqls)
    fo.close()

    update_dump_end = time.time()
    print "Generating Cost Time %s" % (update_dump_end - update_dump_start)

    print 'Generating update done. file: %s' % update_file
    return 1
示例#30
0
def getAuthSql(start, end):
    dbIndex = None
    if start == end:
        dbIndex = start

    data = getDbs(dbIndex)

    db = connection
    cursor = db.cursor()

    sqlss = ''

    # per row for company
    for d in data:

        companyId = str(d[1])
        dbIndex = str(d[3])

        dbName = "curato" + dbIndex
        if not Tool.dbExist(dbName):
            continue

        sqls = "use %s;" % dbName

        tblName = companyId + "_staff_role_auth"

        createTbl = '''
        drop table if EXISTS `%s`;
        CREATE TABLE `%s` (
        `id`  int(5) UNSIGNED  NOT NULL AUTO_INCREMENT ,
        `role_id`  int(5) NULL ,
        `auth`  text NULL ,
        PRIMARY KEY (`id`)
        )
        ;
        '''
        createTbl = createTbl % (tblName, tblName)

        sqls += createTbl

        oldTbl = companyId + "_user_role_auth"

        if Tool.tblExist(dbName, oldTbl):

            authSql = "select * from %s " % oldTbl
            cursor.execute("use %s" % dbName)
            cursor.execute(authSql)
            res = cursor.fetchall()

            insertSql = "insert into %s (role_id, auth) values " % tblName
            insertCount = 0

            for a in res:
                authStr = a[4]
                roleId = a[1]
                authStr = authStr.strip(',')
                auth = convertAuth(authStr)
                if len(auth) > 0:
                    auth = ','.join(str(n) for n in auth)
                else:
                    auth = ''

                insertCount += 1

                insertSql += " ('%s', '%s')," % (roleId, auth)

            if insertCount:
                insertSql = insertSql.rstrip(',')
                insertSql += ';'
            else:
                insertSql = ''

            sqls += insertSql

        sqlss += sqls

    return sqlss
示例#31
0

if __name__ == "__main__":
    '''
    dataDir = 'data\\常州天和印染有限公司\\'
    name = '三相总有功功率'    #所分析数据项
    if os.path.exists('data\\tmp\\P_total.csv'):
        P_total = pd.read_csv('data\\tmp\\P_total.csv',index_col=0)
    else:
        P_total = readData(dataDir, name)
        P_total.to_csv('data\\tmp\\P_total.csv')  '''

    device = '100009'  # 所要预测设备(全建筑总出)
    day_point = 96  # tianhe:480,new:96 (将原函数中的480改为day_point,20改为day_point//24)
    # P_total = pd.read_csv('Ptotal_new.csv', index_col=0)
    P_total, device_index = Tool.getP_totalBySQL("11", "11", "100009", "BV")
    print(device_index)
    # P_total.index = pd.to_datetime(P_total.index)
    # P_total = P_total.sort_index()
    #
    # # 删去全零列设备
    # del_list = []
    # for i in range(P_total.shape[1]):
    #     if max(P_total.iloc[:, i]) - min(P_total.iloc[:, i]) == 0:
    #         del_list.append(i)
    # P_total.drop(P_total.columns[del_list], axis=1, inplace=True)
    #
    # # 补全device名并得到device_index
    # for i in range(P_total.shape[1]):
    #     if device in P_total.columns[i]:
    #         device = P_total.columns[i]
示例#32
0
def getModifySql(dbName, sn):
    sn = str(sn)
    # attendance
    tblName = sn + "_attendance"
    sql = ""
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('rule_id',
         "ADD COLUMN `rule_id`  int NULL COMMENT '考勤规则id' AFTER `user_id`"),
        ('apply_id',
         "ADD COLUMN `apply_id`  varchar(200) DEFAULT NULL COMMENT '对考勤有影响的申请id集合' AFTER `cross_day`"
         ),
        ('rule_work_time',
         "ADD COLUMN `rule_work_time`  smallint(6) NULL COMMENT '自由班工作时间' AFTER `apply_id`"
         ),
        ('record_limit_time',
         "ADD COLUMN `record_limit_time`  time NULL COMMENT '自由班最晚打卡时间' AFTER `rule_work_time`"
         ),
        ('s_record_time',
         "ADD COLUMN `s_record_time`  smallint(6) NULL COMMENT '上班前有效打卡时间' AFTER `record_limit_time`"
         ),
        ('late_least_time',
         "ADD COLUMN `late_least_time`  smallint(6) NULL COMMENT '迟到起算时间' AFTER `s_record_time`"
         ),
        ('late_max_time',
         "ADD COLUMN `late_max_time`  smallint(6) NULL COMMENT '迟到上限时间(超过即旷工)' AFTER `late_least_time`"
         ),
        ('leave_least_time',
         "ADD COLUMN `leave_least_time`  smallint(6) NULL COMMENT '早退起算时间' AFTER `late_max_time`"
         ),
        ('leave_max_time',
         "ADD COLUMN `leave_max_time`  smallint(6) NULL COMMENT '早退上限时间(超过即旷工)' AFTER `leave_least_time`"
         ),
        ('ot_least_time',
         "ADD COLUMN `ot_least_time`  smallint(6) NULL COMMENT '加班起算时间' AFTER `leave_max_time`"
         ),
        ('attendance_apply',
         "ADD COLUMN `attendance_apply`  varchar(255) DEFAULT '1,2,3,4' COMMENT '关联申请' AFTER `ot_least_time`"
         ),
        ('record_way',
         "ADD COLUMN `record_way`  varchar(255) DEFAULT '1,2,3' COMMENT '允许打卡方式' AFTER `attendance_apply`"
         ),
        ('rule_type',
         "ADD COLUMN `rule_type`  tinyint(4) DEFAULT 1 COMMENT '班制类型。1固定2多班3自由' AFTER `record_way`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + "; "

    modify = '''
        %s MODIFY COLUMN `schedule_id`  int(11) NULL COMMENT '班次id' AFTER `rule_id`;
        %s MODIFY COLUMN `type`  int(11) NULL DEFAULT 0 COMMENT '考勤类型(加班、出差)' AFTER `attendance_status`;
        %s MODIFY COLUMN `work_time`  smallint(6) NULL COMMENT '应上班的分钟数' AFTER `update_time`;
        %s MODIFY COLUMN `cross_day`  tinyint(1) NULL DEFAULT 0 COMMENT '是否跨天' AFTER `overtime_type`;
    '''

    sql += (modify % ((alter, ) * 4))

    # schedule
    tblName = sn + "_schedule"
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('rest',
         "ADD COLUMN `rest`  tinyint(1) NULL DEFAULT 1 COMMENT '是否有休息时间,1是0否' AFTER `cross_day`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    modify = '''
        %s MODIFY COLUMN `department_id`  int(11) NULL COMMENT '部门id' AFTER `id`;
        %s MODIFY COLUMN `schedule_name`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '班次名称' AFTER `department_id`;
        %s MODIFY COLUMN `s_rest_time`  time NULL COMMENT '午休开始时间' AFTER `e_time`;
        %s MODIFY COLUMN `e_rest_time`  time NULL COMMENT '午休结束时间' AFTER `s_rest_time`;
        %s MODIFY COLUMN `creator`  int(11) NULL COMMENT '创建者id' AFTER `e_rest_time`;
        %s MODIFY COLUMN `create_time`  datetime NULL COMMENT '创建时间' AFTER `creator`;
        %s MODIFY COLUMN `work_time`  smallint(6) NULL DEFAULT 0 COMMENT '上班时间(分钟数)' AFTER `deleted`;
        %s MODIFY COLUMN `cross_day`  tinyint(1) NULL DEFAULT 0 COMMENT '是否跨天' AFTER `work_time`;
    '''

    sql += (modify % ((alter, ) * 8))

    # attendance_record
    tblName = sn + "_attendance_record"
    if (not Tool.colExist(dbName, tblName, 'record_type')):
        s = " ALTER TABLE `%s` ADD COLUMN `record_type` tinyint(1) NULL DEFAULT 1 COMMENT '打卡方式。1人脸2二维码3外勤签到4补签' AFTER `time`;"
        sql += (s % tblName)

    # report
    tblName = sn + "_report"
    alter = " alter table " + tblName + " "
    addCols = [
        ('report_type',
         "ADD COLUMN `report_type`  tinyint(4) NULL COMMENT '汇报类型。1日报2周报' AFTER `type`"
         ),
        ('work_plan',
         "ADD COLUMN `work_plan`  varchar(5000) NULL COMMENT '下周工作计划' AFTER `content`"
         ),
        ('files',
         "ADD COLUMN `files`  varchar(255) NULL COMMENT '图片' AFTER `work_plan`"
         ),
        ('report_end_date',
         "ADD COLUMN `report_end_date`  date NULL COMMENT '汇报结束日期' AFTER `report_date`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + "; "

    # user
    tblName = sn + "_user"
    alter = " alter table " + tblName + " "
    addCols = [
        ('report_to',
         "ADD COLUMN `report_to`  int(11) NULL DEFAULT 1 COMMENT '汇报对象' AFTER `range` ;"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    # apply_config
    tblName = sn + "_apply_config"
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('intel_approver',
         "ADD COLUMN `intel_approver`  varchar(255) NULL COMMENT '智能申请审批职位id' AFTER `approver`"
         ),
        ('company',
         "ADD COLUMN `company`  tinyint(1) NULL DEFAULT 0 COMMENT '是否全公司适用' AFTER `department_id`"
         ),
        ('hand_sign',
         "ADD COLUMN `hand_sign`  tinyint(1) NULL DEFAULT 1 COMMENT '是否启用手签' AFTER `approver`"
         ),
        ('process_type',
         "ADD COLUMN `process_type`  tinyint(1) NULL DEFAULT 1 COMMENT '审批流程类别。1员工2智能(职位)' AFTER `hand_sign`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    dropCols = [
        ('apply_enname', "drop column `apply_enname`"),
        ('url', "drop column `url`"),
    ]

    for tup in dropCols:
        if Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + ';'

    modify = '''
        %s MODIFY COLUMN `department_id`  varchar(100) NULL DEFAULT NULL COMMENT '可使用此申请的部门id' AFTER `type`;
        %s MODIFY COLUMN `approver`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '申请审批人id' AFTER `apply_name`;
    '''

    sql += modify % ((alter, ) * 2)

    # apply
    tblName = sn + "_apply"
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('carbon_copy',
         "ADD COLUMN `carbon_copy`  varchar(1000) NULL COMMENT '抄送人员id' AFTER `approver`"
         ),
        ('files',
         "ADD COLUMN `files`  varchar(255) NULL COMMENT '附带文件(图片)' AFTER `content`"
         ),
        ('day_count',
         "ADD COLUMN `day_count`  int NULL DEFAULT NULL COMMENT '天数' AFTER `files`"
         ),
        ('hour_count',
         "ADD COLUMN `hour_count`  int NULL DEFAULT NULL COMMENT '小时数' AFTER `day_count`"
         ),
        ('process_type',
         "ADD COLUMN `process_type`  tinyint(1) NULL DEFAULT 1 COMMENT '审批流程列表。1员工审批2智能审批(职位)' AFTER `approver`"
         ),
        ('hand_sign',
         "ADD COLUMN `hand_sign`  tinyint(1) NULL COMMENT '是否开启手签1是0否' AFTER `gps_location`"
         ),
        ('overtime_type',
         "ADD COLUMN `overtime_type`  tinyint(1) NULL DEFAULT 0 COMMENT '加班类型,是否法定假日' AFTER `e_time`"
         ),
    ]

    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    modify = '''
        %s MODIFY COLUMN `content`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容' AFTER `title`;
    '''

    sql += modify % alter

    # apply_info
    tblName = sn + "_apply_info"
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('role_id',
         "ADD COLUMN `role_id`  int NULL COMMENT '职位id。智能审批流程时用' AFTER `accepter`"
         ),
        ('remind_time',
         "ADD COLUMN `remind_time`  datetime NULL COMMENT '上一次催办时间' AFTER `read`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    modify = '''
        %s MODIFY COLUMN `accepter`  int(11) NULL COMMENT '申请接收人id(审批人及自己)' AFTER `apply_id`;
    '''

    sql += modify % alter

    # notice
    tblName = sn + "_notice"
    alter = " alter table `" + tblName + "` "
    addCols = [
        ('send_all',
         "ADD COLUMN `send_all`  tinyint(4) NULL COMMENT '是否全公司发送:0,否;1,是;' AFTER `status`"
         ),
        ('department_id',
         "ADD COLUMN `department_id`  varchar(1000) NULL COMMENT '公司接收部门ID集合,以|区分' AFTER `send_all`"
         ),
        ('user_id',
         "ADD COLUMN `user_id`  varchar(1000) NULL COMMENT '公司接收用户ID集合,以|区分' AFTER `department_id`"
         ),
        ('attachments',
         "ADD COLUMN `attachments`  varchar(255) NULL COMMENT '公告的附件或图片集合,以;;区分' AFTER `user_id`"
         ),
    ]
    for tup in addCols:
        if not Tool.colExist(dbName, tblName, tup[0]):
            sql += alter + tup[1] + '; '

    modify = '''
        %s MODIFY COLUMN `content`  varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公告内容' AFTER `title`;
        %s MODIFY COLUMN `e_date`  date NULL COMMENT '失效时间' AFTER `s_date`;
    '''

    sql += modify % ((alter, ) * 2)

    # display
    tblName = sn + "_display"
    s = " ALTER TABLE `%s` MODIFY COLUMN `sort` integer(5) NOT NULL COMMENT '排序' AFTER `add_time`;"
    sql += (s % tblName)

    return sql