This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit d0b50f31d5e1291c094fcc4ac9cf50bb5c86f2fb
Author: Marcus Christie <[email protected]>
AuthorDate: Thu Jan 11 11:17:49 2018 -0500

    AIRAVATA-2598 Allow optional CharFields to be null or blank
---
 .../models/ComputationalResourceSchedulingModel.js | 30 ++++------------------
 .../django_airavata_api/js/models/Experiment.js    |  6 +----
 .../js/models/InputDataObjectType.js               | 20 ++-------------
 .../js/models/UserConfigurationData.js             | 18 +++----------
 django_airavata/apps/api/thrift_utils.py           | 18 +++----------
 5 files changed, 14 insertions(+), 78 deletions(-)

diff --git 
a/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js
 
b/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js
index 03c4782..f9cc61f 100644
--- 
a/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js
+++ 
b/django_airavata/apps/api/static/django_airavata_api/js/models/ComputationalResourceSchedulingModel.js
@@ -8,31 +8,11 @@ const FIELDS = [
     'queueName',
     'wallTimeLimit',
     'totalPhysicalMemory',
-    {
-        name: 'chessisNumber',
-        type: 'string',
-        default: '',
-    },
-    {
-        name: 'staticWorkingDir',
-        type: 'string',
-        default: '',
-    },
-    {
-        name: 'overrideLoginUserName',
-        type: 'string',
-        default: '',
-    },
-    {
-        name: 'overrideScratchLocation',
-        type: 'string',
-        default: '',
-    },
-    {
-        name: 'overrideAllocationProjectNumber',
-        type: 'string',
-        default: '',
-    },
+    'chessisNumber',
+    'staticWorkingDir',
+    'overrideLoginUserName',
+    'overrideScratchLocation',
+    'overrideAllocationProjectNumber',
 ];
 
 export default class ComputationalResourceSchedulingModel extends BaseModel {
diff --git 
a/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js 
b/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
index d635a5f..6066c3a 100644
--- 
a/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
+++ 
b/django_airavata/apps/api/static/django_airavata_api/js/models/Experiment.js
@@ -22,11 +22,7 @@ const FIELDS = [
         name: 'creationTime',
         type: 'date'
     },
-    {
-        name: 'description',
-        type: 'string',
-        default: '',
-    },
+    'description',
     'executionId',
     {
         name: 'enableEmailNotification',
diff --git 
a/django_airavata/apps/api/static/django_airavata_api/js/models/InputDataObjectType.js
 
b/django_airavata/apps/api/static/django_airavata_api/js/models/InputDataObjectType.js
index 496de53..5969555 100644
--- 
a/django_airavata/apps/api/static/django_airavata_api/js/models/InputDataObjectType.js
+++ 
b/django_airavata/apps/api/static/django_airavata_api/js/models/InputDataObjectType.js
@@ -8,34 +8,18 @@ const FIELDS = [
     'applicationArgument',
     'standardInput',
     'userFriendlyDescription',
-    {
-        name: 'metaData',
-        type: 'string',
-        default: '',
-    },
+    'metaData',
     'inputOrder',
     'isRequired',
     'requiredToAddedToCommandLine',
     'dataStaged',
-    {
-        name: 'storageResourceId',
-        type: 'string',
-        default: '',
-    },
+    'storageResourceId',
     'isReadOnly',
 ];
 
 export default class InputDataObjectType extends BaseModel {
     constructor(data = {}) {
         super(FIELDS, data);
-        // TODO: move into BaseModel
-        // Convert null strings into empty strings
-        if ('metaData' in this && this.metaData === null) {
-            this.metaData = '';
-        }
-        if ('storageResourceId' in this && this.storageResourceId === null) {
-            this.storageResourceId = '';
-        }
     }
 
     validate() {
diff --git 
a/django_airavata/apps/api/static/django_airavata_api/js/models/UserConfigurationData.js
 
b/django_airavata/apps/api/static/django_airavata_api/js/models/UserConfigurationData.js
index f70ffdf..244d3fb 100644
--- 
a/django_airavata/apps/api/static/django_airavata_api/js/models/UserConfigurationData.js
+++ 
b/django_airavata/apps/api/static/django_airavata_api/js/models/UserConfigurationData.js
@@ -27,26 +27,14 @@ const FIELDS = [
         type: 'boolean',
         default: false,
     },
-    {
-        name: 'userDN',
-        type: 'string',
-        default: '',
-    },
+    'userDN',
     {
         name: 'generateCert',
         type: 'boolean',
         default: false,
     },
-    {
-        name: 'storageId',
-        type: 'string',
-        default: '',
-    },
-    {
-        name: 'experimentDataDir',
-        type: 'string',
-        default: '',
-    },
+    'storageId',
+    'experimentDataDir',
     {
         name: 'useUserCRPref',
         type: 'boolean',
diff --git a/django_airavata/apps/api/thrift_utils.py 
b/django_airavata/apps/api/thrift_utils.py
index 363a016..30ab400 100644
--- a/django_airavata/apps/api/thrift_utils.py
+++ b/django_airavata/apps/api/thrift_utils.py
@@ -67,20 +67,8 @@ def create_serializer_class(thrift_data_type):
                     params[field_name] = serializer.create(params[field_name])
             return params
 
-        def process_empty_char_fields(self, validated_data):
-            """Convert empty CharFields to None."""
-            fields = self.fields
-            params = copy.deepcopy(validated_data)
-            for field_name, serializer in fields.items():
-                if isinstance(serializer, CharField) \
-                        and params.get(field_name, None) is not None \
-                        and params[field_name].strip() == '':
-                    params[field_name] = None
-            return params
-
         def create(self, validated_data):
             params = self.process_nested_fields(validated_data)
-            params = self.process_empty_char_fields(params)
             return thrift_data_type(**params)
 
         def update(self, instance, validated_data):
@@ -103,10 +91,10 @@ def process_field(field, required=False, read_only=False, 
allow_null=False):
         # mapping
         field_class = mapping[field[1]]
         kwargs = dict(required=required, read_only=read_only)
-        # allow_null isn't allowed for BooleanField and we'll use allow_blank
-        # for CharField
-        if field_class not in (BooleanField, CharField):
+        # allow_null isn't allowed for BooleanField
+        if field_class not in (BooleanField,):
             kwargs['allow_null'] = allow_null
+        # allow_null CharField are also allowed to be blank
         if field_class == CharField:
             kwargs['allow_blank'] = allow_null
         return mapping[field[1]](**kwargs)

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to