Projet

Général

Profil

0001-use-last-linked-object-for-form_links_xxx-72012.patch

Thomas Noël, 05 décembre 2022 14:21

Télécharger (4,56 ko)

Voir les différences:

Subject: [PATCH] use last linked object for form_links_xxx (#72012)

 tests/workflow/test_carddata.py | 61 +++++++++++++++++----------------
 wcs/wf/create_formdata.py       |  8 ++---
 2 files changed, 35 insertions(+), 34 deletions(-)
tests/workflow/test_carddata.py
228 228
    assert carddata2.data['1'] == 'card2 barr'
229 229
    assert carddata2.data['2'] == str(old_carddata1.id)  # first item
230 230

  
231
    create2.mappings[1] = Mapping(field_id='2', expression='{{ form_links_mycard1|last }}')
232
    wf.store()
233
    formdef = FormDef.get(formdef.id)
234

  
235
    carddef1.data_class().wipe()
236
    carddef2.data_class().wipe()
237
    formdef.data_class().wipe()
238
    formdata = formdef.data_class()()
239
    formdata.data = {
240
        '1': 'card1 fooo',
241
        '2': 'card2 barr',
242
    }
243
    formdata.just_created()
244
    formdata.perform_workflow()
245

  
246
    assert carddef1.data_class().count() == 1
247
    assert carddef2.data_class().count() == 1
248
    carddata1 = carddef1.data_class().select()[0]
249
    carddata2 = carddef2.data_class().select()[0]
250
    assert carddata1.data['1'] == 'card1 fooo'
251
    assert carddata2.data['1'] == 'card2 barr'
252
    assert carddata2.data['2'] == str(carddata1.id)
231
    for expression in ('{{ form_links_mycard1 }}', '{{ form_links_mycard1|last }}'):
232
        create2.mappings[1] = Mapping(field_id='2', expression=expression)
233
        wf.store()
234
        formdef = FormDef.get(formdef.id)
253 235

  
254
    formdata.perform_workflow()  # again
236
        carddef1.data_class().wipe()
237
        carddef2.data_class().wipe()
238
        formdef.data_class().wipe()
239
        formdata = formdef.data_class()()
240
        formdata.data = {
241
            '1': 'card1 fooo',
242
            '2': 'card2 barr',
243
        }
244
        formdata.just_created()
245
        formdata.perform_workflow()
255 246

  
256
    assert carddef1.data_class().count() == 2
257
    assert carddef2.data_class().count() == 2
258
    carddata1 = carddef1.data_class().select(order_by='id')[-1]
259
    carddata2 = carddef2.data_class().select(order_by='id')[-1]
260
    assert carddata1.data['1'] == 'card1 fooo'
261
    assert carddata2.data['1'] == 'card2 barr'
262
    assert carddata2.data['2'] == str(carddata1.id)
247
        assert carddef1.data_class().count() == 1
248
        assert carddef2.data_class().count() == 1
249
        carddata1 = carddef1.data_class().select()[0]
250
        carddata2 = carddef2.data_class().select()[0]
251
        assert carddata1.data['1'] == 'card1 fooo'
252
        assert carddata2.data['1'] == 'card2 barr'
253
        assert carddata2.data['2'] == str(carddata1.id)
254

  
255
        formdata.perform_workflow()  # again
256

  
257
        assert carddef1.data_class().count() == 2
258
        assert carddef2.data_class().count() == 2
259
        carddata1 = carddef1.data_class().select(order_by='id')[-1]
260
        carddata2 = carddef2.data_class().select(order_by='id')[-1]
261
        assert carddata1.data['1'] == 'card1 fooo'
262
        assert carddata2.data['1'] == 'card2 barr'
263
        assert carddata2.data['2'] == str(carddata1.id)
263 264

  
264 265
    create2.mappings[1] = Mapping(field_id='2', expression='{{ form_links_mycard1_0 }}')
265 266
    wf.store()
wcs/wf/create_formdata.py
277 277
        return [str(x) for x in range(len(self._linked_formdatas))] + ['form']
278 278

  
279 279
    def __str__(self):
280
        return str(self._linked_formdatas[0]['form'].internal_id)
280
        return str(self._linked_formdatas[-1]['form'].internal_id)
281 281

  
282 282
    @property
283 283
    def form(self):
284 284
        # alias when there's a single linked formdata
285
        return self._linked_formdatas[0]['form']
285
        return self._linked_formdatas[-1]['form']
286 286

  
287 287
    def __getattr__(self, varname):
288
        formdata = self._linked_formdatas[0]['form']
288
        formdata = self._linked_formdatas[-1]['form']
289 289
        return getattr(formdata, varname)
290 290

  
291 291
    def __getitem__(self, key):
......
295 295
            try:
296 296
                return getattr(self, key)
297 297
            except AttributeError:
298
                return self._linked_formdatas[0][key]
298
                return self._linked_formdatas[-1][key]
299 299
        return self._linked_formdatas[key]
300 300

  
301 301
    def __len__(self):
302
-