Skip to content

Commit a17a307

Browse files
Merge pull request #1627 from learning-unlimited/user_info_in_customforms
Display user data in custom form responses
2 parents ed9b5fb + be63dd1 commit a17a307

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

esp/esp/customforms/DynamicForm.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from esp.customforms.forms import NameField, AddressField
1212
from esp.customforms.DynamicModel import DMH
1313
from esp.utils.forms import DummyField
14-
from esp.users.models import ContactInfo
14+
from esp.users.models import ContactInfo, ESPUser
1515
from esp.cache import cache_function
1616
from esp.program.models import Program
1717

@@ -623,7 +623,10 @@ def getResponseData(self, form):
623623

624624
# Add in the user column if form is not anonymous
625625
if not form.anonymous:
626-
response_data['questions'].append(['user_id', 'User', 'fk'])
626+
response_data['questions'].append(['user_id', 'User ID', 'fk'])
627+
response_data['questions'].append(['user_display', 'User', 'textField'])
628+
response_data['questions'].append(['user_email', 'User e-mail', 'textField'])
629+
response_data['questions'].append(['username', 'Username', 'textField'])
627630

628631
# Add in the column for link fields, if any
629632
if form.link_type != "-1":
@@ -646,14 +649,20 @@ def getResponseData(self, form):
646649
# Include this field only if it isn't a dummy field
647650
elif generic_fields[ftype]['typeMap'] is not DummyField:
648651
response_data['questions'].append([qname, field['label'], ftype])
649-
652+
653+
users = ESPUser.objects.in_bulk(map(lambda response: response['user_id'], responses))
654+
650655
# Now let's set up the responses
651656
for response in responses:
652657
link_instances_cache={}
653658

654659
# Add in user if form is not anonymous
655660
if not form.anonymous:
661+
user = users[response['user_id']]
656662
response['user_id'] = unicode(response['user_id'])
663+
response['user_display'] = user.name()
664+
response['user_email'] = user.email
665+
response['username'] = user.username
657666

658667
# Add in links
659668
if only_fkey_model is not None:

esp/esp/customforms/tests.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ def testForms(self):
200200
for field_spec in indiv_response:
201201
self.assertEqual(self.map_form_value(responses_corrected[key]), indiv_response[key])
202202
self.assertTrue('questions' in response_data)
203-
self.assertEqual(len(response_data['questions']), len(responses_initial) + 1) # provided fields plus user_id
203+
self.assertEqual(len(response_data['questions']), len(responses_initial) + 4) # provided fields plus user_id, user_display, user_email, username
204204
for entry in response_data['questions']:
205-
if entry[0] == 'user_id':
205+
if entry[0] in ['user_id', 'user_display', 'user_email', 'username']:
206206
continue
207207
self.assertTrue(entry[0] in responses_corrected)

0 commit comments

Comments
 (0)