diff --git a/server/vr/server/forms.py b/server/vr/server/forms.py index aa5f3be3..9f66e49a 100644 --- a/server/vr/server/forms.py +++ b/server/vr/server/forms.py @@ -1,3 +1,5 @@ +import xmlrpclib + from django import forms from django.conf import settings from django.contrib.auth import authenticate @@ -21,18 +23,29 @@ def clean_config_yaml(self): config_yaml = self.cleaned_data.get('config_yaml', None) if config_yaml: try: - yaml.safe_load(config_yaml) + data = yaml.safe_load(config_yaml) except: raise forms.ValidationError("Invalid YAML") + + try: + xmlrpclib.dumps((data,), allow_none=True) + except Exception as e: + raise forms.ValidationError("Cannot be marshalled to XMLRPC: %s" % e) return config_yaml def clean_env_yaml(self): env_yaml = self.cleaned_data.get('env_yaml', None) if env_yaml: try: - yaml.safe_load(env_yaml) + data = yaml.safe_load(env_yaml) except: raise forms.ValidationError("Invalid YAML") + + try: + xmlrpclib.dumps((data,), allow_none=True) + except Exception as e: + raise forms.ValidationError("Cannot be marshalled to XMLRPC: %s" % e) + return env_yaml