|
13 | 13 | from plone.schema import IJSONField |
14 | 14 | from z3c.formwidget.query.interfaces import IQuerySource |
15 | 15 | from zope.component import adapter |
16 | | -from zope.component import getMultiAdapter |
| 16 | +from zope.component import queryMultiAdapter |
17 | 17 | from zope.i18n import translate |
18 | 18 | from zope.interface import implementer |
19 | 19 | from zope.interface import Interface |
@@ -270,11 +270,16 @@ def get_factory(self): |
270 | 270 |
|
271 | 271 | def get_items(self): |
272 | 272 | """Get items properties.""" |
273 | | - value_type_adapter = getMultiAdapter( |
274 | | - (self.field.value_type, self.context, self.request), IJsonSchemaProvider |
275 | | - ) |
276 | | - |
277 | | - return value_type_adapter.get_schema() |
| 273 | + if self.field.value_type: |
| 274 | + value_type_adapter = queryMultiAdapter( |
| 275 | + (self.field.value_type, self.context, self.request), IJsonSchemaProvider |
| 276 | + ) |
| 277 | + if value_type_adapter: |
| 278 | + try: |
| 279 | + return value_type_adapter.get_schema() |
| 280 | + except NotImplementedError: |
| 281 | + pass |
| 282 | + return {} |
278 | 283 |
|
279 | 284 | def additional(self): |
280 | 285 | info = {} |
@@ -434,20 +439,30 @@ def get_type(self): |
434 | 439 |
|
435 | 440 | def additional(self): |
436 | 441 | info = {} |
437 | | - key_type = getMultiAdapter( |
438 | | - (self.field.key_type, self.context, self.request), IJsonSchemaProvider |
439 | | - ) |
440 | | - info["key_type"] = { |
441 | | - "schema": key_type.get_schema(), |
442 | | - "additional": key_type.additional(), |
443 | | - } |
444 | | - value_type = getMultiAdapter( |
445 | | - (self.field.value_type, self.context, self.request), IJsonSchemaProvider |
446 | | - ) |
447 | | - info["value_type"] = { |
448 | | - "schema": value_type.get_schema(), |
449 | | - "additional": value_type.additional(), |
450 | | - } |
| 442 | + if self.field.key_type: |
| 443 | + key_type = queryMultiAdapter( |
| 444 | + (self.field.key_type, self.context, self.request), IJsonSchemaProvider |
| 445 | + ) |
| 446 | + if key_type: |
| 447 | + try: |
| 448 | + info["key_type"] = { |
| 449 | + "schema": key_type.get_schema(), |
| 450 | + "additional": key_type.additional(), |
| 451 | + } |
| 452 | + except NotImplementedError: |
| 453 | + pass |
| 454 | + if self.field.value_type: |
| 455 | + value_type = queryMultiAdapter( |
| 456 | + (self.field.value_type, self.context, self.request), IJsonSchemaProvider |
| 457 | + ) |
| 458 | + if value_type: |
| 459 | + try: |
| 460 | + info["value_type"] = { |
| 461 | + "schema": value_type.get_schema(), |
| 462 | + "additional": value_type.additional(), |
| 463 | + } |
| 464 | + except NotImplementedError: |
| 465 | + pass |
451 | 466 | return info |
452 | 467 |
|
453 | 468 |
|
|
0 commit comments