atapi.StringField(
name='areaEspReq',
required=False,
widget=atapi.SelectionWidget(
format="select",
label=_(u'requisicoes_label_areaEspReq', default=u'Area Especifica'),
description=_(u'requisicoes_help_areaEspReq', default=u""),
render_own_label=False,
macro="selection_requisicoes",
),
vocabulary="getItensContas",
schemata=_(u'Requisicao')
),
security.declarePrivate('getItensContas')
def getItensContas(self):
"""
"""
registry = getUtility(IRegistry)
codsValue = registry['ip.requisicoes2.contasReq']
out = []
dictValues = {}
for i in codsValue:
values = i.split(':')
dictValues[values[0]] = values[1]
relContasReq = registry['ip.requisicoes2.relContasReq']
for line in relContasReq:
values = line.split(':')
tuple = dictValues[values[0]],'-'+str(values[0])
out.append(tuple)
for innerVal in values[1].split(';'):
tuple = dictValues[innerVal],str(innerVal)
out.append(tuple)
return atapi.DisplayList(out)
DataGridField('itensConsolidados',
searchable = True,
columns = ('dataInsercao','descricao', 'quant', 'preco','total','ivaInc','totalS','conta','CPV','INTRASTAT','peso','totalCF','patrimonio','factura','info','controlField','lineCreator','role'),
widget = DataGridWidget(
label = _(u'deslocacoes_label_valoresRealizado', default='Despesas (Realizado)'),
description = _(u'deslocacoes_description_valoresRealizado', default=""),
auto_insert = False,
columns={
'dataInsercao' : Column(_(u'deslocacoes_label_controlField', default=u'Data')),
'descricao' : Column(_(u'requisicoes_label_descricao', default=u'Desc'),),
'quant' : Column(_(u'requisicoes_label_quant', default=u'Qtd'),),
'preco' : Column(_(u'requisicoes_label_preco', default=u'Preco'),),
'total' : Column(_(u'requisicoes_label_total', default=u'Total'),),
'ivaInc' : Column(_(u'requisicoes_label_ivaInc', default=u'IVA'),),
'totalS' : Column(_(u'requisicoes_label_totalS', default=u'Total (s/iva)'),),
'conta' : RequisicoesSelectColumn(_(u'requisicoes_label_conta', default=u'Tipo'), vocabulary="getROptGroup", macro="requisicoes_select_cell"),
"CPV" : Column(_(u'requisicoes_label_CPV', default=u'CPV'),),
"INTRASTAT" : Column(_(u'requisicoes_label_INTRASTAT', default=u'INTRASTAT'),),
"peso" : Column(_(u'requisicoes_label_peos', default=u'Peso'),),
'totalCF' : Column(_(u'requisicoes_label_totalCF', default=u'Total CF'),),
'patrimonio' : Column(_(u'requisicoes_label_patrimonio', default=u'Patrimonio'),),
'factura' : Column(_(u'requisicoes_label_factura', default=u'Fatura'),),
'info' : Column(_(u'requisicoes_label_info', default=u'Info'),),
'controlField' : Column(_(u'deslocacoes_label_controlField', default=u'controlField')),
'lineCreator' : Column(_(u'deslocacoes_label_tipo', default=u'Utilizador')),
'role' : Column(_(u'deslocacoes_label_role', default=u'Role')),
},
),
write_permission="Manage portal",
),
atapi.LinesField('extraInfo',
searchable=True,
storage=atapi.AnnotationStorage(),
widget=atapi.MultiSelectionWidget(
format = 'checkbox',
label=_(u'requisicoes_label_extraInfo', default=u"Informacao extra"),
description=_(u'requisicoes_help_extraInfo', default=u""),
render_own_label=False,
macro="multiselection_requisicoes",
),
schemata=_(u'Requisicao'),
vocabulary=["O material vai ser incorporado ou anexado a equipamento existente",
"O material vai ser incorporado em fornecimento ao exterior",
"O material vai ser utilizado para construcao de um prototipo"],
),
BlobField('prop1File',
widget=atapi.FileWidget(label='Anexo Proposta 1',
description='Ficheiro identificativo da proposta 1',
render_own_label=True,
macro="file_requisicoes",
),
schemata=_(u'Conclusao'),
),
atapi.StringField(
name='reqElegibilidadeCG',
required=False,
widget=atapi.SelectionWidget(
format="radio",
label=_(u'requisicoes_label_reqElegibilidadeCG', default=u'Elegibilidade'),
description=_(u'requisicoes_help_reqElegibilidadeCG', default=u""),
macro="selection_requisicoes",
render_own_label=False,
),
vocabulary=["Sim","Não"],
write_permission="ip.requisicoes2: CG evaluation",
),
atapi.StringField(
name='processNumber',
searchable=True,
widget=atapi.ComputedWidget(
label=_(u'editais_label_processNumber', default=u'Numero do Processo'),
description=_(u'editais_help_processNumber', default=u""),
render_own_label=True,
),
read_permission="Manage portal",
write_permission="Manage portal",
schemata=_(u'Management Information')
),
I am doing a migration (Plone5.1 to Plone6 --> Archetypes to Dexterity), in this fields definition, I didn't quite understand how would I define them in Dexterity. My doubts are:
- On the first field definition (areaEspReq), the vocabulary, I don't understand how to do this in Dexterity, how would it look like
- On the DataGridField field definition of itensConsolidados, I just want to know if the format os the definition stays the same in Dexterity
- The definition of extraInfo field, the field is a LinesField, the widget is a MultiselectionWidget, this makes me confused, since the Widgets definition, for what I could understand, stop existing in Dexterity
- The BlobField with FileWidget I just don't quite undestand how to migrate
- With the field reqElegibilidadeCG, my doubt is on the write_permission part (I did not create this add-on, and I am not familiar with how this definition worked then, so I don't understand it now)
- The last one is still about the widget and the read_permission and write_permission part, I need someone to please explain this to me
Ok, so I guess that is it, sorry if it is something that can be easily found online, I just could not find the information I was looking for, so this is just my last hope on understanding this. Sorry if is something easy once again, I really don't want to waste anyone's time ahah
Also, I don't know if it is relevant, but I am doing this definition of content type on a new Plone6 website, so that eventually I can use the collective.exportimport to import all the content on the old website.
Thank you!