def select_to_download_file_list_page(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_json = download_services.file_list(request_json)
        return render(request, "download_file_list.html", result_json)

    return page_error_check(after_check)
def environment_select_page(request):
    def after_check():
        countries = Country.objects.all()
        environments = Environment.objects.filter(active=1)

        response = {
            key.ENVIRONMENT_SELECT_COUNTRY:
            CountriesBuilder(countries=countries).get_data(),
            key.ENVIRONMENT_SELECT_ENVIRONMENT:
            EnvironmentsBuilder(environments=environments).get_data()
        }

        if request.method == REQUEST_GET:
            return render(request, "environment_select.html", response)
        elif request.method == REQUEST_POST:
            country_id = request.POST.get('country')
            base_env_id = request.POST.get('base_env')
            compare_env_id = request.POST.get('compare_env')

            if not country_id or not base_env_id or not compare_env_id or base_env_id == compare_env_id:
                return render(request, "environment_select.html", response)
            else:
                data = services.compare_rule_list_rule_set(
                    base_env_id, compare_env_id, country_id)
                return render(request, "rule_item_list.html", data)

    return page_error_check(after_check)
def select_to_download_filter_module_folder(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_json = download_services.filter_second_folder(request_json)
        return render(request, "dropdown_component.html", result_json)

    return page_error_check(after_check)
def select_to_download_page(request):
    def after_check():
        regions = compare_services.get_active_region_list()
        response = ResponseBuilder(data=regions).get_data()
        return render(request, "select_to_download.html", response)

    return page_error_check(after_check)
def select_to_download_filter_folder(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_json = download_services.get_environment_dir_list(request_json)
        return render(request, "dropdown_component.html", result_json)

    return page_error_check(after_check)
def rule_download_filter_page(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_data = services.get_filtered_ruleset_page_data(request_json)
        return render(request, "rule_download_table.html", result_data)

    return page_error_check(after_check)
def select_to_compare_filter_environment(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_json = compare_services.get_region_environment_list(
            request_json)
        return render(request, "select_to_compare_dropdown.html", result_json)

    return page_error_check(after_check)
def ruleset_detail_backup_page(request, backup_key, backup_folder,
                               ruleset_name):
    def after_check():
        data = services.ruleset_detail_backup_page_data(
            backup_key, backup_folder, ruleset_name)
        return render(request, "rule_show_detail.html", data)

    return page_error_check(after_check)
def select_to_compare_result_page(request, root_key):
    def after_check():
        result_json = load_folder_file_diff_json(root_key)
        response = ResponseBuilder(data=result_json).get_data()
        return render(request, "shared_storage_folder_compare_result.html",
                      response)

    return page_error_check(after_check)
def ruleset_diff_backup_page(request, backup_key, ruleset_name):
    def after_check():
        data = services.ruleset_diff_backup(backup_key, ruleset_name)
        if data[KEY_HAS_CHANGES] is False:
            result = ResponseBuilder(status_code=COMPARE_NO_CHANGES).get_data()
            return JsonResponse(result)
        else:
            return render(request, "rule_show_diff.html", data)

    return page_error_check(after_check)
def ruleset_detail_page(request,
                        environment_id,
                        country_id,
                        ruleset_name,
                        compare_key=None):
    def after_check():
        data = services.ruleset_detail_page_data(environment_id, country_id,
                                                 ruleset_name, compare_key)
        return render(request, "rule_show_detail.html", data)

    return page_error_check(after_check)
def select_to_download_filter_result_page(request):
    def after_check():
        request_json = get_post_request_json(request)
        result_json = download_services.filter_file_result(request_json)
        result_data_list = result_json.get(KEY_DATA)
        if len(result_data_list) == 0:
            result = ResponseBuilder(status_code=SUCCESS_NO_DATA).get_data()
            return JsonResponse(result)
        else:
            return render(request, "download_filter_result.html", result_json)

    return page_error_check(after_check)
def send_compare_result_mail(request):
    def after_check():
        left_region_id = 6
        left_environment_id = 6
        left_folder = "kr"
        right_region_id = 8
        right_environment_id = 7
        right_folder = "kr"
        result_json = compare_services.compare_shared_storage_folder(
            left_region_id, left_environment_id, left_folder, right_region_id,
            right_environment_id, right_folder, True, CURRENT_REGION,
            request.get_host())
        compare_services.send_shared_storage_compare_result_mail(result_json)

    return page_error_check(after_check)
def select_to_compare_file_detail_page(request, side, root_key, node_key,
                                       diff_result, file_type):
    def after_check():
        if file_type not in COMPARE_TYPE_WHITE_LIST:
            result = ResponseBuilder(
                status_code=NOT_SUPPORT_PREVIEW).get_data()
            return JsonResponse(result)

        if diff_result == "same":
            result_json = BindFileSameDetailBuilder(side, root_key,
                                                    node_key).get_data()
        else:
            result_json = BindFileDetailBuilder(side, root_key,
                                                node_key).get_data()

        response = ResponseBuilder(data=result_json).get_data()
        return render(request, "shared_storage_file_detail.html", response)

    return page_error_check(after_check)
def select_to_compare_file_diff_page(request, root_key, node_key, type):
    def after_check():
        if type not in COMPARE_TYPE_WHITE_LIST:
            result = ResponseBuilder(
                status_code=NOT_SUPPORT_PREVIEW).get_data()
            return JsonResponse(result)
        else:
            result_json = BindFolderFileDiffResultBuilder(root_key,
                                                          node_key).get_data()
            if type == KEY_PROPERTIES:
                response = ResponseBuilder(data=result_json).get_data()
                return render(request,
                              "shared_storage_properties_file_diff.html",
                              response)
            else:
                response = ResponseBuilder(data=result_json).get_data()
                return render(request, "shared_storage_string_file_diff.html",
                              response)

    return page_error_check(after_check)
def select_to_compare_page(request):
    def after_check():
        if request.method == REQUEST_GET:
            regions = compare_services.get_active_region_list()
            response = ResponseBuilder(data=regions).get_data()
            return render(request, "select_to_compare.html", response)
        elif request.method == REQUEST_POST:
            left_region_id = request.POST.get('left_region_id')
            left_environment_id = request.POST.get('left_environment_id')
            left_folder = request.POST.get('left_folder')
            right_region_id = request.POST.get('right_region_id')
            right_environment_id = request.POST.get('right_environment_id')
            right_folder = request.POST.get('right_folder')
            #
            result_json = compare_services.compare_shared_storage_folder(
                left_region_id, left_environment_id, left_folder,
                right_region_id, right_environment_id, right_folder, False)
            #
            response = ResponseBuilder(data=result_json).get_data()
            return render(request, "shared_storage_folder_compare_result.html",
                          response)

    return page_error_check(after_check)
def rule_download_page(request):
    def after_check():
        page_data = RulesetDownloadPageBuilder().get_data()
        return render(request, "rule_download.html", page_data)

    return page_error_check(after_check)