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 }
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()
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