class TestExtension(Extension): """An example extension.""" extension_id = \ 'djblets.webapi.tests.test_oauth2_scopes.TestExtension' resources = [cls._extension_resource] registration = RegisteredExtension()
class SandboxExtension(Extension): registration = RegisteredExtension() metadata = { 'Name': 'Sandbox Extension', } id = 'reviewboard.extensions.tests.SandboxExtension' def __init__(self, *args, **kwargs): super(SandboxExtension, self).__init__(*args, **kwargs)
class WebAPICapabilitiesExtension(Extension): registration = RegisteredExtension() metadata = { 'Name': 'Web API Capabilities Extension', } id = 'WebAPICapabilitiesExtension' def __init__(self, *args, **kwargs): super(WebAPICapabilitiesExtension, self).__init__(*args, **kwargs)
class SandboxExtension(Extension): registration = RegisteredExtension() metadata = { 'Name': 'Sandbox Extension', } def __init__(self, *args, **kwargs): super(SandboxExtension, self).__init__(*args, **kwargs) ReviewRequestApprovalTestHook(self)
class DummyExtension(Extension): registration = RegisteredExtension()
def load(self): """ Loads all known extensions, initializing any that are recorded as being enabled. If this is called a second time, it will refresh the list of extensions, adding new ones and removing deleted ones. """ # Preload all the RegisteredExtension objects registered_extensions = {} for registered_ext in RegisteredExtension.objects.all(): registered_extensions[registered_ext.class_name] = registered_ext found_extensions = {} # Reload pkg_resources import pkg_resources if pkg_resources: del pkg_resources del sys.modules['pkg_resources'] import pkg_resources for entrypoint in self._entrypoint_iterator(): registered_ext = None try: ext_class = entrypoint.load() # Don't override the info if we've previously loaded this # class. if not getattr(ext_class, "info", None): ext_class.info = ExtensionInfo(entrypoint, ext_class) except Exception, e: print "Error loading extension %s: %s" % (entrypoint.name, e) continue # A class's extension ID is its class name. We want to # make this easier for users to access by giving it an 'id' # variable, which will be accessible both on the class and on # instances. class_name = ext_class.id = "%s.%s" % (ext_class.__module__, ext_class.__name__) self._extension_classes[class_name] = ext_class found_extensions[class_name] = ext_class # If the ext_class has a registration variable that's set, then # it's already been loaded. We don't want to bother creating a # new one. if not hasattr(ext_class, "registration"): if class_name in registered_extensions: registered_ext = registered_extensions[class_name] else: try: registered_ext = RegisteredExtension.objects.get( class_name=class_name) except RegisteredExtension.DoesNotExist: registered_ext = RegisteredExtension( class_name=class_name, name=entrypoint.dist.project_name ) registered_ext.save() ext_class.registration = registered_ext if (ext_class.registration.enabled and not ext_class.id in self._extension_instances): self._init_extension(ext_class)
class SandboxExtension(Extension): registration = RegisteredExtension() metadata = { 'Name': 'Sandbox Extension', } id = 'reviewboard.extensions.tests.SandboxExtension'