0001-backoffice-allow-form_user-usage-in-live-prefills-du.patch
tests/backoffice_pages/test_all.py | ||
---|---|---|
1999 | 1999 |
assert live_resp.json['result']['2']['visible'] |
2000 | 2000 | |
2001 | 2001 | |
2002 |
def test_backoffice_wfedit_and_prefill_with_user_variable(pub): |
|
2003 |
user = create_user(pub) |
|
2004 |
create_environment(pub) |
|
2005 |
formdef = FormDef.get_by_urlname('form-title') |
|
2006 |
formdef.fields[0].varname = 'foo' |
|
2007 |
formdef.fields[1].condition = {'type': 'django', 'value': 'form_var_foo == "test"'} |
|
2008 |
formdef.fields.append( |
|
2009 |
fields.StringField( |
|
2010 |
id='100', |
|
2011 |
label='user name', |
|
2012 |
type='string', |
|
2013 |
prefill={'type': 'string', 'value': 'a{{form_user_name}}b'}, |
|
2014 |
) |
|
2015 |
) |
|
2016 |
formdef.store() |
|
2017 | ||
2018 |
form_class = formdef.data_class() |
|
2019 | ||
2020 |
second_user = pub.user_class(name='foobar') |
|
2021 |
second_user.store() |
|
2022 |
number31 = [x for x in form_class.select() if x.data['1'] == 'FOO BAR 30'][0] |
|
2023 |
number31.user_id = second_user.id |
|
2024 |
number31.store() |
|
2025 | ||
2026 |
# attach a custom workflow |
|
2027 |
workflow = Workflow(name='wfedit') |
|
2028 |
st1 = workflow.add_status('Status1', number31.status.split('-')[1]) |
|
2029 | ||
2030 |
wfedit = st1.add_action('editable', id='_wfedit') |
|
2031 |
wfedit.by = [user.roles[0]] |
|
2032 |
workflow.store() |
|
2033 | ||
2034 |
formdef.workflow_id = workflow.id |
|
2035 |
formdef.store() |
|
2036 | ||
2037 |
app = login(get_app(pub)) |
|
2038 | ||
2039 |
resp = app.get('/backoffice/management/form-title/%s/' % number31.id) |
|
2040 |
resp = resp.form.submit('button_wfedit').follow() |
|
2041 |
assert resp.form['f100'].value == 'afoobarb' |
|
2042 | ||
2043 |
live_url = resp.html.find('form').attrs['data-live-url'] |
|
2044 |
live_resp = app.post(live_url + '?prefilled_100=on', params=resp.form.submit_fields()) |
|
2045 |
assert live_resp.json['result']['100']['content'] == 'afoobarb' |
|
2046 | ||
2047 | ||
2002 | 2048 |
def test_global_listing(pub): |
2003 | 2049 |
create_user(pub) |
2004 | 2050 |
create_environment(pub) |
wcs/backoffice/management.py | ||
---|---|---|
2907 | 2907 | |
2908 | 2908 | |
2909 | 2909 |
class FormBackofficeEditPage(FormFillPage): |
2910 |
def __init__(self, *args, **kwargs): |
|
2911 |
super().__init__(*args, **kwargs) |
|
2912 |
self.edit_mode = True |
|
2913 | ||
2910 | 2914 |
def create_form(self, *args, **kwargs): |
2911 | 2915 |
form = super().create_form(*args, **kwargs) |
2912 | 2916 |
form.attrs['data-live-url'] = self.formdef.get_url(backoffice=True) + 'live' |
wcs/forms/root.py | ||
---|---|---|
834 | 834 |
computed_values = get_session().get_by_magictoken('%s-computed' % magictoken) or {} |
835 | 835 |
formdata.data.update(computed_values) |
836 | 836 | |
837 |
if formdata.data.get('edited_formdata_id'): |
|
838 |
# during editing (edited_formdata_id is set when starting edition, |
|
839 |
# when there's no magictoken yet) |
|
840 |
self.edited_data = self.formdef.data_class().get(formdata.data.get('edited_formdata_id')) |
|
841 | ||
837 | 842 |
if self.edit_mode: |
838 | 843 |
if magictoken is None: |
839 | 844 |
# restore edited data early on as it may be required to |
... | ... | |
1002 | 1007 |
self.edited_data.feed_session() |
1003 | 1008 |
token = randbytes(8) |
1004 | 1009 |
get_request().form['magictoken'] = token |
1010 |
self.edited_data.data['edited_formdata_id'] = self.edited_data.id |
|
1005 | 1011 |
session.add_magictoken(token, self.edited_data.data) |
1006 | 1012 | |
1007 | 1013 |
# and restore computed data |
1008 |
- |