def create_update_archive(archive_path): zp = zipfile.ZipFile(archive_path, 'w', compression=zipfile.ZIP_DEFLATED) files_list = create_app_update_list() abs_path = env_mode.get_current_path() for fl in files_list: fl_rep = fl.replace zp.write(fl, arcname=fl_rep(abs_path, '')) zp.close()
def get_update_archive_from_server(archive_name): archive_path = '{0}/updates/{1}'.format(env_mode.get_current_path(), archive_name) update_archive_file = download_from_url('http://tactichandler.tk/th/{0}'.format(archive_name)) if update_archive_file: with open(archive_path, 'wb') as output: output.write(update_archive_file.read()) return archive_path
def update_from_archive(archive_path): with zipfile.ZipFile(archive_path, "r") as zp: members = [] for member in zp.infolist(): member.filename = member.filename.replace('\\', '/') members.append(member) zp.extractall(env_mode.get_current_path(), members) zp.close()
def commit_update_to_json(self): args = self.majorSpinBox.text(),\ self.minorSpinBox.text(),\ self.buildSpinBox.text(),\ self.revisionSpinBox.text() current_ver_dict = uf.get_version(*args) current_ver_str = uf.get_version(*args, string=True) data_dict = { 'version': current_ver_dict, 'date': self.dateEdit.text(), 'changes': self.changesPlainTextEdit.toPlainText(), 'misc': self.miscPlainTextEdit.toPlainText(), 'remove_list': [], 'update_archive': '{0}.zip'.format(current_ver_str) } uf.save_json_to_path('{0}/updates/{1}.json'.format(env_mode.get_current_path(), current_ver_str), data_dict) uf.create_updates_list() uf.save_current_version(current_ver_dict) uf.create_update_archive('{0}/updates/{1}.zip'.format(env_mode.get_current_path(), current_ver_str)) self.close()
def get_info_from_updates_folder(files_list=False): updates_dir = '{0}/updates'.format(env_mode.get_current_path()) json_files = glob.glob1(updates_dir, '*.json') if files_list: return json_files updates_list = [] for jf in json_files: if jf != 'versions.json': print '{0}/{1}'.format(updates_dir, jf) updates_list.append(read_json_from_path('{0}/{1}'.format(updates_dir, jf))) return updates_list
def add_debuglog(self, debuglog_dict, message_type, write_log=False): self.debugLogTextEdit.append(self.format_debuglog(debuglog_dict[1], message_type)) if write_log: log_text = self.format_debuglog(debuglog_dict[1], message_type, False) log_path = u'{0}/log'.format(env_mode.get_current_path()) date_str = datetime.date.strftime(dl.session_start, '%d_%m_%Y_%H_%M_%S') if os.path.exists(log_path): log_file = open(u'{0}/session_{1}.log'.format(log_path, date_str), 'a+') else: os.makedirs(log_path) log_file = open(u'{0}/session_{1}.log'.format(log_path, date_str), 'w+') log_file.write(log_text + '\n') log_file.close()
def get_updates_from_server(): updates_list = download_from_url('http://tactichandler.tk/th/versions.json?{0}'.format(random.randint(0, 99999))) if updates_list: versions_list = json.loads(updates_list.read()) path_to_save = '{0}/updates'.format(env_mode.get_current_path()) if not os.path.exists(path_to_save): os.makedirs(path_to_save) for vl in versions_list: update_file = download_from_url('http://tactichandler.tk/th/{0}'.format(vl)) with open('{0}/{1}'.format(path_to_save, vl), 'wb') as output: output.write(update_file.read())
def close_routine(): if env_mode.get_mode() == 'maya': self.close() from thlib.ui_classes.ui_maya_dock import close_all_instances close_all_instances() # Removing path from sys, so we can run other instance from different path import sys sys.path.remove(env_mode.get_current_path()) if env_mode.get_mode() == 'standalone': self.close()
def create_app_update_list(): ignore_list = [ '.idea', '!not_in_project!', 'settings', 'screenshots', 'updates', 'asd.txt', 'asd2.txt', 'asd4.txt', 'backup', 'design', 'deprecated', ] include_list = [ '*.py', '*.pyw', '*.ui', '*.json', '*.png', '*.psd', '*.py', '*.qrc', '*.ico', '*.tga', '*.txt', '*.tif', '*.rgb', '*.j2k', '*.jpg', '*.zip', '*.ttf', '*VERSION*', ] include_list = r'|'.join([fnmatch.translate(x) for x in include_list]) ignore_list = '|'.join(ignore_list) files_list = [] for root, dirs, files in os.walk(env_mode.get_current_path()): if not re.search(ignore_list, root): files = [os.path.join(root, f) for f in files] files = [f for f in files if not re.search(ignore_list, f)] files = [f for f in files if re.search(include_list, f)] for fl in files: files_list.append(fl) return files_list
def startup(): env_inst.ui_super = QSingleApplication(sys.argv) env_inst.ui_super.setApplicationName('TacticHandler_TacticApiServer') env_inst.ui_super.setStyle('plastique') env_mode.set_mode('api_server') date_str = datetime.date.strftime(dl.session_start, '%d_%m_%Y_%H_%M_%S') stdout_path = u'{0}/log/api_server_stdout_{1}.log'.format(env_mode.get_current_path(), date_str) sys.stdout = open(stdout_path, 'w') main_standalone.setPaletteFromDct(main_standalone.palette) env_inst.ui_super.start_single(ui_tactic_api_server_classes.Ui_TacticApiClient()) sys.exit(env_inst.ui_super.exec_())
def create_updates_list(): file_path = '{0}/updates/versions.json'.format(env_mode.get_current_path()) save_json_to_path(file_path, get_info_from_updates_folder(files_list=True))
def save_current_version(data): file_path = '{0}/thlib/version.json'.format(env_mode.get_current_path()) save_json_to_path(file_path, data)
def get_current_version(): file_path = '{0}/thlib/version.json'.format(env_mode.get_current_path()) return read_json_from_path(file_path)
def save_json_to_path(file_path, data): updates_dir = '{0}/updates'.format(env_mode.get_current_path()) if not os.path.exists(updates_dir): os.makedirs(updates_dir) json_file = file(file_path, mode='w+') json.dump(data, json_file, indent=4)
def save_json_to_path(file_path, data): updates_dir = '{0}/updates'.format(env_mode.get_current_path()) if not os.path.isdir(updates_dir): os.makedirs(updates_dir) with open(file_path, mode='w+') as json_file: json.dump(data, json_file, indent=4)