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]>.
