From 885be348d4989b23eb77100a0eece6b1dda88b52 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 19 Aug 2018 03:45:33 -0400 Subject: [PATCH] Improve setting dump serialization. Signed-off-by: Roberto Rosario --- mayan/apps/smart_settings/classes.py | 19 ++++++------------- mayan/apps/smart_settings/forms.py | 8 ++------ 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/mayan/apps/smart_settings/classes.py b/mayan/apps/smart_settings/classes.py index 6175ac5008..2e02b48e17 100644 --- a/mayan/apps/smart_settings/classes.py +++ b/mayan/apps/smart_settings/classes.py @@ -92,21 +92,14 @@ class Setting(object): @classmethod def dump_data(cls): - result = [] - + dictionary = {} for setting in cls.get_all(): - # Ensure there is at least one newline - line = '{}: {}\n'.format( - setting.global_name, setting.serialized_value - ) + if setting.quoted: + dictionary[setting.global_name] = '{}'.format(setting.value) + else: + dictionary[setting.global_name] = setting.value - # If there are two newlines, remove one - if line.endswith('\n\n'): - line = line[:-1] - - result.append(line) - - return ''.join(result) + return yaml.safe_dump(dictionary) @classmethod def get(cls, global_name): diff --git a/mayan/apps/smart_settings/forms.py b/mayan/apps/smart_settings/forms.py index f3f1f1758e..3b3033d3ba 100644 --- a/mayan/apps/smart_settings/forms.py +++ b/mayan/apps/smart_settings/forms.py @@ -3,11 +3,7 @@ from __future__ import unicode_literals import yaml from django import forms -from django.conf import settings -from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError -from django.db import models -from django.utils.module_loading import import_string from django.utils.translation import ugettext_lazy as _ @@ -20,11 +16,11 @@ class SettingForm(forms.Form): def __init__(self, *args, **kwargs): super(SettingForm, self).__init__(*args, **kwargs) self.fields['value'].help_text = self.initial['setting'].help_text - self.fields['value'].initial = self.initial['setting'].value + self.fields['value'].initial = self.initial['setting'].serialized_value def clean(self): try: - yaml.safe_dump(self.cleaned_data['value']) + yaml.safe_load(self.cleaned_data['value']) except yaml.YAMLError as exception: try: yaml.safe_load('{}'.format(self.cleaned_data['value']))