Projet

Général

Profil

0001-formdef-use-custom-json-encoder-for-schema-export-11.patch

Frédéric Péters, 17 juin 2016 20:16

Télécharger (3,21 ko)

Voir les différences:

Subject: [PATCH] formdef: use custom json encoder for schema export (#11088)

 tests/test_admin_pages.py | 11 +++++++++++
 tests/test_formdef.py     | 20 +++++++++++++++++++-
 wcs/formdef.py            |  2 +-
 3 files changed, 31 insertions(+), 2 deletions(-)
tests/test_admin_pages.py
559 559
    resp = resp.forms[0].submit('cancel')
560 560
    assert resp.location == 'http://example.net/backoffice/forms/1/'
561 561

  
562
    # check with a date field
563
    workflow.variables_formdef.fields.append(
564
            fields.DateField(id='2', varname='test2', label='Test2', type='date'))
565
    workflow.store()
566

  
567
    resp = app.get('/backoffice/forms/1/')
568
    resp = resp.click(href='workflow-variables')
569
    resp.form['f2'] = '2016-06-17'
570
    resp = resp.form.submit()
571
    assert time.strftime('%d %m %y', FormDef.get(formdef.id).workflow_options.get('test2')) == '17 06 16'
572

  
562 573
def test_form_roles(pub):
563 574
    create_superuser(pub)
564 575
    role = create_role()
tests/test_formdef.py
1 1
import datetime
2
import json
2 3
import sys
3 4
import shutil
5
import time
4 6

  
5 7
import pytest
6 8

  
......
10 12
from wcs import formdef
11 13
from wcs.formdef import FormDef
12 14
from wcs.workflows import Workflow
13
from wcs.fields import StringField, FileField
15
from wcs.fields import StringField, FileField, DateField
14 16

  
15 17
from utilities import create_temporary_pub
16 18

  
......
115 117
    assert 'form_option_foo' in formdef.get_substitution_variables()
116 118
    assert formdef.get_substitution_variables()['form_option_foo'] == 'bar'
117 119

  
120
def test_schema_with_date_variable():
121
    FormDef.wipe()
122
    formdef = FormDef()
123
    formdef.name = 'foo'
124
    formdef.store()
125

  
126
    from wcs.workflows import WorkflowVariablesFieldsFormDef
127
    wf = Workflow(name='variables')
128
    wf.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=wf)
129
    wf.variables_formdef.fields.append(
130
            DateField(label='Test', type='date', varname='foo'))
131
    wf.store()
132
    formdef.workflow_id = wf.id
133
    formdef.workflow_options = {'foo':  time.gmtime(time.mktime((2016, 4, 2, 0, 0, 0, 0, 0, 0)))}
134
    assert json.loads(formdef.export_to_json())['options']['foo'].startswith('2016-04')
135

  
118 136
def test_substitution_variables_object():
119 137
    formdef = FormDef()
120 138
    formdef.name = 'foo'
wcs/formdef.py
560 560
        if self.workflow_options:
561 561
            root['options'] = self.workflow_options
562 562

  
563
        return json.dumps(root, indent=indent)
563
        return json.dumps(root, indent=indent, cls=misc.JSONEncoder)
564 564

  
565 565
    @classmethod
566 566
    def import_from_json(cls, fd, charset=None, include_id=False):
567
-