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())
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.") }])
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))