From b378ebba18c44b3c2c4187b87b5dad25eff4a31a Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Wed, 18 Jul 2018 10:30:33 +0200 Subject: [PATCH] submission: handle NameID in query string (#25305) --- wcs/backoffice/submission.py | 9 +++++++++ wcs/forms/root.py | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/wcs/backoffice/submission.py b/wcs/backoffice/submission.py index 2ef33414..ad24d8df 100644 --- a/wcs/backoffice/submission.py +++ b/wcs/backoffice/submission.py @@ -188,6 +188,13 @@ class FormFillPage(PublicFormFillPage): if self.selected_submission_channel: filled.submission_channel = self.selected_submission_channel filled.submission_context['agent_id'] = get_request().user.id + + magictoken = get_request().form.get('magictoken') + if magictoken: + user_id = get_session().get_by_magictoken(magictoken, {}).get('future_formdata_user_id') + if user_id: + formdata.user_id = user_id + filled.store() self.set_tracking_code(filled) @@ -210,6 +217,8 @@ class FormFillPage(PublicFormFillPage): if not formdata.submission_context: formdata.submission_context = {} formdata.submission_context['agent_id'] = get_request().user.id + if data.get('future_formdata_user_id'): + formdata.user_id = data['future_formdata_user_id'] formdata.store() return formdata diff --git a/wcs/forms/root.py b/wcs/forms/root.py index 491cb3dd..9cd81c66 100644 --- a/wcs/forms/root.py +++ b/wcs/forms/root.py @@ -313,6 +313,14 @@ class FormPage(Directory, FormTemplateMixin): cancelurl = get_request().form['cancelurl'] session.add_magictoken(magictoken, {'__cancelurl': cancelurl}) + if (get_request().is_in_backoffice() and page == self.pages[0] and + get_request().form.get('NameID')): + name_id = get_request().form['NameID'] + if isinstance(name_id, basestring): + users = list(get_publisher().user_class.get_users_with_name_identifier(name_id)) + if users: + session.add_magictoken(magictoken, {'future_formdata_user_id': users[0].id}) + if self.edit_mode and (page is None or page == self.pages[-1]): form.add_submit('submit', _('Save Changes')) elif not self.has_confirmation_page() and (page is None or page == self.pages[-1]): -- 2.18.0