Include speaker user name in schedule JSON
When a user has permission to see contact details, expose the speaker's username in the author object, for integration between systems.
This commit is contained in:
parent
731858c191
commit
97391d0210
1 changed files with 7 additions and 3 deletions
10
vendor/symposion/schedule/views.py
vendored
10
vendor/symposion/schedule/views.py
vendored
|
@ -217,22 +217,26 @@ def has_contact_perm(user):
|
||||||
return user.has_perm('symposion_speakers.can_view_contact_details') or user.is_staff
|
return user.has_perm('symposion_speakers.can_view_contact_details') or user.is_staff
|
||||||
|
|
||||||
|
|
||||||
def make_speaker_dict(user, speaker):
|
def make_speaker_dict(speaker, can_view_contact_details):
|
||||||
return {
|
return {
|
||||||
'name': speaker.name,
|
'name': speaker.name,
|
||||||
'twitter': speaker.twitter_username,
|
'twitter': speaker.twitter_username,
|
||||||
'contact': speaker.email if has_contact_perm(user) else 'redacted',
|
'contact': speaker.email if can_view_contact_details else 'redacted',
|
||||||
'picture_url': speaker_photo(None, speaker, 120),
|
'picture_url': speaker_photo(None, speaker, 120),
|
||||||
'code': speaker.code,
|
'code': speaker.code,
|
||||||
'biography': speaker.biography,
|
'biography': speaker.biography,
|
||||||
|
'username': speaker.user_id if can_view_contact_details else '',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def schedule_json(request):
|
def schedule_json(request):
|
||||||
slots = Slot.objects.filter(
|
slots = Slot.objects.filter(
|
||||||
day__schedule__published=True,
|
day__schedule__published=True,
|
||||||
day__schedule__hidden=False
|
day__schedule__hidden=False
|
||||||
).order_by("start")
|
).order_by("start")
|
||||||
|
|
||||||
|
can_view_contact_details = has_contact_perm(request.user)
|
||||||
|
|
||||||
protocol = request.META.get('HTTP_X_FORWARDED_PROTO', 'http')
|
protocol = request.META.get('HTTP_X_FORWARDED_PROTO', 'http')
|
||||||
data = []
|
data = []
|
||||||
for slot in slots:
|
for slot in slots:
|
||||||
|
@ -269,7 +273,7 @@ def schedule_json(request):
|
||||||
|
|
||||||
slot_data.update({
|
slot_data.update({
|
||||||
"name": slot.content.title,
|
"name": slot.content.title,
|
||||||
"authors": [make_speaker_dict(request.user, s) for s in slot.content.speakers()],
|
"authors": [make_speaker_dict(s, can_view_contact_details) for s in slot.content.speakers()],
|
||||||
"abstract": slot.content.abstract,
|
"abstract": slot.content.abstract,
|
||||||
"conf_url": "%s://%s%s" % (
|
"conf_url": "%s://%s%s" % (
|
||||||
protocol,
|
protocol,
|
||||||
|
|
Loading…
Reference in a new issue