예제 #1
0
class ComponentEdit(View, Controller):
    """Component Edit Page Controller"""

    template_name = 'templates/admin/component/edit.html'

    @login_if_not_authenticated
    def get(self, request, component_id):

        self.__component = ComponentModule()
        component = self.__component.get_one_by_id(component_id)

        if not component:
            raise Http404("Component not found.")

        self.autoload_options()
        self.autoload_user(
            request.user.id if request.user.is_authenticated else None)
        self.context_push({
            "page_title":
            _("Edit Component · %s") %
            self.context_get("app_name", os.getenv("APP_NAME", "Silverback")),
            "component":
            component,
            "groups":
            self.__component.get_all_groups()
        })

        return render(request, self.template_name, self.context_get())
예제 #2
0
class BuilderComponents(View, Controller):
    """Add and Remove Builder Components Private Endpoint Controller"""
    def __init__(self):
        self.__settings = Settings()
        self.__component = ComponentModule()
        self.__component_group = ComponentGroupModule()

    @allow_if_authenticated_and_has_permission("manage_settings")
    def post(self, request):

        request_data = self.get_request_data(request, "post",
                                             {"component_id": ""})

        if request_data["component_id"] == "" or (
                "c-" not in request_data["component_id"]
                and "g-" not in request_data["component_id"]):
            return self.json([{
                "type":
                "error",
                "message":
                _("Error! Compnent or compnent group is required.")
            }])

        if "c-" in request_data[
                "component_id"] and not self.__component.get_one_by_id(
                    request_data["component_id"].replace("c-", "")):
            return self.json([{
                "type":
                "error",
                "message":
                _("Error! Compnent or compnent group is required.")
            }])

        if "g-" in request_data[
                "component_id"] and not self.__component_group.get_one_by_id(
                    request_data["component_id"].replace("g-", "")):
            return self.json([{
                "type":
                "error",
                "message":
                _("Error! Compnent or compnent group is required.")
            }])

        components = self.__settings.get_value_by_key("builder_components",
                                                      json.dumps([]))

        components = json.loads(components)

        if request_data["component_id"] in components:
            return self.json([{
                "type": "success",
                "message": _("Component added successfully.")
            }])

        components.append(request_data["component_id"])

        result = self.__settings.update_options(
            {"builder_components": json.dumps(components)})

        if result:
            return self.json([{
                "type": "success",
                "message": _("Component added successfully.")
            }])

        else:
            return self.json([{
                "type":
                "error",
                "message":
                _("Error! Something goes wrong while adding component.")
            }])

    @allow_if_authenticated_and_has_permission("manage_settings")
    def delete(self, request, component_id):

        components = self.__settings.get_value_by_key("builder_components",
                                                      json.dumps([]))

        components = json.loads(components)

        if component_id not in components:
            return self.json([{
                "type": "success",
                "message": _("Component deleted successfully.")
            }])

        components.remove(component_id)

        result = self.__settings.update_options(
            {"builder_components": json.dumps(components)})

        if result:
            return self.json([{
                "type": "success",
                "message": _("Component deleted successfully.")
            }])

        else:
            return self.json([{
                "type":
                "error",
                "message":
                _("Error! Something goes wrong while deleting component.")
            }])
예제 #3
0
class BuilderComponents(View):

    __request = None
    __response = None
    __helpers = None
    __form = None
    __logger = None
    __user_id = None
    __settings = None
    __component = None
    __component_group = None
    __correlation_id = None

    def __init__(self):
        self.__request = Request()
        self.__response = Response()
        self.__helpers = Helpers()
        self.__settings = Settings()
        self.__component = ComponentModule()
        self.__component_group = ComponentGroupModule()
        self.__form = Form()
        self.__logger = self.__helpers.get_logger(__name__)
        self.__form.add_validator(ExtraRules())

    @allow_if_authenticated_and_has_permission("manage_settings")
    def post(self, request):

        self.__correlation_id = request.META[
            "X-Correlation-ID"] if "X-Correlation-ID" in request.META else ""
        self.__request.set_request(request)
        request_data = self.__request.get_request_data("post",
                                                       {"component_id": ""})

        if request_data["component_id"] == "":
            return JsonResponse(
                self.__response.send_private_failure([{
                    "type":
                    "error",
                    "message":
                    _("Error! Compnent or compnent group is required.")
                }], {}, self.__correlation_id))

        if not self.__component.get_one_by_id(
                request_data["component_id"]
        ) and not self.__component_group.get_one_by_id(
                request_data["component_id"]):
            return JsonResponse(
                self.__response.send_private_failure([{
                    "type":
                    "error",
                    "message":
                    _("Error! Compnent or compnent group is required.")
                }], {}, self.__correlation_id))

        components = self.__settings.get_value_by_key("builder_components",
                                                      json.dumps([]))

        components = json.loads(components)

        if request_data["component_id"] in components:
            return JsonResponse(
                self.__response.send_private_success(
                    [{
                        "type": "success",
                        "message": _("Component added successfully.")
                    }], {}, self.__correlation_id))

        components.append(request_data["component_id"])

        result = self.__settings.update_options(
            {"builder_components": json.dumps(components)})

        if result:
            return JsonResponse(
                self.__response.send_private_success(
                    [{
                        "type": "success",
                        "message": _("Component added successfully.")
                    }], {}, self.__correlation_id))

        else:
            return JsonResponse(
                self.__response.send_private_failure([{
                    "type":
                    "error",
                    "message":
                    _("Error! Something goes wrong while adding component.")
                }], {}, self.__correlation_id))

    @allow_if_authenticated_and_has_permission("manage_settings")
    def delete(self, request, component_id):

        self.__correlation_id = request.META[
            "X-Correlation-ID"] if "X-Correlation-ID" in request.META else ""
        components = self.__settings.get_value_by_key("builder_components",
                                                      json.dumps([]))

        components = json.loads(components)

        if component_id not in components:
            return JsonResponse(
                self.__response.send_private_success(
                    [{
                        "type": "success",
                        "message": _("Component deleted successfully.")
                    }], {}, self.__correlation_id))

        components.remove(component_id)

        result = self.__settings.update_options(
            {"builder_components": json.dumps(components)})

        if result:
            return JsonResponse(
                self.__response.send_private_success(
                    [{
                        "type": "success",
                        "message": _("Component deleted successfully.")
                    }], {}, self.__correlation_id))

        else:
            return JsonResponse(
                self.__response.send_private_failure([{
                    "type":
                    "error",
                    "message":
                    _("Error! Something goes wrong while deleting component.")
                }], {}, self.__correlation_id))