3 |
3 |
|
4 |
4 |
import pytest
|
5 |
5 |
|
|
6 |
from wcs.carddef import CardDef
|
6 |
7 |
from wcs.fields import ItemField, StringField
|
7 |
8 |
from wcs.formdef import FormDef
|
8 |
9 |
from wcs.i18n import TranslatableMessage
|
9 |
10 |
from wcs.qommon.http_request import HTTPRequest
|
10 |
11 |
from wcs.qommon.ident.password_accounts import PasswordAccount
|
|
12 |
from wcs.sql import Equal
|
11 |
13 |
from wcs.workflows import Workflow
|
12 |
14 |
|
13 |
15 |
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
... | ... | |
211 |
213 |
resp = resp.follow()
|
212 |
214 |
resp = resp.forms[0].submit('submit')
|
213 |
215 |
assert resp.location == 'http://example.net/fr/test-form/%s/' % formdata.id
|
|
216 |
|
|
217 |
|
|
218 |
def test_translated_card_item(pub):
|
|
219 |
CardDef.wipe()
|
|
220 |
carddef = CardDef()
|
|
221 |
carddef.name = 'foo'
|
|
222 |
carddef.fields = [
|
|
223 |
StringField(id='1', label='Test', type='string', varname='foo'),
|
|
224 |
]
|
|
225 |
carddef.digest_templates = {'default': '{{ form_var_foo|translate }}'}
|
|
226 |
carddef.store()
|
|
227 |
carddef.data_class().wipe()
|
|
228 |
|
|
229 |
carddata = carddef.data_class()()
|
|
230 |
carddata.data = {'1': 'hello world'}
|
|
231 |
carddata.just_created()
|
|
232 |
carddata.store()
|
|
233 |
|
|
234 |
msg = TranslatableMessage.select([Equal('string', 'hello world')])[0]
|
|
235 |
msg.string_fr = 'bonjour monde'
|
|
236 |
msg.store()
|
|
237 |
|
|
238 |
del pub._i18n_catalog['fr']
|
|
239 |
carddata.store()
|
|
240 |
|
|
241 |
FormDef.wipe()
|
|
242 |
formdef = FormDef()
|
|
243 |
formdef.name = 'test form'
|
|
244 |
formdef.fields = [ItemField(id='1', label='field', type='item', data_source={'type': 'carddef:foo'})]
|
|
245 |
formdef.store()
|
|
246 |
|
|
247 |
resp = get_app(pub).get(formdef.get_url(language='en'))
|
|
248 |
assert resp.pyquery('#form_f1 option').text() == 'hello world'
|
|
249 |
|
|
250 |
resp = get_app(pub).get(formdef.get_url(language='fr'))
|
|
251 |
assert resp.pyquery('#form_f1 option').text() == 'bonjour monde'
|
|
252 |
|
|
253 |
resp = resp.form.submit('submit') # -> validation page
|
|
254 |
assert resp.pyquery('#form_f1_label').val() == 'bonjour monde'
|
|
255 |
resp = resp.form.submit('submit', status=302) # -> submit
|
|
256 |
assert '/fr/' in resp.location
|
|
257 |
resp = resp.follow()
|
|
258 |
assert resp.pyquery('.field-type-item .value').text() == 'bonjour monde'
|
|
259 |
|
|
260 |
# reload with different prefix
|
|
261 |
resp = resp.test_app.get(resp.request.url.replace('/fr/', '/en/'))
|
|
262 |
assert resp.pyquery('.field-type-item .value').text() == 'hello world'
|