Skip to content

Commit

Permalink
fixup!: changes from review
Browse files Browse the repository at this point in the history
  • Loading branch information
rgraber committed Sep 27, 2024
1 parent aab475c commit f40395a
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 19 deletions.
11 changes: 8 additions & 3 deletions kobo/apps/audit_log/serializers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.contrib.auth import get_user_model
from rest_framework import serializers

from kpi.fields.username_hyperlinked import UsernameHyperlinkField
from kpi.fields import RelativePrefixHyperlinkedRelatedField
from .models import AuditLog


Expand Down Expand Up @@ -49,8 +49,13 @@ def get_username(self, audit_log):


class AccessLogSerializer(serializers.Serializer):

user = UsernameHyperlinkField(source='user__username')
user = RelativePrefixHyperlinkedRelatedField(
view_name='user-kpi-detail',
lookup_field='user__username',
lookup_url_kwarg='username',
read_only=True,
source='user__username',
)
date_created = serializers.SerializerMethodField()
username = serializers.CharField(source='user__username')
metadata = serializers.JSONField()
Expand Down
15 changes: 15 additions & 0 deletions kpi/fields/relative_prefix_hyperlinked_related.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,21 @@

class RelativePrefixHyperlinkedRelatedField(HyperlinkedRelatedField):

def get_url(self, obj, view_name, request, format):
# mostly copied from HyperLinkedRelatedField
if hasattr(obj, 'pk') and obj.pk in (None, ''):
return None

# special logic: if obj is a string, just use the value
# this allows us to pass dictionaries to the serializer
# as well as model instances
if isinstance(obj, str):
lookup_value = obj
else:
lookup_value = getattr(obj, self.lookup_field)
kwargs = {self.lookup_url_kwarg: lookup_value}
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)

def to_internal_value(self, data):
try:
http_prefix = data.startswith(('http:', 'https:'))
Expand Down
16 changes: 0 additions & 16 deletions kpi/fields/username_hyperlinked.py

This file was deleted.

0 comments on commit f40395a

Please sign in to comment.