misc: insert tracking code if not found (#51849)
This commit is contained in:
parent
b727a1f5af
commit
3d551101a6
|
@ -481,6 +481,32 @@ def test_backoffice_parallel_submission(pub):
|
|||
assert 'This form has already been submitted.' in resp4.text
|
||||
|
||||
|
||||
def test_backoffice_submission_autosave_tracking_code(pub):
|
||||
user = create_user(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.StringField(
|
||||
id='1', label='1st field', type='string', display_locations=['validation', 'summary', 'listings']
|
||||
),
|
||||
]
|
||||
formdef.backoffice_submission_roles = user.roles[:]
|
||||
formdef.workflow_roles = {'_receiver': 1}
|
||||
formdef.enable_tracking_codes = True
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/submission/form-title/')
|
||||
resp.form['f1'] = 'foo'
|
||||
|
||||
resp_autosave = app.post('/backoffice/submission/form-title/autosave', params=resp.form.submit_fields())
|
||||
assert resp_autosave.json['result'] == 'success'
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
resp = resp.form.submit('submit') # -> done
|
||||
|
||||
|
||||
def test_backoffice_submission_dispatch(pub):
|
||||
user = create_user(pub)
|
||||
|
||||
|
|
|
@ -2588,8 +2588,15 @@ class TrackingCode(SqlMixin, wcs.tracking_code.TrackingCode):
|
|||
else:
|
||||
column_names = sql_dict.keys()
|
||||
sql_dict['id'] = self.id
|
||||
sql_statement = '''UPDATE %s SET %s WHERE id = %%(id)s RETURNING id''' % (
|
||||
sql_statement = '''INSERT INTO %s (%s)
|
||||
VALUES (%s)
|
||||
ON CONFLICT ON CONSTRAINT tracking_codes_pkey
|
||||
DO UPDATE
|
||||
SET %s
|
||||
RETURNING id''' % (
|
||||
self._table_name,
|
||||
', '.join(column_names),
|
||||
', '.join(['%%(%s)s' % x for x in column_names]),
|
||||
', '.join(['%s = %%(%s)s' % (x, x) for x in column_names]),
|
||||
)
|
||||
cur.execute(sql_statement, sql_dict)
|
||||
|
|
Loading…
Reference in New Issue