Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions ckanext/scheming/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,17 +397,18 @@ def expand_form_composite(data, fieldnames):
parts[1] = indexes[parts[1]]
try:
try:
comp[int(parts[1])]['-'.join(parts[2:])] = data[key]
del data[key]
if data[key]:
comp[int(parts[1])]['-'.join(parts[2:])] = data[key]
except IndexError:
comp.append({})
comp[int(parts[1])]['-'.join(parts[2:])] = data[key]
if data[key]:
comp[int(parts[1])]['-'.join(parts[2:])] = data[key]
finally:
del data[key]
except (IndexError, ValueError):
pass # best-effort only



class SchemingGroupsPlugin(p.SingletonPlugin, _GroupOrganizationMixin,
DefaultGroupForm, _SchemingMixin):
p.implements(p.IConfigurer)
Expand Down
20 changes: 20 additions & 0 deletions ckanext/scheming/tests/test_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,26 @@ def test_dataset_form_create(self, app, sysadmin_env):
assert dataset["citation"] == [{'originator': ['mei', 'ahmed']}]
assert dataset["contact_address"] == [{'address': 'anyplace'}]

def test_dataset_form_create_empty_subfields(self, app, sysadmin_env):
data = {"save": "", "_ckan_phase": 1}

data["name"] = "subfield_dataset_1"
data["citation-0-originator"] = ['mei', 'ahmed']
data["contact_address-0-address"] = 'anyplace'

data["publisher-0-name"] = ""
data["publisher-0-url"] = ""

url = '/test-subfields/new'
try:
app.post(url, environ_overrides=sysadmin_env, data=data, follow_redirects=False)
except TypeError:
app.post(url.encode('ascii'), params=data, extra_environ=sysadmin_env)

dataset = call_action("package_show", id="subfield_dataset_1")

assert "publisher" not in dataset

def test_dataset_form_update(self, app, sysadmin_env):
dataset = Dataset(
type="test-subfields",
Expand Down
7 changes: 7 additions & 0 deletions ckanext/scheming/tests/test_subfields.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ dataset_fields:
- field_name: country
label: Country

- field_name: publisher
label: Publisher
repeating_subfields:
- field_name: name
label: Name
- field_name: url
label: URL

resource_fields:

Expand Down