Source code for project_composer.contrib.django.helpers


[docs]def project_settings(composer, base_classes=None, name=None): """ Build composed settings class for given composer. Arguments: composer (project_composer.compose.Composer): Composer instance. Keyword Arguments: base_classes (list): A list of base classes inheritage to build the settings class. Default to empty list. name (string): Class name to set. Default to ``ComposedProjectSettings``. Returns: object: Composed settings class. """ base_classes = base_classes or [] name = name or "ComposedProjectSettings" # Search for all enabled classes classes = composer.call_processor("DjangoSettingsProcessor", "export") # Reverse the list since Python class inheritance order start from the last # statement to the first classes.reverse() # Return built settings class from composed settings classes return type(name, tuple(classes + base_classes), {})
[docs]def project_urls(composer, settings, base_classes=None, name=None): """ Build composed urls collector class for given composer. Arguments: composer (project_composer.compose.Composer): Composer instance. settings (django.conf.settings): Django settings to give to the collector. Keyword Arguments: base_classes (list): A list of base classes inheritage to build the settings class. Default to empty list. name (string): Class name to set. Default to ``ComposedProjectSettings``. Returns: list: List of collected url patterns (like ``django.urls.path`` or ``django.urls.re_path``) from all application urls classes. """ base_classes = base_classes or [] name = name or "ComposedProjectUrls" # Search for all enabled classes classes = composer.call_processor("DjangoUrlsProcessor", "export") # Build Urls class from composed urls composed = type(name, tuple(classes + base_classes), {}) # Collect and return applications urls mounter = composed(settings) return mounter.collect()