Esempio n. 1
0
 def update(self, params):
     """Update a config value."""
     if not self.user.is_superuser:
         raise HandlerPermissionError()
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     if "value" not in params:
         raise HandlerValidationError("Missing value in params")
     name = params["name"]
     value = params["value"]
     try:
         form = get_config_form(name, {name: value})
     except ValidationError:
         raise HandlerDoesNotExistError(name)
     if form.is_valid():
         try:
             request = HttpRequest()
             request.user = self.user
             form.save(ENDPOINT.UI, request)
         except ValidationError as e:
             self._fix_validation_error(name, e.error_dict)
             raise HandlerValidationError(e.error_dict)
         return self._include_choice(
             {"name": name, "value": Config.objects.get_config(name)}
         )
     else:
         self._fix_validation_error(name, form.errors)
         raise HandlerValidationError(form.errors)
Esempio n. 2
0
 def update(self, params):
     """Update a config value."""
     assert reload_object(self.user).is_superuser, "Permission denied."
     if 'name' not in params:
         raise HandlerPKError("Missing name in params")
     if 'value' not in params:
         raise HandlerValidationError("Missing value in params")
     name = params['name']
     value = params['value']
     form = get_config_form(name, {name: value})
     if form.is_valid():
         try:
             form.save()
         except ValidationError as e:
             self._fix_validation_error(name, e.error_dict)
             raise HandlerValidationError(e.error_dict)
         return self._include_choice({
             'name':
             name,
             'value':
             Config.objects.get_config(name),
         })
     else:
         self._fix_validation_error(name, form.errors)
         raise HandlerValidationError(form.errors)
Esempio n. 3
0
 def get(self, params):
     """Get a config value."""
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     name = params["name"]
     if name not in get_config_keys(self.user):
         raise HandlerDoesNotExistError(name)
     self.cache["loaded_pks"].update({name})
     return self.dehydrate_configs([name])[0]
Esempio n. 4
0
 def get_node(self, params):
     """Get node object from params"""
     if "node_id" not in params:
         raise HandlerPKError("Missing node_id in params")
     node_id = params["node_id"]
     try:
         node = Node.objects.get(id=node_id)
     except Node.DoesNotExist:
         raise HandlerDoesNotExistError(node_id)
     return node
Esempio n. 5
0
 def get(self, params):
     """Get a config value."""
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     name = params["name"]
     if name not in CONFIG_ITEMS:
         raise HandlerDoesNotExistError(name)
     self.cache["loaded_pks"].update({name})
     return self._include_choice(
         {"name": name, "value": Config.objects.get_config(name)}
     )
Esempio n. 6
0
    def get_node(self, params):
        """Get node object from params."""
        if "system_id" not in params:
            raise HandlerPKError("Missing system_id in params")
        system_id = params["system_id"]

        if system_id in self.cache["system_ids"]:
            return self.cache["system_ids"][system_id]

        try:
            node = Node.objects.get(system_id=params["system_id"])
        except Node.DoesNotExist:
            raise HandlerDoesNotExistError(params["system_id"])

        self.cache["system_ids"][system_id] = node
        return node
Esempio n. 7
0
    def list(self, params):
        """List NodeDevice objects.

        :param system_id: `Node.system_id` for the NodeDevices.
        """
        if "system_id" not in params:
            raise HandlerPKError("Missing system_id in params")
        system_id = params["system_id"]

        qs = self.get_queryset(for_list=True)
        qs = qs.filter(node__system_id=system_id)

        objs = list(qs)
        getpk = attrgetter(self._meta.pk)
        self.cache["loaded_pks"].update(getpk(obj) for obj in objs)
        return [self.full_dehydrate(obj, for_list=True) for obj in objs]