def _sync_status(self): dm = gl.get_value('dm') self.aria2 = gl.get_value('aria2') options = None if self.aria2 is not None: ret = self.aria2.get_system_option() if ret is not None: options = ret['result'] is_enable = False if options is not None: is_enable = True self.edit_save_path.setText(options['dir']) self.spin_thread_count.setValue( int(options['max-concurrent-downloads'])) self.edit_save_path.setEnabled(is_enable) self.spin_thread_count.setEnabled(is_enable) self.edit_url.setEnabled(is_enable) self.button_bt_file.setEnabled(is_enable) self.edit_name.setEnabled(is_enable) self.button_ok.setEnabled(is_enable) self.button_select_folder.setEnabled(is_enable) if not dm.settings.values['IS_LOCALE']: self.button_select_folder.setEnabled(False) self.setWindowModality(Qt.ApplicationModal)
def __init__(self, gid): super().__init__() self.gid = gid self.aria2 = gl.get_value('aria2') setting = gl.get_value('settings') self.sleep_seconds = setting.values['REFRESH'] gl.signals.value_changed.connect(self._on_value_changed)
def run_test(sheet, module, url): """执行测试用例""" total_fail = 0 testDetailList = [] testCases = get_test_cases(sheet) tsum = len(testCases) for testCase in testCases: logging.info("Number %s", testCase["testNumber"]) logging.info("CaseNmae %s", testCase["testName"]) fail = 0 #判断是否有sql需要先执行 if testCase["pre_sql"] is not None and testCase["pre_sql"] != "": prepare_data(gl.get_value("dbhost"), gl.get_value("user"), gl.get_value("password"), gl.get_value("dbname"), str(testCase["pre_sql"])) # 判断是否需要替换参数化的testData if testCase["replace"] is not None and testCase["replace"] != "": replace_data(testCase) # 2.执行原用例 testResponse, actualCode = excute_case(testCase, url) if testResponse is None: testResponse = 'response is null' # print str ( actualCode ), str ( expectCode ) if actualCode is None or actualCode == 'RequestIsERROR': logging.error("Request is ERROR! %s", testCase["testNumber"]) logging.info("----------Next Case----------") fail += 1 total_fail += 1 elif str(actualCode) != str(testCase["testHopeCode"]): logging.info("Fail: %s", testCase["testNumber"]) logging.info("----------Next Case----------") fail += 1 total_fail += 1 else: # 用例执行成功后,判断是否需要存储response值 if testCase["store"] is not None and testCase["store"] != "": store_data(testCase["store"], testResponse, testCase["testNumber"]) if fail > 0: result = False else: logging.info("Pass: %s", testCase["testNumber"]) logging.info("----------Next Case----------") result = True # 获取每次执行用例结果 testDetail = report.get_test_detail(t_id=testCase["testNumber"], t_name=testCase["testName"], t_method=testCase["testMethod"], t_url=testCase["testUrl"], t_param=json.dumps(testCase["testData"]), t_response=testResponse, t_hope=testCase["testHopeCode"], t_actual=actualCode, t_result=result) testDetailList.append(testDetail) # 获取测试结果 testSumInfo = report.get_test_suminfo(test_sum=tsum, test_success=tsum - total_fail, test_failed=total_fail) testDetailInfo = report.get_all_test_detail(testDetailList) return testSumInfo, testDetailInfo
def _command(self): sender = self.sender() dm = gl.get_value('dm') if (sender is self.command_details) or (sender is self.label_filename): dm.main_wnd.show_details(self.task) elif sender is self.command_open: if not dm.settings.values['IS_LOCALE']: QMessageBox.warning(self, self.tr('Warn'), self.tr("Can't open folder when in remote mode"), QMessageBox.Ok) return file_name = self.get_task_name(self.task) try: path = os.path.join(self.task['dir'], file_name) path = os.path.abspath(path) print(path) os.system('explorer /e,/select,{}'.format(path)) except FileNotFoundError as err: print(err) elif sender is self.command_delete: if QMessageBox.question(self, self.tr('Warn'), self.tr("Are you sure to delete this task?"), QMessageBox.Ok | QMessageBox.No) == QMessageBox.No: return is_detect_file = False if dm.settings.values['IS_LOCALE']: file_name = self.get_task_name(self.task) path = os.path.join(self.task['dir'], file_name) path = os.path.abspath(path) if os.path.exists(path) and \ QMessageBox.question(self, self.tr('Question'), self.tr('Are you sure to delete file{} of this task?').format(path), QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes: is_detect_file = True else: path = '' aria2 = gl.get_value('aria2') if self.task["status"] in ('active', 'waiting', 'paused'): aria2.remove(self.task['gid']) while True: try: ret = aria2.get_status(self.task['gid']) except: break if ret['result']['status'] == 'removed': break time.sleep(0.5) aria2.remove_stoped(self.task['gid']) if is_detect_file: _thread.start_new_thread(self.thread_delete_file, (path, )) aria2 = gl.get_value('aria2') aria2.save_session()
def on_ok(self): self.settings.values['LANGUAGE'] = self.combox_language.currentIndex() self.settings.values["REFRESH"] = self.spin_refresh.value() self.settings.values["IS_LOCALE"] = self.radio_local.isChecked() url = { 'addr': self.edit_remote_addr.currentText(), 'token': self.edit_remote_token.text() } self.settings.values['REMOTE']["SERVER_ADDRESS"] = url['addr'] self.settings.values['REMOTE']["SERVER_TOKEN"] = url['token'] if url not in self.settings.values['REMOTE']['SERVER_HISTORY']: self.settings.values['REMOTE']['SERVER_HISTORY'].append(url) self.settings.values['LOCALE'][ "SERVER_PORT"] = self.edit_locale_port.text() self.settings.values['LOCALE'][ "SERVER_TOKEN"] = self.edit_locale_token.text() self.settings.values['LOCALE']['ARIA2'] = self.edit_aria2.text() params = self.edit_aria2_params.toPlainText() self.settings.values['LOCALE']['PARAMS'].clear() for line in params.split('\n'): self.settings.values['LOCALE']['PARAMS'].append(line) self.settings.values['LOCALE'][ "DOWNLOAD_DIR"] = self.edit_download_folder.text() self.settings.values['LOCALE'][ 'KEEP_RUNNING'] = self.checkbox_keep_running.isChecked() self.settings.save() gl.set_value("settings", self.settings) dm = gl.get_value('dm') dm.init_aria2() dm.main_wnd.left_widget.setCurrentRow(0)
def __init__(self, parent): super().__init__(parent) self.setObjectName('UiAbout') main_layout = QVBoxLayout(self) main_layout.setAlignment(Qt.AlignCenter) dm = gl.get_value('dm') label_name = QLabel('{0} {1}'.format(dm.app_name, dm.app_version)) label_name.setObjectName('application_name') main_layout.addWidget(label_name) btn_address = QCommandLinkButton(self.tr("Website ({0})").format(dm.app_url)) btn_address.clicked.connect(self.on_open_website) main_layout.addWidget(btn_address) label_name = QLabel() main_layout.addWidget(label_name) aria_info = QVBoxLayout() main_layout.addLayout(aria_info) label_title = QLabel(self.tr('About Aria2')) aria_info.addWidget(label_title) self.label_version = QLabel() aria_info.addWidget(self.label_version) self.edit_feature = QTextEdit() self.edit_feature.setReadOnly(True) aria_info.addWidget(self.edit_feature) self._value_changed('aria2')
def _command(self): sender = self.sender() if sender is self.command_unpause: aria2 = gl.get_value('aria2') aria2.unpause(self.task['gid']) aria2.save_session() else: super()._command()
def _refresh_task(self, is_successed, task, peers): aria2 = gl.get_value('aria2') if aria2 is None or not is_successed: return try: self._update_task(task, peers) self.task = task except Exception as err: logging.error('_refresh_task: {}'.format(err))
def on_back(self): task_count = len(self.backup_tasks) if task_count == 0: dm = gl.get_value('dm') self.thread_refresh.exit() dm.main_wnd.show_normal() return last = self.backup_tasks[task_count - 1] self.backup_tasks.pop(task_count - 1) self._goto_task(last)
def _on_open_file(self): file = self.sender().whatsThis() dm = gl.get_value('dm') if not dm.settings.values['IS_LOCALE']: QMessageBox.warning( self, self.tr('Warn'), self.tr("Can't open folder when in remote mode"), QMessageBox.Ok) return os.system('explorer /e,/select,{}'.format(os.path.abspath(file)))
def _command(self): sender = self.sender() if sender is self.command_pause: aria2 = gl.get_value('aria2') ret = aria2.pause(self.task['gid']) if ret is None: # force pause aria2.pause(self.task['gid'], True) aria2.save_session() else: super()._command()
def _goto_task(self, gid): if len(self.backup_tasks) > 0: self.tab.setTabText( 0, self.tr('<<Go back ({})').format(len(self.backup_tasks))) else: self.tab.setTabText(0, self.tr('<<Go back')) aria2 = gl.get_value('aria2') try: ret = aria2.get_status(gid) self.update_task(ret['result']) except: QMessageBox.warning(self, self.tr('Warn'), self.tr("Can't find this task"), QMessageBox.Ok) return
def _value_changed(self, name): if name == 'aria2': aria2 = gl.get_value(name) if aria2 is None: return ret = aria2.get_version() self.label_version.setText(self.tr('Version: ') + ret['result']['version']) msg = self.tr('Features:') + '\n' for f in ret['result']['enabledFeatures']: msg = msg + '\t' + f + '\n' ret = aria2.list_methods() msg = msg + self.tr('Methods:') + '\n' for f in ret['result']: msg = msg + '\t' + f + '\n' self.edit_feature.setText(msg)
def close(self): dm = gl.get_value('dm') dm.main_wnd.left_widget.setCurrentRow(0)
def __init__(self, parent): super().__init__(parent) dm = gl.get_value('dm') self.settings = dm.settings self.setObjectName('UiSetting') self.setWindowTitle(self.tr("Settings")) self.main_layout = QGridLayout(self) self.main_layout.setContentsMargins(60, 60, 20, 20) row = 0 label_language = QLabel(self.tr("Language:")) label_language.setFixedHeight(28) self.main_layout.addWidget(label_language, row, 0) self.combox_language = QComboBox() self.combox_language.setFixedHeight(28) self.main_layout.addWidget(self.combox_language, row, 1) row = row + 1 label_refresh = QLabel(self.tr("Refresh rate:")) label_refresh.setFixedHeight(28) self.main_layout.addWidget(label_refresh, row, 0) self.spin_refresh = QSpinBox() self.spin_refresh.setFixedHeight(28) self.spin_refresh.setMinimum(1) self.spin_refresh.setMaximum(60) self.spin_refresh.setValue(self.settings.values['REFRESH']) self.main_layout.addWidget(self.spin_refresh, row, 1) label_sec = QLabel(self.tr('second(s)')) self.main_layout.addWidget(label_sec, row, 2) row = row + 1 self.radio_remote = QRadioButton(self.tr("Remote")) self.radio_remote.clicked.connect(self.on_changed_type) self.main_layout.addWidget(self.radio_remote, row, 0) row = row + 1 label_url = QLabel(self.tr("Server address:")) label_url.setFixedHeight(28) self.main_layout.addWidget(label_url, row, 1) self.edit_remote_addr = QComboBox( ) # QLineEdit(self.settings.values['REMOTE']['SERVER_ADDRESS']) self.edit_remote_addr.currentTextChanged.connect( self.on_changed_remote_addr) self.edit_remote_addr.setEditable(True) self.edit_remote_addr.setFixedHeight(28) self.main_layout.addWidget(self.edit_remote_addr, row, 2, 1, 2) row = row + 1 label_token = QLabel(self.tr("Token:")) label_token.setFixedHeight(28) self.main_layout.addWidget(label_token, row, 1) self.edit_remote_token = QLineEdit( self.settings.values['REMOTE']['SERVER_TOKEN']) self.edit_remote_token.setFixedHeight(28) self.main_layout.addWidget(self.edit_remote_token, row, 2, 1, 2) row = row + 1 self.radio_local = QRadioButton(self.tr("Local")) self.radio_local.clicked.connect(self.on_changed_type) self.main_layout.addWidget(self.radio_local, row, 0) row = row + 1 label_token = QLabel(self.tr("Port:")) label_token.setFixedHeight(28) self.main_layout.addWidget(label_token, row, 1) self.edit_locale_port = QLineEdit( self.settings.values['LOCALE']['SERVER_PORT']) self.edit_locale_port.setFixedHeight(28) self.main_layout.addWidget(self.edit_locale_port, row, 2, 1, 2) row = row + 1 label_token = QLabel(self.tr("Token:")) label_token.setFixedHeight(28) self.main_layout.addWidget(label_token, row, 1) self.edit_locale_token = QLineEdit( self.settings.values['LOCALE']['SERVER_TOKEN']) self.edit_locale_token.setFixedHeight(28) self.main_layout.addWidget(self.edit_locale_token, row, 2, 1, 2) row = row + 1 label_name = QLabel(self.tr('Aria2 path:')) self.main_layout.addWidget(label_name, row, 1, 1, 2) self.edit_aria2 = QLineEdit() self.edit_aria2.setFixedHeight(28) self.main_layout.addWidget(self.edit_aria2, row, 2, 1, 2) self.button_select_aria = QPushButton('...') self.button_select_aria.setFixedHeight(28) self.button_select_aria.clicked.connect(self.on_select_aria) self.main_layout.addWidget(self.button_select_aria, row, 4) row = row + 1 label_name = QLabel(self.tr('Aria2 parameters:')) self.main_layout.addWidget(label_name, row, 1, 1, 2, Qt.AlignTop) # row = row + 1 self.edit_aria2_params = QTextEdit() self.main_layout.addWidget(self.edit_aria2_params, row, 2, 1, 3) row = row + 1 label_name = QLabel(self.tr("Save path:")) self.main_layout.addWidget(label_name, row, 1) self.edit_download_folder = QLineEdit() self.main_layout.addWidget(self.edit_download_folder, row, 2, 1, 2) self.button_select_download_folder = QPushButton("...") self.button_select_download_folder.clicked.connect( self.on_change_download_path) self.main_layout.addWidget(self.button_select_download_folder, row, 4) row = row + 1 self.checkbox_keep_running = QCheckBox( self.tr('Keep background downloads when closed this application')) self.main_layout.addWidget(self.checkbox_keep_running, row, 1, 1, 2, Qt.AlignTop) row = row + 1 self.button_ok = QPushButton(self.tr("OK")) self.button_ok.setFixedHeight(32) self.button_ok.clicked.connect(self.on_ok) self.main_layout.addWidget(self.button_ok, row, 1) button_cancel = QPushButton(self.tr("Cancel")) button_cancel.setFixedHeight(32) button_cancel.clicked.connect(self.close) self.main_layout.addWidget(button_cancel, row, 3) self.setWindowModality(Qt.ApplicationModal) for url in self.settings.values['REMOTE']['SERVER_HISTORY']: self.edit_remote_addr.addItem(url['addr']) self.edit_remote_addr.setCurrentText( self.settings.values['REMOTE']['SERVER_ADDRESS']) self.edit_aria2.setText(self.settings.values['LOCALE']['ARIA2']) self.radio_local.setChecked(self.settings.values['IS_LOCALE']) self.radio_remote.setChecked(not self.settings.values['IS_LOCALE']) params = '' for p in self.settings.values['LOCALE']['PARAMS']: if params != '': params = params + '\n' params = params + p self.edit_aria2_params.setText(params) download_path = os.path.join(os.path.expanduser('~'), 'Downloads') folder = self.settings.values['LOCALE']["DOWNLOAD_DIR"] folder = folder.replace('${DOWNLOAD}', download_path) self.edit_download_folder.setText(folder) for language in self.settings.values['LANGUAGES']: self.combox_language.addItem(language['NAME']) curr_language = self.settings.values['LANGUAGE'] self.combox_language.setCurrentText( self.settings.values['LANGUAGES'][curr_language]['NAME']) self.checkbox_keep_running.setChecked( self.settings.values['LOCALE']["KEEP_RUNNING"]) self.on_changed_type()
def close(self): dm = gl.get_value('dm') dm.main_wnd.left_widget.setCurrentRow(0) super(UiNewTask, self).close()
def start(self, priority=QThread.NormalPriority): self.is_quit = False self.aria2 = gl.get_value('aria2') settings = gl.get_value('settings') self.sleep_seconds = settings.values['REFRESH'] super().start(priority)
def on_open_website(self): dm = gl.get_value('dm') webbrowser.open(dm.app_url)