Ao atualizar o IDG pra versão 1.5.1, dá erro em @@cover-settings, "ValueError: term values must be unique: u'collective.polls'"
idgserpro opened this issue · 0 comments
Ao atualizar versões antigas do IDG para o 1.5.1, dependendo da ordem que são executados os upgradeSteps, a tela @@cover-settings
para de funcionar:
Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module plone.z3cform.layout, line 66, in __call__
Module plone.z3cform.layout, line 50, in update
Module plone.z3cform.fieldsets.extensible, line 59, in update
Module plone.z3cform.patch, line 30, in GroupForm_update
Module z3c.form.group, line 132, in update
Module collective.cover.controlpanel, line 74, in updateWidgets
Module z3c.form.form, line 136, in updateWidgets
Module z3c.form.field, line 277, in update
Module z3c.form.browser.orderedselect, line 50, in update
Module z3c.form.browser.widget, line 171, in update
Module z3c.form.widget, line 233, in update
Module z3c.form.widget, line 227, in updateTerms
Module zope.component._api, line 107, in getMultiAdapter
Module zope.component._api, line 120, in queryMultiAdapter
Module zope.component.registry, line 238, in queryMultiAdapter
Module zope.interface.adapter, line 532, in queryMultiAdapter
Module z3c.form.term, line 239, in CollectionTerms
Module zope.schema._field, line 352, in bind
Module Zope2.App.schema, line 33, in get
Module collective.cover.vocabularies, line 79, in __call__
Module zope.schema.vocabulary, line 65, in __init__
ValueError: term values must be unique: u'collective.polls'
Isso ocorre quando o upgrade https://github.com/collective/collective.polls/blob/0555a22b54fc90bd199f47eb64fe475c935eae69/src/collective/polls/upgrades/v3/__init__.py#L6 é executado antes de https://github.com/plonegovbr/brasil.gov.tiles/blob/ff61592451844874f7e9571bab7b4760cf886ee3/src/brasil/gov/tiles/upgrades/v4004/__init__.py#L355. Isso acontece porque o upgradeStep do brasil.gov.tiles sempre adiciona o "collective.polls" como um tile sem antes verificar se ele já existe no registry, e aí dá erro na interface pois é um vocabulário que é montado nessa tela e um vocabulário não pode ter itens repetidos.
Dessa forma, é preciso corrigir o upgradeStep verificando essa situação.
Se isso aconteceu com você na sua instância, você precisará manualmente no terminal/debug ou via script remover o tile duplicado do registry (utilize o código do link postado aqui como referência) ou acessar URL_PORTAL/portal_registry/edit/plone.app.tiles
para remover. Será feito um upgradeStep em brasil.gov.tiles que trata isso.