Projet

Général

Profil

0001-backoffice-exclude-backoffice-fields-from-cards-csv-.patch

Frédéric Péters, 08 août 2022 09:25

Télécharger (3,16 ko)

Voir les différences:

Subject: [PATCH] backoffice: exclude backoffice fields from cards csv import
 (#66824)

 tests/backoffice_pages/test_carddata.py | 39 ++++++++++++++++++++++++-
 wcs/backoffice/data_management.py       |  2 +-
 2 files changed, 39 insertions(+), 2 deletions(-)
tests/backoffice_pages/test_carddata.py
11 11
from wcs.categories import CardDefCategory
12 12
from wcs.formdef import FormDef
13 13
from wcs.qommon.http_request import HTTPRequest
14
from wcs.workflows import Workflow
14
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
15 15

  
16 16
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
17 17
from .test_all import create_superuser, create_user
......
551 551
    assert '(line numbers 4, 5, 7, 8, 9 and more)' in resp.text
552 552

  
553 553

  
554
def test_backoffice_cards_import_data_csv_no_backoffice_fields(pub):
555
    user = create_user(pub)
556
    user.name_identifiers = [str(uuid.uuid4())]
557
    user.store()
558

  
559
    Workflow.wipe()
560
    workflow = Workflow(name='form-title')
561
    workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
562
    workflow.backoffice_fields_formdef.fields = [
563
        fields.StringField(id='bo0', varname='foo_bovar', type='string', label='bo variable'),
564
    ]
565

  
566
    CardDef.wipe()
567
    carddef = CardDef()
568
    carddef.name = 'test'
569
    carddef.fields = [
570
        fields.StringField(id='1', label='String'),
571
        fields.ItemField(id='2', label='List', items=['item1', 'item2']),
572
    ]
573
    carddef.backoffice_submission_roles = user.roles
574
    carddef.store()
575
    carddef.data_class().wipe()
576

  
577
    app = login(get_app(pub))
578
    sample_resp = app.get('/backoffice/data/test/data-sample-csv')
579
    assert sample_resp.text.splitlines()[0] == '"String","List"'
580
    data = b'''\
581
"String","List"
582
"test","item1"
583
"test","item2"
584
'''
585
    resp = app.get('/backoffice/data/test/import-csv')
586
    resp.forms[0]['file'] = Upload('test.csv', data, 'text/csv')
587
    resp = resp.forms[0].submit().follow()
588
    assert carddef.data_class().count() == 2
589

  
590

  
554 591
def test_backoffice_cards_wscall_failure_display(http_requests, pub):
555 592
    user = create_user(pub)
556 593

  
wcs/backoffice/data_management.py
47 47
            data['_user'] = value
48 48

  
49 49
    # skip non-data fields
50
    csv_fields = [x for x in carddef.get_all_fields() if isinstance(x, fields.WidgetField)]
50
    csv_fields = [x for x in (carddef.fields or []) if isinstance(x, fields.WidgetField)]
51 51
    if carddef.user_support == 'optional':
52 52
        return [UserField()] + csv_fields
53 53
    return csv_fields
54
-