When adding a Dexterity content type which includes a RelationChoice field in conjunction with the IDublinCore behavior creators (possibly also contributors), the following error occurs:
Module plone.app.vocabularies.principals, line 113, in _get_term_from_source ValueError: value or token must be provided (only one of those)
This happens because
plone.app.z3cform.converters mishandles the passed value
(None, ) - it should return
I have a hunch that the passed value (from where?) used to be
None and has been wrongfully cast into a tuple during the upgrade to Python 3. In fact, I received exactly that advice on an unrelated issue which happens because filter() now returns an iterator. Maybe someone more experienced than me could take a look?
Furthermore, after finding that
Vocabulary lookup not allowed, I spotted the recent addition of a permission
'plone.app.multilingual.RootCatalog': 'View' in plone.app.content.vocabulary. For sh*ts and giggles, I endeavoured to add
'plone.app.vocabularies.Principals': 'Modify portal content' below it.
Module ZPublisher.WSGIPublisher, line 155, in transaction_pubevents Module ZPublisher.WSGIPublisher, line 337, in publish_module Module ZPublisher.WSGIPublisher, line 255, in publish Module ZPublisher.mapply, line 85, in mapply Module ZPublisher.WSGIPublisher, line 61, in call_object Module plone.app.content.browser.vocabulary, line 153, in __call__ Module plone.app.content.browser.vocabulary, line 386, in get_vocabulary AttributeError: 'TextLine' object has no attribute 'vocabulary'
So adding the permission was not fully correct. However: I now found my field to be able to select a related object. (!)
I am in over my head, but maybe on to something. Help please?