Example #1
0
    def update(self, request, *args, **kwargs):
        """Updates the state of the extension.

        If ``enabled`` is true, then the extension will be enabled, if it is
        not already. If false, it will be disabled.
        """
        # Try to find the registered extension
        try:
            registered_extension = self.get_object(request, *args, **kwargs)
        except ObjectDoesNotExist:
            return DOES_NOT_EXIST

        extension_id = registered_extension.class_name

        if kwargs.get('enabled'):
            try:
                self._extension_manager.enable_extension(extension_id)
            except EnablingExtensionError as e:
                err = ENABLE_EXTENSION_FAILED.with_message(six.text_type(e))

                return err, {
                    'load_error': e.load_error,
                    'needs_reload': e.needs_reload,
                }
            except InvalidExtensionError as e:
                raise
                return ENABLE_EXTENSION_FAILED.with_message(six.text_type(e))
        else:
            try:
                self._extension_manager.disable_extension(extension_id)
            except (DisablingExtensionError, InvalidExtensionError) as e:
                return DISABLE_EXTENSION_FAILED.with_message(six.text_type(e))

        # Refetch extension, since the ExtensionManager may have changed
        # the model.
        registered_extension = \
            RegisteredExtension.objects.get(pk=registered_extension.pk)

        return 200, {
            self.item_result_key: registered_extension
        }
Example #2
0
    def update(self, request, *args, **kwargs):
        """Updates the state of the extension.

        If ``enabled`` is true, then the extension will be enabled, if it is
        not already. If false, it will be disabled.
        """
        # Try to find the registered extension
        try:
            registered_extension = self.get_object(request, *args, **kwargs)
        except ObjectDoesNotExist:
            return DOES_NOT_EXIST

        extension_id = registered_extension.class_name

        if kwargs.get('enabled'):
            try:
                self._extension_manager.enable_extension(extension_id)
            except EnablingExtensionError as e:
                err = ENABLE_EXTENSION_FAILED.with_message(six.text_type(e))

                return err, {
                    'load_error': e.load_error,
                    'needs_reload': e.needs_reload,
                }
            except InvalidExtensionError as e:
                raise
                return ENABLE_EXTENSION_FAILED.with_message(six.text_type(e))
        else:
            try:
                self._extension_manager.disable_extension(extension_id)
            except (DisablingExtensionError, InvalidExtensionError) as e:
                return DISABLE_EXTENSION_FAILED.with_message(six.text_type(e))

        # Refetch extension, since the ExtensionManager may have changed
        # the model.
        registered_extension = \
            RegisteredExtension.objects.get(pk=registered_extension.pk)

        return 200, {
            self.item_result_key: registered_extension
        }
Example #3
0
        try:
            ext_class = self._extension_manager.get_installed_extension(
                registered_extension.class_name)
        except InvalidExtensionError:
            return DOES_NOT_EXIST

        if kwargs.get('enabled'):
            try:
                self._extension_manager.enable_extension(ext_class.id)
            except (EnablingExtensionError, InvalidExtensionError), e:
                return ENABLE_EXTENSION_FAILED.with_message(e.message)
        else:
            try:
                self._extension_manager.disable_extension(ext_class.id)
            except (DisablingExtensionError, InvalidExtensionError), e:
                return DISABLE_EXTENSION_FAILED.with_message(e.message)

        # Refetch extension, since the ExtensionManager may have changed
        # the model.
        registered_extension = self.get_object(request, *args, **kwargs)

        return 200, {
            self.item_result_key: registered_extension
        }

    def get_url_patterns(self):
        # We want extension resource URLs to be dynamically modifiable,
        # so we override get_url_patterns in order to capture and store
        # a reference to the url_patterns at /api/extensions/.

        self._url_patterns = super(ExtensionResource, self).get_url_patterns()
Example #4
0
        try:
            ext_class = self._extension_manager.get_installed_extension(
                registered_extension.class_name)
        except InvalidExtensionError:
            return DOES_NOT_EXIST

        if kwargs.get('enabled'):
            try:
                self._extension_manager.enable_extension(ext_class.id)
            except (EnablingExtensionError, InvalidExtensionError), e:
                return ENABLE_EXTENSION_FAILED.with_message(e.message)
        else:
            try:
                self._extension_manager.disable_extension(ext_class.id)
            except (DisablingExtensionError, InvalidExtensionError), e:
                return DISABLE_EXTENSION_FAILED.with_message(e.message)

        # Refetch extension, since the ExtensionManager may have changed
        # the model.
        registered_extension = self.get_object(request, *args, **kwargs)

        return 200, {self.item_result_key: registered_extension}

    def get_url_patterns(self):
        # We want extension resource URLs to be dynamically modifiable,
        # so we override get_url_patterns in order to capture and store
        # a reference to the url_patterns at /api/extensions/.

        self._url_patterns = super(ExtensionResource, self).get_url_patterns()

        # It's possible that some extensions were initialized before