0001-formdata-do-not-consider-empty-evolution-in-last_upd.patch
tests/backoffice_pages/test_all.py | ||
---|---|---|
2547 | 2547 |
resp = resp.form.submit('submit') |
2548 | 2548 |
resp = resp.follow() |
2549 | 2549 |
assert form_class().get(number31.id).data['2'] == 'bar' |
2550 | ||
2551 | ||
2552 |
# status and last_update_time tests |
|
2553 |
epoch = time.localtime(0) # 1970-01-01 00:00 |
|
2554 |
number31.evolution[-1].time = epoch |
|
2550 | 2555 |
number31.store() |
2551 | 2556 | |
2557 |
# verify edit cancel doesn't change last_uptime_time |
|
2558 |
assert number31.last_update_time.tm_year == 1970 |
|
2559 |
resp = app.get('/backoffice/management/form-title/%s/' % number31.id) |
|
2560 |
resp = resp.form.submit('button_wfedit') |
|
2561 |
resp = resp.follow() |
|
2562 |
resp.form['f2'].value = 'foo' |
|
2563 |
resp = resp.form.submit('cancel') |
|
2564 |
resp = resp.follow() |
|
2565 |
number31 = form_class().get(number31.id) |
|
2566 |
assert number31.data['2'] == 'baz' |
|
2567 |
assert number31.status == 'wf-%s' % st1.id |
|
2568 |
assert number31.last_update_time.tm_year == 1970 |
|
2569 |
# edited (without status change) do not update last_update_time |
|
2570 |
resp = app.get('/backoffice/management/form-title/%s/' % number31.id) |
|
2571 |
resp = resp.form.submit('button_wfedit') |
|
2572 |
resp = resp.follow() |
|
2573 |
resp.form['f2'].value = 'foo' |
|
2574 |
resp = resp.form.submit('submit') |
|
2575 |
resp = resp.follow() |
|
2576 |
number31 = form_class().get(number31.id) |
|
2577 |
assert number31.data['2'] == 'foo' |
|
2578 |
assert number31.status == 'wf-%s' % st1.id |
|
2579 |
assert number31.last_update_time.tm_year == 1970 |
|
2580 | ||
2581 |
# change status after edition |
|
2582 |
st2 = workflow.add_status('Edited') |
|
2583 |
wfedit.status = st2 |
|
2584 |
workflow.store() |
|
2585 |
# cancel do not change last_uptime_time |
|
2586 |
resp = app.get('/backoffice/management/form-title/%s/' % number31.id) |
|
2587 |
resp = resp.form.submit('button_wfedit') |
|
2588 |
resp = resp.follow() |
|
2589 |
resp.form['f2'].value = 'bar' |
|
2590 |
resp = resp.form.submit('cancel') |
|
2591 |
resp = resp.follow() |
|
2592 |
number31 = form_class().get(number31.id) |
|
2593 |
assert number31.data['2'] == 'foo' |
|
2594 |
assert number31.status == 'wf-%s' % st1.id |
|
2595 |
assert number31.last_update_time.tm_year == 1970 |
|
2596 |
# edited: change status and last_update_time |
|
2597 |
resp = app.get('/backoffice/management/form-title/%s/' % number31.id) |
|
2598 |
resp = resp.form.submit('button_wfedit') |
|
2599 |
resp = resp.follow() |
|
2600 |
resp.form['f2'].value = 'bar' |
|
2601 |
resp = resp.form.submit('submit') |
|
2602 |
resp = resp.follow() |
|
2603 |
number31 = form_class().get(number31.id) |
|
2604 |
assert number31.data['2'] == 'bar' |
|
2605 |
assert number31.status == 'wf-%s' % st2.id |
|
2606 |
assert number31.last_update_time.tm_year > 1970 |
|
2607 | ||
2552 | 2608 | |
2553 | 2609 |
def test_backoffice_wfedit_disabled(pub): |
2554 | 2610 |
user = create_user(pub) |
wcs/formdata.py | ||
---|---|---|
1054 | 1054 |
def get_last_update_time(self): |
1055 | 1055 |
if hasattr(self, '_last_update_time'): |
1056 | 1056 |
return self._last_update_time |
1057 |
if self.evolution and self.evolution[-1].last_jump_datetime: |
|
1058 |
return self.evolution[-1].last_jump_datetime.timetuple() |
|
1059 |
elif self.evolution and self.evolution[-1].time: |
|
1060 |
return self.evolution[-1].time |
|
1061 |
else: |
|
1062 |
return self.receipt_time |
|
1057 |
for evolution in reversed(self.evolution or []): |
|
1058 |
if evolution.status: |
|
1059 |
if evolution.last_jump_datetime: |
|
1060 |
return evolution.last_jump_datetime.timetuple() |
|
1061 |
if evolution.time: |
|
1062 |
return evolution.time |
|
1063 |
return self.receipt_time |
|
1063 | 1064 | |
1064 | 1065 |
def set_last_update_time(self, value): |
1065 | 1066 |
self._last_update_time = value |
wcs/sql.py | ||
---|---|---|
3301 | 3301 |
# latest migration, number + description (description is not used |
3302 | 3302 |
# programmaticaly but will make sure git conflicts if two migrations are |
3303 | 3303 |
# separately added with the same number) |
3304 |
SQL_LEVEL = (50, 'switch role uuid column to varchar')
|
|
3304 |
SQL_LEVEL = (51, 'reindex formdata for last_update_time')
|
|
3305 | 3305 | |
3306 | 3306 | |
3307 | 3307 |
def migrate_global_views(conn, cur): |
... | ... | |
3426 | 3426 |
# 21: (second part), store ascii_name of users |
3427 | 3427 |
# 23: (first part), use misc.simplify() over full text queries |
3428 | 3428 |
set_reindex('user', 'needed', conn=conn, cur=cur) |
3429 |
if sql_level < 41:
|
|
3429 |
if sql_level < 51:
|
|
3430 | 3430 |
# 17: store last_update_time in tables |
3431 | 3431 |
# 18: add user name to full-text search index |
3432 | 3432 |
# 21: (third part), add user ascii_names to full-text index |
... | ... | |
3436 | 3436 |
# 31: add user_label to formdata |
3437 | 3437 |
# 38: extract submission_agent_id to its own column |
3438 | 3438 |
# 41: update full text normalization |
3439 |
# 51: new last_update_time calculation |
|
3439 | 3440 |
set_reindex('formdata', 'needed', conn=conn, cur=cur) |
3440 | 3441 |
if sql_level < 46: |
3441 | 3442 |
from wcs.carddef import CardDef |
3442 |
- |