formdata: add substition variables for submission data (#9751)

This commit is contained in:
Frédéric Péters 2016-01-26 13:49:01 +01:00
parent f1e59b2bc3
commit fc0e33e3f8
3 changed files with 57 additions and 0 deletions

View File

@ -219,6 +219,37 @@ champs, etc.
</table>
</section>
<section id="submission-info">
<title>Informations sur la saisie</title>
<p>
Les données contiennent aussi des informations sur le contexte de saisie de
la demande.
</p>
<table shade="rows">
<tr>
<td><p><code>form_submission_backoffice</code></p></td>
<td><p>Vrai si la saisie a eu lui depuis le backoffice</p></td>
</tr>
<tr>
<td><p><code>form_submission_channel</code></p></td>
<td><p>Identifiant du canal de saisie (ex: mail)</p></td>
</tr>
<tr>
<td><p><code>form_submission_channel_label</code></p></td>
<td><p>Libellé du canal de saisie (ex: Courrier)</p></td>
</tr>
</table>
<p>
Si d'autres informations ont été fournies sur le contexte de la saisie
elles sont disponibles dans des variables de la forme
<code>form_submission_context_<var>foobar</var></code>.
</p>
</section>
</section>
<section id="session-variables">

View File

@ -76,6 +76,26 @@ def test_manual_display_id(pub):
assert substvars.get('form_number') == 'bar'
assert substvars.get('form_number_raw') == str(formdata.id)
def test_submission_context(pub):
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.backoffice_submission = True
formdata.submission_channel = 'mail'
formdata.submission_context = {
'mail_url': 'http://www.example.com/test.pdf',
}
substvars = formdata.get_substitution_variables()
assert substvars.get('form_submission_backoffice') is True
assert substvars.get('form_submission_channel') == 'mail'
assert substvars.get('form_submission_channel_label') == 'Mail'
assert substvars.get('form_submission_context_mail_url') == 'http://www.example.com/test.pdf'
formdata = formdef.data_class()()
substvars = formdata.get_substitution_variables()
assert substvars.get('form_submission_backoffice') is False
assert substvars.get('form_submission_channel') is None
assert substvars.get('form_submission_channel_label') == 'Web'
def test_just_created(pub):
formdef.data_class().wipe()
formdata = formdef.data_class()()

View File

@ -409,6 +409,12 @@ class FormData(StorableObject):
if self.tracking_code:
d['form_tracking_code'] = self.tracking_code
d['form_submission_backoffice'] = self.backoffice_submission
d['form_submission_channel'] = self.submission_channel
d['form_submission_channel_label'] = self.get_submission_channel_label()
if self.submission_context:
d['form_submission_context'] = self.submission_context
# formdef and category variables
d.update(self.formdef.get_substitution_variables(minimal=minimal))