def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399 : util.sublime_error_message(result) return # Get output csv dir workspace = context.get_toolingapi_settings().get("workspace") outputdir = workspace + "/describe/global" if not os.path.exists(outputdir): os.makedirs(outputdir) # Open output csv output_file_dir = outputdir + "/sobjects.csv" if util.is_python3x(): fp = open(output_file_dir, "w", newline='') else: fp = open(output_file_dir, "wb") # Write list to csv util.list2csv(fp, result["sobjects"]) # Output log print("global describe csv outputdir: " + output_file_dir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return fp = open(file_name, "wb") try: body = bytes(result[component_body], "UTF-8") except: body = result[component_body].encode("UTF-8") fp.write(body) print(message.SEPRATE.format(message.GET_SUCCESSFULLY)) sublime.status_message(message.GET_SUCCESSFULLY)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if "status_code" in result and result["status_code"] > 399: util.sublime_error_message(result) return # No error, just display log in a new view test_result = util.parse_test_result(result) # Sometimes, the test result will not show print (test_result) view = sublime.active_window().new_file() view.run_command("newview", { "name": "Test Result", "input": test_result })
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed, something may happen, # for example, user password is expired if "status_code" in api.result and api.result["status_code"] > 399: util.sublime_error_message(api.result) return # Load COMPONENT_METADATA_SETTINGS Settings and put all result into it # Every org has one local repository component_metadata = api.result component_metadta = sublime.load_settings(COMPONENT_METADATA_SETTINGS) component_metadta.set(toolingapi_settings["username"], component_metadata) sublime.save_settings(COMPONENT_METADATA_SETTINGS) print(message.SEPRATE.format('All code are Downloaded.')) sublime.status_message(message.DOWNLOAD_ALL_SUCCESSFULLY) # After Refresh all succeed, start initiate sobject completions handle_initiate_sobjects_completions(120)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if "status_code" in result and result["status_code"] > 399: util.sublime_error_message(result) return # No error, just display log in a new view test_result = util.parse_test_result(result) # Sometimes, the test result will not show print(test_result) view = sublime.active_window().new_file() view.run_command("newview", { "name": "Test Result", "input": test_result })
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed, something may happen, # for example, user password is expired if "status_code" in api.result and api.result["status_code"] > 399: util.sublime_error_message(api.result) return # Load COMPONENT_METADATA_SETTINGS Settings and put all result into it # Every org has one local repository component_metadata = api.result component_metadta = sublime.load_settings(COMPONENT_METADATA_SETTINGS) component_metadta.set(toolingapi_settings["username"], component_metadata) sublime.save_settings(COMPONENT_METADATA_SETTINGS) print (message.SEPRATE.format('All code are Downloaded.')) sublime.status_message(message.DOWNLOAD_ALL_SUCCESSFULLY) # After Refresh all succeed, start initiate sobject completions handle_initiate_sobjects_completions(120)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399: util.sublime_error_message(result) return # Get output csv dir workspace = context.get_toolingapi_settings().get("workspace") outputdir = workspace + "/describe/global" if not os.path.exists(outputdir): os.makedirs(outputdir) # Open output csv output_file_dir = outputdir + "/sobjects.csv" if util.is_python3x(): fp = open(output_file_dir, "w", newline='') else: fp = open(output_file_dir, "wb") # Write list to csv util.list2csv(fp, result["sobjects"]) # Output log print("global describe csv outputdir: " + output_file_dir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return base64String = result["zipFile"] outputdir = toolingapi_settings["workspace"] + "/metadata" if not os.path.exists(outputdir): os.makedirs(outputdir) output_file_dir = outputdir + "/sobjects.zip" with open(output_file_dir, "wb") as fout: fout.write(base64.b64decode(base64String)) fout.close() # Unzip sobjects.zip to file zipdir = toolingapi_settings["workspace"] + "/metadata/sobjects.zip" outputdir = toolingapi_settings["workspace"] + "/metadata" f = zipfile.ZipFile(zipdir, 'r') for fileinfo in f.infolist(): path = outputdir directories = fileinfo.filename.split('/') for directory in directories: # replace / to &, because there has problem in open method try: quoted_dir = urllib.parse.unquote(directory).replace( "/", "&") except: quoted_dir = urllib.unquote(directory).replace("/", "&") path = os.path.join(path, quoted_dir) if directory == directories[-1]: break # the file if not os.path.exists(path): os.makedirs(path) outputfile = open(path, "wb") shutil.copyfileobj(f.open(fileinfo.filename), outputfile) outputfile.close() # Close zipFile opener f.close() # Remove this zip file # os.remove(zipdir) # Output package path print("Your objects and workflows are exported to: " + outputdir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda:handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return base64String = result["zipFile"] outputdir = toolingapi_settings["workspace"] + "/metadata" if not os.path.exists(outputdir): os.makedirs(outputdir) output_file_dir = outputdir + "/sobjects.zip" with open(output_file_dir, "wb") as fout: fout.write(base64.b64decode(base64String)) fout.close() # Unzip sobjects.zip to file zipdir = toolingapi_settings["workspace"] + "/metadata/sobjects.zip" outputdir = toolingapi_settings["workspace"] + "/metadata" f = zipfile.ZipFile(zipdir, 'r') for fileinfo in f.infolist(): path = outputdir directories = fileinfo.filename.split('/') for directory in directories: # replace / to &, because there has problem in open method try: quoted_dir = urllib.parse.unquote(directory).replace("/", "&") except: quoted_dir = urllib.unquote(directory).replace("/", "&") path = os.path.join(path, quoted_dir) if directory == directories[-1]: break # the file if not os.path.exists(path): os.makedirs(path) outputfile = open(path, "wb") shutil.copyfileobj(f.open(fileinfo.filename), outputfile) outputfile.close() # Close zipFile opener f.close() # Remove this zip file # os.remove(zipdir) # Output package path print("Your objects and workflows are exported to: " + outputdir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda:handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If succeed result = api.result if result["status_code"] > 399: util.sublime_error_message(result) return print (result)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If succeed result = api.result if result["status_code"] > 399: util.sublime_error_message(result) return print(result)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda:handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If succeed result = api.result if result["status_code"] > 399: util.sublime_error_message(result) return os.remove(file_name) sublime.active_window().run_command("close") print (message.SEPRATE.format(message.DELETE_SUCCESSFULLY)) sublime.status_message(message.DELETE_SUCCESSFULLY)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If succeed result = api.result if result["status_code"] > 399: util.sublime_error_message(result) return os.remove(file_name) sublime.active_window().run_command("close") print(message.SEPRATE.format(message.DELETE_SUCCESSFULLY)) sublime.status_message(message.DELETE_SUCCESSFULLY)
def handle_new_view_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_new_view_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399: util.sublime_error_message(result) return # No error, just display log in a new view view = sublime.active_window().new_file() view.run_command("newview", { "name": sobject + " Describe Result", "input": util.parse_sobject_field_result(result) })
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399: util.sublime_error_message(result) return # If totalSize is 0 if "totalSize" in result and result["totalSize"] == 0: util.sublime_error_message(result) return # Get output csv dir toolingapi_settings = context.get_toolingapi_settings() outputdir = toolingapi_settings["workspace"] + "/describe/layout" # If outputdir is not exist, just make it if not os.path.exists(outputdir): os.makedirs(outputdir) output_file_dir = outputdir + "/" + sobject + "-" + recordtype_name + ".csv" if util.is_python3x(): fp = open(output_file_dir, "w", newline='') else: fp = open(output_file_dir, "wb") util.parse_describe_layout_result(fp, result) print("Layout describe outputdir: " + output_file_dir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399 : util.sublime_error_message(result) return # If totalSize is 0 if "totalSize" in result and result["totalSize"] == 0 : util.sublime_error_message(result) return # Get output csv dir toolingapi_settings = context.get_toolingapi_settings() outputdir = toolingapi_settings["workspace"] + "/describe/layout" # If outputdir is not exist, just make it if not os.path.exists(outputdir): os.makedirs(outputdir) output_file_dir = outputdir + "/" + sobject + "-" + recordtype_name + ".csv" if util.is_python3x(): fp = open(output_file_dir, "w", newline='') else: fp = open(output_file_dir, "wb") util.parse_describe_layout_result(fp, result) print("Layout describe outputdir: " + output_file_dir)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda: handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If create Succeed result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return # Get the created component id component_id = result.get("id") # Save it to component.sublime-settings s = sublime.load_settings(COMPONENT_METADATA_SETTINGS) username = toolingapi_settings["username"] components_dict = s.get(username) components_dict[component_type][component_name] = { "id": component_id, "url": post_url + "/" + component_id, "body": toolingapi_settings[component_type]["body"], "extension": toolingapi_settings[component_type]["extension"], "type": component_type, "is_test": False } s.set(username, components_dict) # Save settings and show success message sublime.save_settings(COMPONENT_METADATA_SETTINGS) print(message.SEPRATE.format(message.CREATE_SUCCESSFULLY)) sublime.status_message(message.CREATE_SUCCESSFULLY)
def handle_new_view_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout( lambda: handle_new_view_thread(thread, timeout), timeout) return elif api.result == None: sublime.status_message(message.TOOLING_API_CONNECTING_FAILED) return # If succeed result = api.result # If error if result["status_code"] > 399: util.sublime_error_message(result) return # No error, just display log in a new view view = sublime.active_window().new_file() view.run_command( "newview", { "name": sobject + " Describe Result", "input": util.parse_sobject_field_result(result) })
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda:handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return # If create Succeed result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return # Get the created component id component_id = result.get("id") # Save it to component.sublime-settings s = sublime.load_settings(COMPONENT_METADATA_SETTINGS) username = toolingapi_settings["username"] components_dict = s.get(username) components_dict[component_type][component_name] = { "id": component_id, "url": post_url + "/" + component_id, "body": toolingapi_settings[component_type]["body"], "extension": toolingapi_settings[component_type]["extension"], "type": component_type, "is_test": False } s.set(username, components_dict) # Save settings and show success message sublime.save_settings(COMPONENT_METADATA_SETTINGS) print (message.SEPRATE.format(message.CREATE_SUCCESSFULLY)) sublime.status_message(message.CREATE_SUCCESSFULLY)
def handle_thread(thread, timeout): if thread.is_alive(): sublime.set_timeout(lambda:handle_thread(thread, timeout), timeout) return elif api.result == None: sublime.error_message(message.AUTHORIZATION_FAILED_MESSAGE) return result = api.result status_code = result["status_code"] if status_code > 399: util.sublime_error_message(result) return fp = open(file_name, "wb") try: body = bytes(result[component_body], "UTF-8") except: body = result[component_body].encode("UTF-8") fp.write(body) print (message.SEPRATE.format(message.GET_SUCCESSFULLY)) sublime.status_message(message.GET_SUCCESSFULLY)