def _init_extension(self, ext_class): """Initializes an extension. This will register the extension, install any URLs that it may need, and make it available in Django's list of apps. It will then notify that the extension has been initialized. """ assert ext_class.id not in self._extension_instances extension = ext_class() extension.extension_manager = self self._extension_instances[extension.id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._reset_templatetags_cache() extension_initialized.send(self, ext_class=extension) return extension
def _init_extension(self, ext_class): """Initializes an extension. This will register the extension, install any URLs that it may need, and make it available in Django's list of apps. It will then notify that the extension has been initialized. """ extension_id = ext_class.id assert extension_id not in self._extension_instances try: extension = ext_class(extension_manager=self) except Exception as e: logging.error('Unable to initialize extension %s: %s' % (ext_class, e), exc_info=1) error_details = self._store_load_error(extension_id, e) raise EnablingExtensionError( _('Error initializing extension: %s') % e, error_details) if extension_id in self._load_errors: del self._load_errors[extension_id] self._extension_instances[extension_id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) self._register_static_bundles(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._context_processors_setting.add_list(extension.context_processors) clear_template_tag_caches() ext_class.instance = extension try: self.install_extension_media(ext_class) except InstallExtensionError as e: raise EnablingExtensionError(e.message, e.load_error) self._sync_database(ext_class) # Mark the extension as installed. ext_class.registration.installed = True ext_class.registration.save() extension_initialized.send(self, ext_class=extension) return extension
def _init_extension(self, ext_class): """Initializes an extension. This will register the extension, install any URLs that it may need, and make it available in Django's list of apps. It will then notify that the extension has been initialized. """ extension_id = ext_class.id assert extension_id not in self._extension_instances try: extension = ext_class(extension_manager=self) except Exception as e: logging.error('Unable to initialize extension %s: %s' % (ext_class, e), exc_info=1) error_details = self._store_load_error(extension_id, e) raise EnablingExtensionError( _('Error initializing extension: %s') % e, error_details) if extension_id in self._load_errors: del self._load_errors[extension_id] self._extension_instances[extension_id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) self._register_static_bundles(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._context_processors_setting.add_list(extension.context_processors) self._reset_templatetags_cache() ext_class.instance = extension try: self._install_extension_media(ext_class) except InstallExtensionError as e: raise EnablingExtensionError(e.message, e.load_error) extension_initialized.send(self, ext_class=extension) return extension
def _init_extension(self, ext_class): """Initializes an extension. This will register the extension, install any URLs that it may need, and make it available in Django's list of apps. It will then notify that the extension has been initialized. """ assert ext_class.id not in self._extension_instances extension = ext_class() extension.extension_manager = self self._extension_instances[extension.id] = extension if extension.is_configurable: self._install_admin_urls(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._reset_templatetags_cache() extension_initialized.send(self, ext_class=extension) return extension
e) self._extension_instances[extension.id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._reset_templatetags_cache() extension_initialized.send(self, ext_class=extension) return extension def _uninit_extension(self, extension): """Uninitializes the extension. This will shut down the extension, remove any URLs, remove it from Django's list of apps, and send a signal saying the extension was shut down. """ extension.shutdown() if hasattr(extension, "admin_urlpatterns"): self.dynamic_urls.remove_patterns(extension.admin_urlpatterns)
% e) self._extension_instances[extension.id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._reset_templatetags_cache() extension_initialized.send(self, ext_class=extension) return extension def _uninit_extension(self, extension): """Uninitializes the extension. This will shut down the extension, remove any URLs, remove it from Django's list of apps, and send a signal saying the extension was shut down. """ extension.shutdown() if hasattr(extension, "admin_urlpatterns"): self.dynamic_urls.remove_patterns( extension.admin_urlpatterns)
def _init_extension(self, ext_class): """Initializes an extension. This will register the extension, install any URLs that it may need, and make it available in Django's list of apps. It will then notify that the extension has been initialized. """ extension_id = ext_class.id assert extension_id not in self._extension_instances try: extension = ext_class(extension_manager=self) except Exception as e: logger.exception('Unable to initialize extension %s: %s', ext_class, e) error_details = self._store_load_error(extension_id, e) raise EnablingExtensionError( _('Error initializing extension: %s') % e, error_details) if extension_id in self._load_errors: del self._load_errors[extension_id] self._extension_instances[extension_id] = extension if extension.has_admin_site: self._init_admin_site(extension) # Installing the urls must occur after _init_admin_site(). The urls # for the admin site will not be generated until it is called. self._install_admin_urls(extension) self._register_static_bundles(extension) extension.info.installed = extension.registration.installed extension.info.enabled = True self._add_to_installed_apps(extension) self._context_processors_setting.add_list(extension.context_processors) clear_template_tag_caches() ext_class.instance = extension try: self.install_extension_media(ext_class) except InstallExtensionError as e: raise EnablingExtensionError(e.message, e.load_error) # Check if the version information stored along with the extension is # stale. If so, we may need to perform some updates. cur_version = ext_class.info.version if ext_class.registration.installed: old_version = extension.settings.get(self.VERSION_SETTINGS_KEY) else: old_version = None if (not old_version or pkg_resources.parse_version(old_version) < pkg_resources.parse_version(cur_version)): # We may need to update the database. self._sync_database(ext_class) # Record this version so we don't update the database again. extension.settings.set(self.VERSION_SETTINGS_KEY, cur_version) extension.settings.save() elif (old_version and pkg_resources.parse_version(old_version) > pkg_resources.parse_version(cur_version)): logging.warning('The version of the "%s" extension installed on ' 'the server is older than the version recorded ' 'in the database! Upgrades will not be performed.', ext_class) # Mark the extension as installed. ext_class.registration.installed = True ext_class.registration.save() extension_initialized.send(self, ext_class=extension) return extension