diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index e5051dc7a71..58a2370e05e 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -529,17 +529,36 @@ class AddonsConfigForm(forms.ModelForm): class Meta: model = AddonsConfig - fields = ("enabled", "project") + fields = ( + "enabled", + "project", + "analytics_enabled", + "doc_diff_enabled", + "external_version_warning_enabled", + "flyout_enabled", + "hotkeys_enabled", + "search_enabled", + "stable_latest_version_warning_enabled", + ) + labels = { + "enabled": _("Enable Addons"), + "external_version_warning_enabled": _( + "Show a notification on builds from pull requests" + ), + "stable_latest_version_warning_enabled": _( + "Show a notification on non-stable and latest versions" + ), + } def __init__(self, *args, **kwargs): self.project = kwargs.pop("project", None) - kwargs["instance"] = getattr(self.project, "addons", None) - super().__init__(*args, **kwargs) + addons, created = AddonsConfig.objects.get_or_create(project=self.project) + if created: + addons.enabled = False + addons.save() - try: - self.fields["enabled"].initial = self.project.addons.enabled - except AddonsConfig.DoesNotExist: - self.fields["enabled"].initial = False + kwargs["instance"] = addons + super().__init__(*args, **kwargs) def clean_project(self): return self.project diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index 5dea927ed40..cc003a80f26 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -1977,25 +1977,6 @@ def add_features(sender, **kwargs): # Build related features SCALE_IN_PROTECTION = "scale_in_prtection" - # Addons related features - HOSTING_INTEGRATIONS = "hosting_integrations" - # NOTE: this is mainly temporal while we are rolling these features out. - # The idea here is to have more control over particular projects and do some testing. - # All these features will be enabled by default to all projects, - # and we can disable them if we want to - ADDONS_ANALYTICS_DISABLED = "addons_analytics_disabled" - ADDONS_DOC_DIFF_DISABLED = "addons_doc_diff_disabled" - ADDONS_ETHICALADS_DISABLED = "addons_ethicalads_disabled" - ADDONS_EXTERNAL_VERSION_WARNING_DISABLED = ( - "addons_external_version_warning_disabled" - ) - ADDONS_FLYOUT_DISABLED = "addons_flyout_disabled" - ADDONS_NON_LATEST_VERSION_WARNING_DISABLED = ( - "addons_non_latest_version_warning_disabled" - ) - ADDONS_SEARCH_DISABLED = "addons_search_disabled" - ADDONS_HOTKEYS_DISABLED = "addons_hotkeys_disabled" - FEATURES = ( ( MKDOCS_THEME_RTD, @@ -2093,45 +2074,6 @@ def add_features(sender, **kwargs): SCALE_IN_PROTECTION, _("Build: Set scale-in protection before/after building."), ), - # Addons related features. - ( - HOSTING_INTEGRATIONS, - _( - "Proxito: Inject 'readthedocs-addons.js' as