0001-formdata-improve-compatibility-of-lazy-date-fields-2.patch
tests/test_formdata.py | ||
---|---|---|
618 | 618 |
assert bool(lazy_formdata.var.boolfield) is False |
619 | 619 |
assert lazy_formdata.var.boolfield2 == 'True' |
620 | 620 |
assert bool(lazy_formdata.var.boolfield2) is True |
621 |
assert lazy_formdata.var.datefield == time.strptime('2018-07-31', '%Y-%m-%d') |
|
621 |
assert lazy_formdata.var.datefield == '2018-07-31' |
|
622 |
assert lazy_formdata.var.datefield.raw == time.strptime('2018-07-31', '%Y-%m-%d') |
|
623 |
assert lazy_formdata.var.datefield.tm_year == 2018 |
|
624 |
assert lazy_formdata.var.datefield.tm_mon == 7 |
|
625 |
assert lazy_formdata.var.datefield.tm_mday == 31 |
|
626 |
for attr in ('tm_year', 'tm_mon', 'tm_mday', 'tm_hour', 'tm_min', 'tm_sec', |
|
627 |
'tm_wday', 'tm_yday'): |
|
628 |
getattr(lazy_formdata.var.datefield, attr) |
|
622 | 629 |
assert lazy_formdata.var.itemsfield == 'aa, ac' |
623 | 630 |
assert 'aa' in lazy_formdata.var.itemsfield # taken as a list |
624 | 631 |
assert 'aa,' not in lazy_formdata.var.itemsfield # not as a string |
... | ... | |
689 | 696 | |
690 | 697 |
tmpl = Template('{{form_user_name_identifier_0}}') |
691 | 698 |
assert tmpl.render(context) == pub.user_class.select()[0].name_identifiers[0] |
699 | ||
700 |
def test_form_digest_date(pub): |
|
701 |
formdef = FormDef() |
|
702 |
formdef.name = 'foobar' |
|
703 |
formdef.url_name = 'foobar' |
|
704 |
formdef.fields = [fields.DateField(id='0', label='date', varname='date')] |
|
705 |
formdef.digest_template = 'plop {{ form_var_date }} plop' |
|
706 |
formdef.store() |
|
707 | ||
708 |
formdata = formdef.data_class()() |
|
709 |
formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} |
|
710 |
formdata.store() |
|
711 |
assert formdef.data_class().get(formdata.id).digest == 'plop 2015-05-12 plop' |
|
712 | ||
713 |
pub.cfg['language'] = {'language': 'fr'} |
|
714 |
pub.write_cfg() |
|
715 |
formdata = formdef.data_class()() |
|
716 |
formdata.data = {'0': time.strptime('2015-05-12', '%Y-%m-%d')} |
|
717 |
formdata.store() |
|
718 |
assert formdef.data_class().get(formdata.id).digest == 'plop 12/05/2015 plop' |
wcs/variables.py | ||
---|---|---|
306 | 306 |
raise KeyError(key) |
307 | 307 | |
308 | 308 |
if field.key == 'date': |
309 |
# for backward compatibility with sites using time.struct_time |
|
310 |
# methods we still have to return a raw value for date fields. |
|
311 |
return self.data.get(field.id) |
|
309 |
return LazyFieldVarDate(self.data, field, self.formdata) |
|
312 | 310 | |
313 | 311 |
return LazyFieldVar(self.data, field, self.formdata) |
314 | 312 | |
... | ... | |
327 | 325 | |
328 | 326 |
@property |
329 | 327 |
def raw(self): |
330 |
if self.field.store_display_value or self.field.key == 'file':
|
|
328 |
if self.field.store_display_value or self.field.key in ('file', 'date'):
|
|
331 | 329 |
return self.data.get(self.field.id) |
332 | 330 |
raise KeyError('raw') |
333 | 331 | |
... | ... | |
395 | 393 |
raise AssertionError('lazy cannot be pickled') |
396 | 394 | |
397 | 395 | |
396 |
class LazyFieldVarDate(LazyFieldVar): |
|
397 |
# for backward compatibility with sites using time.struct_time |
|
398 |
# methods we still have to provide time.struct_time properties. |
|
399 | ||
400 |
def get_raw(self): |
|
401 |
return self.data.get(self.field.id) |
|
402 | ||
403 |
@property |
|
404 |
def tm_year(self): |
|
405 |
return self.get_raw().tm_year |
|
406 | ||
407 |
@property |
|
408 |
def tm_mon(self): |
|
409 |
return self.get_raw().tm_mon |
|
410 | ||
411 |
@property |
|
412 |
def tm_mday(self): |
|
413 |
return self.get_raw().tm_mday |
|
414 | ||
415 |
@property |
|
416 |
def tm_hour(self): |
|
417 |
return self.get_raw().tm_hour |
|
418 | ||
419 |
@property |
|
420 |
def tm_min(self): |
|
421 |
return self.get_raw().tm_min |
|
422 | ||
423 |
@property |
|
424 |
def tm_sec(self): |
|
425 |
return self.get_raw().tm_sec |
|
426 | ||
427 |
@property |
|
428 |
def tm_wday(self): |
|
429 |
return self.get_raw().tm_wday |
|
430 | ||
431 |
@property |
|
432 |
def tm_yday(self): |
|
433 |
return self.get_raw().tm_yday |
|
434 | ||
435 | ||
398 | 436 |
class LazyUser(object): |
399 | 437 |
def __init__(self, user): |
400 | 438 |
self.user = user |
401 |
- |