autofill user data even if request does not exist yet

This commit is contained in:
dandds 2018-08-10 11:16:27 -04:00
parent f68e5a5ed2
commit 239dcb90a1
3 changed files with 22 additions and 14 deletions

View File

@ -33,10 +33,8 @@ class JEDIRequestFlow(object):
def _form(self): def _form(self):
if self.is_post: if self.is_post:
return self.form_class()(self.post_data) return self.form_class()(self.post_data)
elif self.request:
return self.form_class()(data=self.current_step_data)
else: else:
return self.form_class()() return self.form_class()(data=self.current_step_data)
def validate(self): def validate(self):
return self.form.validate() return self.form.validate()
@ -63,15 +61,12 @@ class JEDIRequestFlow(object):
# maps user data to fields in OrgForm; this should be moved into the # 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 # request initialization process when we have a request schema, or we just
# shouldn't record this data on the request # shouldn't record this data on the request
def map_current_user(self): def map_user_data(self, user):
if self.request: return {
return { "fname_request": user.first_name,
"fname_request": self.request.creator.first_name, "lname_request": user.last_name,
"lname_request": self.request.creator.last_name, "email_request": user.email
"email_request": self.request.creator.email }
}
else:
return {}
@property @property
def current_step_data(self): def current_step_data(self):
@ -85,9 +80,11 @@ class JEDIRequestFlow(object):
data = self.request.body data = self.request.body
if self.form_section == "information_about_you": if self.form_section == "information_about_you":
form_data = self.request.body.get(self.form_section, {}) 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: else:
data = self.request.body.get(self.form_section, {}) 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) return defaultdict(lambda: defaultdict(lambda: "Input required"), data)

View File

@ -9,7 +9,7 @@ from atst.domain.exceptions import UnauthorizedError
@requests_bp.route("/requests/new/<int:screen>", methods=["GET"]) @requests_bp.route("/requests/new/<int:screen>", methods=["GET"])
def requests_form_new(screen): 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( return render_template(
"requests/screen-%d.html" % int(screen), "requests/screen-%d.html" % int(screen),

View File

@ -80,6 +80,17 @@ def test_creator_info_is_autopopulated(monkeypatch, client, user_session):
assert 'value="{}"'.format(user.email) in body 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): def test_non_creator_info_is_not_autopopulated(monkeypatch, client, user_session):
user = UserFactory.create() user = UserFactory.create()
creator = UserFactory.create() creator = UserFactory.create()