Skip to content
Snippets Groups Projects
Commit ae954d12 authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Show log and emo issuer full name in web view

The serializers for logs and emobservations (for both events and
superevents) now give the user's full name for web views (unless
it's blank; then fallback to username) and the username otherwise.
We check for web view 'status' by seeing whether it is an AJAX
request. This matches the previous behavior before the development
of the superevents features.
parent 40259189
No related branches found
No related tags found
No related merge requests found
......@@ -297,8 +297,7 @@ class SupereventLogSerializer(serializers.ModelSerializer):
self = serializers.SerializerMethodField(read_only=True)
created = serializers.DateTimeField(format=settings.GRACE_STRFTIME_FORMAT,
read_only=True)
issuer = serializers.SlugRelatedField(slug_field='username',
read_only=True)
issuer = serializers.SerializerMethodField(read_only=True)
tag_names = serializers.SlugRelatedField(slug_field='name', many=True,
source='tags', read_only=True)
file = serializers.SerializerMethodField(read_only=True)
......@@ -330,6 +329,16 @@ class SupereventLogSerializer(serializers.ModelSerializer):
args=[obj.superevent.superevent_id, obj.N],
request=self.context.get('request', None))
def get_issuer(self, obj):
# Show full name for web interface views (fetched via AJAX), unless
# it's blank - then show username. Outside of the web view, show the
# username.
request = self.context.get('request', None)
user = obj.issuer
if (request and request.is_ajax()):
return (user.get_full_name() or user.get_username())
return user.get_username()
def get_file(self, obj):
link = None
if obj.filename:
......@@ -601,8 +610,7 @@ class SupereventEMObservationSerializer(serializers.ModelSerializer):
'same length.'),
}
# Read only fields
submitter = serializers.SlugRelatedField(slug_field='username',
read_only=True)
submitter = serializers.SerializerMethodField(read_only=True)
created = serializers.DateTimeField(format=settings.GRACE_STRFTIME_FORMAT,
read_only=True)
footprint_count = serializers.SerializerMethodField(read_only=True)
......@@ -649,6 +657,16 @@ class SupereventEMObservationSerializer(serializers.ModelSerializer):
def get_footprint_count(self, obj):
return obj.emfootprint_set.count()
def get_submitter(self, obj):
# Show full name for web interface views (fetched via AJAX), unless
# it's blank - then show username. Outside of the web view, show the
# username.
request = self.context.get('request', None)
user = obj.submitter
if (request and request.is_ajax()):
return (user.get_full_name() or user.get_username())
return user.get_username()
def validate(self, data):
data = super(SupereventEMObservationSerializer, self).validate(data)
ra_list = data.get('ra_list')
......
......@@ -393,24 +393,19 @@ def eventLogToDict(log, request=None):
# This is purely for convenience in working with the web interface.
tag_names = [tag.name for tag in log.tags.all() ];
if len(log.issuer.last_name):
display_name = "%s %s" % (log.issuer.first_name, log.issuer.last_name)
else:
display_name = log.issuer.username
# Not sure why we need to do this; changing to just be username
issuer_info = log.issuer.username
#issuer_info = {
# "username": log.issuer.username,
# "display_name": display_name,
#}
# User display name
# Show full name for web interface views (fetched via AJAX), unless it's
# blank, then show username. Show username outside of web view.
user_display = log.issuer.get_username()
if (request and request.is_ajax()):
user_display = log.issuer.get_full_name() or log.issuer.get_username()
return {
"N" : log.N,
"comment" : log.comment,
"created" : log.created.strftime(
settings.GRACE_STRFTIME_FORMAT),
"issuer" : issuer_info,
"issuer" : user_display,
"filename" : log.filename,
"file_version" : log.file_version,
"tag_names" : tag_names,
......@@ -471,26 +466,32 @@ def embbEventLogToDict(eel, request=None):
# EMObservation serializer.
def emObservationToDict(emo, request=None):
uri = api_reverse("events:emobservation-detail",
args=[emo.event.graceid(), emo.N],
request=request)
return {
"N" : emo.N,
"footprint_count" : emo.emfootprint_set.count(),
"self" : uri,
"created" : emo.created.strftime(
settings.GRACE_STRFTIME_FORMAT),
"submitter" : emo.submitter.username,
"group" : emo.group.name,
"comment" : emo.comment,
"ra" : emo.ra,
"dec" : emo.dec,
"raWidth" : emo.raWidth,
"decWidth" : emo.decWidth,
"footprints" : [ emFootprintToDict(emf) for emf in emo.emfootprint_set.all()]
}
uri = api_reverse("events:emobservation-detail",
args=[emo.event.graceid(), emo.N], request=request)
# User display name
# Show full name for web interface views (fetched via AJAX), unless it's
# blank, then show username. Show username outside of web view.
user_display = emo.submitter.get_username()
if (request and request.is_ajax()):
user_display = emo.submitter.get_full_name() or \
emo.submitter.get_username()
return {
"N": emo.N,
"footprint_count": emo.emfootprint_set.count(),
"self": uri,
"created": emo.created.strftime(settings.GRACE_STRFTIME_FORMAT),
"submitter": user_display,
"group": emo.group.name,
"comment": emo.comment,
"ra": emo.ra,
"dec": emo.dec,
"raWidth": emo.raWidth,
"decWidth": emo.decWidth,
"footprints": [emFootprintToDict(emf) for emf in
emo.emfootprint_set.all()]
}
# EMFootprint serializer
def emFootprintToDict(emf, request=None):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment