diff --git a/atst/routes/requests/jedi_request_flow.py b/atst/routes/requests/jedi_request_flow.py index fd642478..67a59cc0 100644 --- a/atst/routes/requests/jedi_request_flow.py +++ b/atst/routes/requests/jedi_request_flow.py @@ -33,10 +33,8 @@ class JEDIRequestFlow(object): def _form(self): if self.is_post: return self.form_class()(self.post_data) - elif self.request: - return self.form_class()(data=self.current_step_data) else: - return self.form_class()() + return self.form_class()(data=self.current_step_data) def validate(self): return self.form.validate() @@ -63,15 +61,12 @@ class JEDIRequestFlow(object): # maps user data to fields in OrgForm; this should be moved into the # request initialization process when we have a request schema, or we just # shouldn't record this data on the request - def map_current_user(self): - if self.request: - return { - "fname_request": self.request.creator.first_name, - "lname_request": self.request.creator.last_name, - "email_request": self.request.creator.email - } - else: - return {} + def map_user_data(self, user): + return { + "fname_request": user.first_name, + "lname_request": user.last_name, + "email_request": user.email + } @property def current_step_data(self): @@ -85,9 +80,11 @@ class JEDIRequestFlow(object): data = self.request.body if self.form_section == "information_about_you": form_data = self.request.body.get(self.form_section, {}) - data = { **self.map_current_user(), **form_data } + data = { **self.map_user_data(self.request.creator), **form_data } else: data = self.request.body.get(self.form_section, {}) + elif self.form_section == "information_about_you": + data = self.map_user_data(self.current_user) return defaultdict(lambda: defaultdict(lambda: "Input required"), data) diff --git a/atst/routes/requests/requests_form.py b/atst/routes/requests/requests_form.py index 1c6a7c26..50a47217 100644 --- a/atst/routes/requests/requests_form.py +++ b/atst/routes/requests/requests_form.py @@ -9,7 +9,7 @@ from atst.domain.exceptions import UnauthorizedError @requests_bp.route("/requests/new/", methods=["GET"]) def requests_form_new(screen): - jedi_flow = JEDIRequestFlow(screen, request=None) + jedi_flow = JEDIRequestFlow(screen, request=None, current_user=g.current_user) return render_template( "requests/screen-%d.html" % int(screen), diff --git a/tests/routes/test_request_new.py b/tests/routes/test_request_new.py index 06cd47da..7d770a28 100644 --- a/tests/routes/test_request_new.py +++ b/tests/routes/test_request_new.py @@ -80,6 +80,17 @@ def test_creator_info_is_autopopulated(monkeypatch, client, user_session): assert 'value="{}"'.format(user.email) in body +def test_creator_info_is_autopopulated_for_new_request(monkeypatch, client, user_session): + user = UserFactory.create() + user_session(user) + + response = client.get("/requests/new/2") + body = response.data.decode() + assert 'value="{}"'.format(user.first_name) in body + assert 'value="{}"'.format(user.last_name) in body + assert 'value="{}"'.format(user.email) in body + + def test_non_creator_info_is_not_autopopulated(monkeypatch, client, user_session): user = UserFactory.create() creator = UserFactory.create()