Skip to content

Commit a79b63a

Browse files
Merge pull request #806 from DemocracyLab/qiqochat_impersonation
Live Event: Allow admins to impersonate qiqochat users
2 parents a4abbdd + 9b42cd8 commit a79b63a

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

civictechprojects/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ def index(request, id='Unused but needed for routing purposes; do not remove!'):
420420
context['lastName'] = contributor.last_name
421421
context['isStaff'] = contributor.is_staff
422422
context['volunteeringUpForRenewal'] = contributor.is_up_for_volunteering_renewal()
423-
context['QIQO_IFRAME_URL'] = get_user_qiqo_iframe(contributor)
423+
context['QIQO_IFRAME_URL'] = get_user_qiqo_iframe(contributor, request)
424424

425425
thumbnail = ProjectFile.objects.filter(file_user=request.user.id,
426426
file_category=FileCategory.THUMBNAIL.value).first()

common/helpers/qiqo_chat.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
import json
22
import requests
33
import threading
4+
from urllib import parse as urlparse
45
import civictechprojects.models
56
from django.conf import settings
67
from django.utils import timezone
78
from common.helpers.user_helpers import is_user_blank_name
89

910

10-
def get_user_qiqo_iframe(contributor):
11+
def get_user_qiqo_iframe(contributor, request):
1112
if not contributor.qiqo_uuid:
1213
SubscribeUserToQiqoChat(contributor)
1314
return settings.TEST_IFRAME_URL
1415

16+
source_user_uuid = contributor.uuid
17+
qiqo_user_uuid = contributor.qiqo_uuid
18+
if settings.QIQO_IMPERSONATION_ENABLED:
19+
url_parts = request.GET.urlencode()
20+
query_params = urlparse.parse_qs(url_parts, keep_blank_values=0, strict_parsing=0)
21+
if 'uuid' in query_params:
22+
source_user_uuid = query_params['uuid'][0]
23+
if 'qiqo_uuid' in query_params:
24+
qiqo_user_uuid = query_params['qiqo_uuid'][0]
25+
1526
if not hasattr(settings, 'QIQO_IFRAME_URL'):
1627
return settings.TEST_IFRAME_URL
1728
else:
1829
return settings.QIQO_IFRAME_URL.format(api_key=settings.QIQO_API_KEY,
19-
source_user_uuid=contributor.uuid,
20-
qiqo_user_uuid=contributor.qiqo_uuid)
30+
source_user_uuid=source_user_uuid,
31+
qiqo_user_uuid=qiqo_user_uuid)
2132

2233

2334
class SubscribeUserToQiqoChat(object):

democracylab/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ def read_connection_config(config):
436436
QIQO_API_SECRET = os.environ.get('QIQO_API_SECRET', 'SECRET')
437437
QIQO_CIRCLE_UUID = os.environ.get('QIQO_CIRCLE_UUID', 'nmitq')
438438
QIQO_SIGNUP_TIMEOUT_SECONDS = int(os.environ.get('QIQO_SIGNUP_TIMEOUT_SECONDS', 5))
439+
QIQO_IMPERSONATION_ENABLED = os.environ.get('QIQO_IMPERSONATION_ENABLED', False) == 'True'
439440

440441
BLOG_URL = os.environ.get('BLOG_URL', 'https://blog.democracylab.org')
441442

0 commit comments

Comments
 (0)