def parse_diff_line_sign_object(self, diff_line_str): # ex. \x00-# 3 = both\x01 # split_str_list = ["","# 3 = both\x01"] # split_str_list2 = ["# 3 = both",""] split_str_list = diff_line_str.split(KEY_END_SIGN) if "" in split_str_list: split_str_list.remove("") for string in split_str_list: if KEY_START_SIGN not in string: self.add_to_tmp_context(string, KEY_CONTEXT) else: if KEY_ADDED_SIGN in string: split_str_list2 = string.split(KEY_ADDED_SIGN) result_type = KEY_ADDED elif KEY_DELETED_SIGN in string: split_str_list2 = string.split(KEY_DELETED_SIGN) result_type = KEY_DELETED else: split_str_list2 = string.split(KEY_CHANGED_SIGN) result_type = KEY_CHANGED if split_str_list2[0] is not "": self.add_to_tmp_context(split_str_list2[0], KEY_CONTEXT) try: self.add_to_tmp_context(split_str_list2[1], result_type) except IndexError: error_log("index out of range, line text: " + diff_line_str) self.result_list.sort(key=lambda x: x.get(KEY_INDEX), reverse=False)
def get_latest_version(self, node_path): entries = self.get_path_list_dir(node_path) for entry in entries: if entry.filename.lower() == 'lastversion.dat': last_version_path = node_path + "/" + entry.filename last_version = self.get_path_file(last_version_path, COMPARE_FILE_PATH + 'lastversion.dat') return last_version error_log("can't find lastversion.dat file")
def parse_role_permission_objects(self): try: data_object = {KEY_ENVIRONMENT: EnvironmentBuilder(id=self.environment_id).get_data(), KEY_FUNCTION_ROLE_PERMISSION: self.parse_function_role_permission_array(self.environment_id)} return data_object except Exception as e: error_log(e) traceback.format_exc()
def get_post_request_json(request): if request.method != REQUEST_POST: return HttpResponseBadRequest else: try: request_json = json.loads(request.body.decode()) return request_json except BaseException: error_log(traceback.format_exc())
def permission_check(request, executor): try: return executor() except PermissionDeniedError: data = ResponseBuilder(status_code=PERMISSION_DENIED, message=PERMISSION_DENIED_MESSAGE).get_data() return render(request, "permission_denied.html", data) except Exception: error_log(traceback.format_exc()) result = ResponseBuilder(status_code=500, message="Internal Server Error").get_data() return JsonResponse(result)
def execute(self): try: self.delete_files = clear_folder_over_days( self.delete_files_path, self.expired_day, self.not_removed_files_extension) except BaseException as e: self.run_task_error = e self.tracback = traceback.format_exc() error_log(traceback.format_exc()) raise e
def action_error_check(executor): try: return executor() except B2BRulesetNotFoundError: result = ResponseBuilder(status_code=RULESET_NOT_FOUND, message=RULESET_NOT_FOUND_MESSAGE).get_data() return JsonResponse(result) except Exception: error_log(traceback.format_exc()) result = ResponseBuilder(status_code=500, message="Internal Server Error").get_data() return JsonResponse(result)
def get_environment_dir_list(json_data): parser = SelectToDownloadFilterFolderParser(json_data) environment = Environment.objects.get(id=parser.environment_id) try: if environment.name == GIT_NAME: dir_connect_obj = SharedStorageGitConnectObject(False) else: dir_connect_obj = SharedStorageConnectionObject( parser.region_id, parser.environment_id, False) except Exception: error_log(traceback.format_exc()) raise SharedStorageFTPServerConnectFailError list_dir = dir_connect_obj.get_path_list_dir("") result_json = SelectToDownloadFilterDirFolderBuilder("folder", list_dir).get_data() return result_json
def run_scheduler_now(json_data, user): try: SharedStorageReportPermissionChecker(user) scheduler = SharedStorageReportScheduler.objects.get( id=json_data.get("id")) parser = DBReportSchedulerParser(scheduler) result_json = compare_services.compare_shared_storage_folder( parser.left_data_center_id, parser.left_environment_id, parser.left_folder, parser.right_data_center_id, parser.right_environment_id, parser.right_folder, True, parser.regional_tag, parser.request_host) compare_services.send_shared_storage_compare_result_mail( result_json, parser.mail_list) except Exception as e: error_log(e) error_log(traceback.format_exc())
def get_format_time(utc_date_time): try: if utc_date_time is None: return None time_zone = CURRENT_TIME_ZONE time_format = TIME_FORMAT.get('db_time_format') naive_time = get_naive_time(utc_date_time.year, utc_date_time.month, utc_date_time.day, utc_date_time.hour, utc_date_time.minute, utc_date_time.second) local_date_time = utc_to_locale_time(naive_time, time_zone) str_time = date_time_to_time(local_date_time, time_format) return str_time except Exception as e: error_log(traceback.format_exc()) raise e
def run_scheduler_now(json_data, user): try: scheduler = ReportSchedulerInfo.objects.get(id=json_data.get(KEY_ID)) country_id_list = scheduler.country_list.values(KEY_ID) mail_content_type_list = scheduler.mail_content_type_list.values( KEY_ID) parser = DBReportSchedulerParser(scheduler, country_id_list, mail_content_type_list) base_env = Environment.objects.get(id=parser.base_env_id) compare_env = Environment.objects.get(id=parser.compare_env_id) RulesetReportPermissionChecker(user, parser.country_list, base_env.id, compare_env.id) for country in parser.country_list: country_id = str(country.id) if country_id in parser.skip_ruleset_map: skipped_rulesets = parser.skip_ruleset_map[country_id] else: skipped_rulesets = list() task = CompareRuleListTask(base_env.id, compare_env.id, country.id, skipped_rulesets) # generate mail content result_data = fileManager.load_compare_result_file( task.compare_hash_key) info_builder = CompareReportInfoBuilder( result_data, parser.mail_content_type_list, skipped_rulesets) content_json = info_builder.get_data() html_content = render_to_string('compare_info_mail_content.html', content_json) if content_json[COMPARE_RESULT_HAS_CHANGES]: zip_file_path = generate_report_mail_attachment(task) send_report_mail_with_attachment(country.name, base_env.name, compare_env.name, html_content, parser.mail_list, zip_file_path) else: send_report_mail(country.name, base_env.name, compare_env.name, html_content, parser.mail_list) except Exception as e: error_log(e) error_log(traceback.format_exc())
def page_permission_check(request, check_visibility, get_visible_data, executor): try: check_visibility() return executor(get_visible_data()) except NoAvailableDataError: data = ResponseBuilder(status_code=NO_AVAILABLE_DATA, message=NO_AVAILABLE_DATA_MESSAGE).get_data() return JsonResponse(data) except PermissionDeniedError: data = ResponseBuilder(status_code=PERMISSION_DENIED, message=PERMISSION_DENIED_MESSAGE).get_data() return render(request, "permission_denied.html", data) except Exception: error_log(traceback.format_exc()) result = ResponseBuilder(status_code=500, message="Internal Server Error").get_data() return JsonResponse(result)
def parse_diff_line_sign_object(self, diff_line_str): # ex. \x00-# 3 = both\x01 # split_str_list = ["","# 3 = both\x01"] # split_str_list2 = ["# 3 = both",""] index = 0 split_str_list = diff_line_str.split(KEY_END_SIGN) if "" in split_str_list: split_str_list.remove("") for string in split_str_list: if KEY_START_SIGN not in string: self.result_list.append( self.build_line_object(KEY_CONTEXT, string, index)) else: if KEY_ADDED_SIGN in string: split_str_list2 = string.split(KEY_ADDED_SIGN) result_type = KEY_ADDED elif KEY_DELETED_SIGN in string: split_str_list2 = string.split(KEY_DELETED_SIGN) result_type = KEY_DELETED else: split_str_list2 = string.split(KEY_CHANGED_SIGN) result_type = KEY_CHANGED self.type = result_type if split_str_list2[0] is not "": index = index + 1 self.result_list.append( self.build_line_object(KEY_CONTEXT, split_str_list2[0], index)) try: self.result_list.append( self.build_line_object(result_type, split_str_list2[1], index)) except IndexError: error_log("index out of range, line text: " + diff_line_str) index = index + 1 self.result_list.sort(key=lambda x: x.get(KEY_INDEX), reverse=False) if len(self.result_list) > 1: self.type = KEY_CHANGED
def page_error_check(executor): try: return executor() except B2BRulesetNotFoundError: result = ResponseBuilder(status_code=RULESET_NOT_FOUND, message=RULESET_NOT_FOUND_MESSAGE).get_data() return JsonResponse(result) except SharedStorageFTPServerConnectFailError: result = ResponseBuilder( status_code=CANT_CONNECT_FTP_SERVER, message=CONNECT_TO_FTP_SERVER_FAIL_MESSAGE).get_data() return JsonResponse(result) except SharedStorageFolderNotFoundError: result = ResponseBuilder(status_code=FOLDER_NOT_EXIST, message=FOLDER_NOT_EXIST_MESSAGE).get_data() return JsonResponse(result) except Exception: error_log(traceback.format_exc()) result = ResponseBuilder(status_code=500, message="Internal Server Error").get_data() return JsonResponse(result)
def restart_all_scheduler(): try: # clear zip and ruleset file scheduler clear_zip_ruleset_task = ClearRulesetArchivedFilesTask() clear_ruleset_task = ClearRulesetFilesTask() clear_compare_report_task = ClearCompareReportFilesTask() clear_ss_tmp_file_task = ClearTmpFilesTask() clear_ss_compare_result_task = ClearCompareResultTask() info_log(None, "restart clear scheduler") scheduler = CustomJobScheduler() scheduler.add_hours_job_now(clear_ruleset_task.run_task, 24) scheduler.add_hours_job_now(clear_zip_ruleset_task.run_task, 24) scheduler.add_hours_job_now(clear_compare_report_task.run_task, 24) scheduler.add_hours_job_now(clear_ss_tmp_file_task.run_task, 24) scheduler.add_hours_job_now(clear_ss_compare_result_task.run_task, 24) info_log(None, "restart clear scheduler success") report_scheduler.restart_schedulers() sync_scheduler.restart_schedulers() shared_storage_report_scheduler.restart_schedulers() except BaseException as e: error_log(traceback.format_exc()) raise e