diff --git a/gracedb/api/v1/superevents/serializers.py b/gracedb/api/v1/superevents/serializers.py index 8fc2b212199b4683e3113a05508246d259ca5f6c..e1b40a53e024fc7dabe5900ecda4c3a2911e7c7a 100644 --- a/gracedb/api/v1/superevents/serializers.py +++ b/gracedb/api/v1/superevents/serializers.py @@ -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') diff --git a/gracedb/events/view_utils.py b/gracedb/events/view_utils.py index 1db5ca57ef7d1512ec7e69f71013f38892dbd071..fd994a31b5d7ce9e9adaa7cd6e4d03159e4ac35b 100644 --- a/gracedb/events/view_utils.py +++ b/gracedb/events/view_utils.py @@ -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):