Browse Source

Add tests for dynamic settings change form and view abstractions

rafalp 6 years ago
parent
commit
f18c6ea325

+ 6 - 11
misago/conf/admin/forms.py

@@ -5,21 +5,16 @@ from ..cache import clear_settings_cache
 
 
 class ChangeSettingsForm(forms.Form):
 class ChangeSettingsForm(forms.Form):
     settings = []
     settings = []
-    files = []
 
 
-    def save(self, settings_dict):
-        self.save_settings(settings_dict)
+    def save(self, settings):
+        self.save_settings(settings)
         self.clear_cache()
         self.clear_cache()
 
 
-    def save_settings(self, settings_dict):
+    def save_settings(self, settings):
         for setting in self.settings:
         for setting in self.settings:
-            setting_obj = settings_dict.get(setting)
-            if not setting_obj:
-                raise ValueError(
-                    "ChangeSettingsForm.save() was called with dict that was missing "
-                    "setting instance for %s" % setting
-                )
-            self.save_setting(setting_obj, self.cleaned_data.get(setting))
+            setting_obj = settings[setting]
+            new_value = self.cleaned_data.get(setting)
+            self.save_setting(setting_obj, new_value)
 
 
     def save_setting(self, setting, value):
     def save_setting(self, setting, value):
         setting.value = value
         setting.value = value

+ 10 - 8
misago/conf/admin/views.py

@@ -31,17 +31,19 @@ class ChangeSettingsView(AdminView):
                 return redirect(request.path_info)
                 return redirect(request.path_info)
         return self.render(request, {"form": form})
         return self.render(request, {"form": form})
 
 
-    def get_settings(self, settings):
-        settings_dict = {}
-        for setting in Setting.objects.filter(setting__in=settings):
-            settings_dict[setting.setting] = setting
-        if len(settings_dict) != len(settings):
-            not_found_settings = list(set(settings_dict.keys()) - set(settings))
+    def get_settings(self, form_settings):
+        settings = {}
+        for setting in Setting.objects.filter(setting__in=form_settings):
+            settings[setting.setting] = setting
+
+        if len(settings) != len(form_settings):
+            not_found_settings = list(set(settings.keys()) - set(form_settings))
             raise ValueError(
             raise ValueError(
                 "Some of settings defined in form could not be found: "
                 "Some of settings defined in form could not be found: "
                 ", ".join(not_found_settings)
                 ", ".join(not_found_settings)
             )
             )
-        return settings_dict
-    
+
+        return settings
+
     def get_initial_form_data(self, settings):
     def get_initial_form_data(self, settings):
         return {key: setting.value for key, setting in settings.items()}
         return {key: setting.value for key, setting in settings.items()}

+ 1 - 3
misago/core/admin/__init__.py

@@ -13,9 +13,7 @@ class MisagoAdminExtension:
     def register_navigation_nodes(self, site):
     def register_navigation_nodes(self, site):
         site.add_node(
         site.add_node(
             name=_("General"),
             name=_("General"),
-            description=_(
-                "Change forum details like name, description or footer."
-            ),
+            description=_("Change forum details like name, description or footer."),
             parent="settings",
             parent="settings",
             namespace="general",
             namespace="general",
         )
         )

+ 4 - 4
misago/core/admin/forms.py

@@ -29,8 +29,7 @@ class ChangeGeneralSettingsForm(ChangeSettingsForm):
         required=False,
         required=False,
     )
     )
     forum_branding_display = YesNoSwitch(
     forum_branding_display = YesNoSwitch(
-        label=_("Display branding"),
-        help_text=_("Switch branding in forum's navbar."),
+        label=_("Display branding"), help_text=_("Switch branding in forum's navbar.")
     )
     )
     forum_branding_text = forms.CharField(
     forum_branding_text = forms.CharField(
         label=_("Branding text"),
         label=_("Branding text"),
@@ -40,8 +39,9 @@ class ChangeGeneralSettingsForm(ChangeSettingsForm):
     )
     )
     email_footer = forms.CharField(
     email_footer = forms.CharField(
         label=_("E-mails footer"),
         label=_("E-mails footer"),
-        help_text=_("Optional short message included at the end of e-mails sent by forum."),
+        help_text=_(
+            "Optional short message included at the end of e-mails sent by forum."
+        ),
         max_length=255,
         max_length=255,
         required=False,
         required=False,
     )
     )
-