diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 8f66157a7b7ad18311c27f9096740f47585356f1..54605b023a27794d565175d5a9a0c2a4f580233b 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -182,12 +182,10 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm schema['extras'].update({ 'key': [ toolkit.get_converter('known_spatial_uri'), + toolkit.get_converter('validate_licenseAttributionByText'), ] }) - ##schema.update({'title': [toolkit.get_converter('odsh_validate_extras')]+ schema['title']}) schema.update({'__extras': [toolkit.get_converter('odsh_validate_extras')] }) - # eschema = schema['extras'] - ##schema.update({'extras': None }) def create_package_schema(self): schema = super(OdshPlugin, self).create_package_schema() diff --git a/ckanext/odsh/templates/package/snippets/package_basic_fields.html b/ckanext/odsh/templates/package/snippets/package_basic_fields.html index 4445b81a220c9d6650f9af49d31278d7a288b0e3..342bebc8fa9139627de7fffc835a1970d1b80ae7 100644 --- a/ckanext/odsh/templates/package/snippets/package_basic_fields.html +++ b/ckanext/odsh/templates/package/snippets/package_basic_fields.html @@ -186,7 +186,7 @@ is_required=true,placeholder=_('Enter title')) }} '/api/2/util/tag/autocomplete?incomplete=?'} %} {{ form.input('tag_string', id='field-tags', label=_('Tags'), value=data.tag_string, error=errors.tag_string, classes=['control-full'], attrs=tag_attrs, - is_required=true, placeholder=_('odsh tags placeholder')) }} + is_required=false, placeholder=_('odsh tags placeholder')) }} {% endblock %} diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py index 0c2177f3e9ed6a5a246ee5b6dedbb62d28db475b..10346eb15cff73279ff9322597f4efbc617619f9 100644 --- a/ckanext/odsh/validation.py +++ b/ckanext/odsh/validation.py @@ -26,6 +26,7 @@ def validate_extra_groups(data, requireAtLeastOne, errors): if not value: if requireAtLeastOne: errors['groups']= 'at least one group needed' + data[('groups', 0, 'id')] = '' return groups = [g.strip() for g in value.split(',') if value.strip()] @@ -38,18 +39,19 @@ def validate_extra_groups(data, requireAtLeastOne, errors): errors['groups']= 'at least one group needed' return - for num, tag in zip(range(len(groups)), groups): - data[('groups', num, 'id')] = tag + for num, group in zip(range(len(groups)), groups): + data[('groups', num, 'id')] = group + def validate_extras(key, data, errors, context): extra_errors = {} isStaNord = ('id',) in data and data[('id',)][:7] == 'StaNord' + validate_extra_groups(data, False, extra_errors) - validate_extra_date_new(key, 'issued', data, False, extra_errors) + validate_extra_date_new(key, 'issued', data, isStaNord, extra_errors) validate_extra_date_new(key, 'temporal_start', data, isStaNord, extra_errors) validate_extra_date_new(key, 'temporal_end', data, True, extra_errors) - validate_licenseAttributionByText(data, extra_errors) if len(extra_errors.values()): raise toolkit.Invalid(extra_errors) @@ -107,7 +109,7 @@ def validate_extra_date(key, field, data, optional=False): def validate_extra_date_factory(field, optional=False): return lambda key, data, errors, context: validate_extra_date(key, field, data, optional) -def validate_licenseAttributionByText(data, errors): +def validate_licenseAttributionByText(key, data, errors,context): register = model.Package.get_license_register() isByLicense=False for k in data: @@ -118,7 +120,8 @@ def validate_licenseAttributionByText(data, errors): hasAttribution=False for k in data: if data[k] == 'licenseAttributionByText': - if isinstance(data[(k[0], k[1], 'value')], Missing): + print(data[k]) + if isinstance(data[(k[0], k[1], 'value')], Missing) or (k[0], k[1], 'value') not in data: del data[(k[0], k[1], 'value')] del data[(k[0], k[1], 'key')] break @@ -191,6 +194,8 @@ def tag_string_convert(key, data, errors, context): current_index = max([int(k[1]) for k in data.keys() if len(k) == 3 and k[0] == 'tags'] + [-1]) + print('TAGS') + print(current_index) for num, tag in zip(count(current_index+1), tags): @@ -205,5 +210,6 @@ def get_validators(): return { 'known_spatial_uri': known_spatial_uri, 'odsh_tag_name_validator': tag_name_validator, - 'odsh_validate_extras':validate_extras + 'odsh_validate_extras':validate_extras, + 'validate_licenseAttributionByText':validate_licenseAttributionByText } \ No newline at end of file