django-requestlogs icon indicating copy to clipboard operation
django-requestlogs copied to clipboard

User IDs that are UUID are converted to Integer in the log

Open bystander58 opened this issue 4 years ago • 2 comments

Since the output is for a log (display only), would it make better sense to change "IntegerField" to "CharField" in (storages.py)?

class UserSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    username = serializers.CharField()

bystander58 avatar Feb 03 '21 19:02 bystander58

I believe it makes more sense to keep the default as it is and you create a custom LogEntrySerializer by extending BaseEntrySerializer and id field with CharField() type.

class LogEntrySerializer(serializers.Serializer):
    class ResponseSerializer(serializers.Serializer):
        status_code = serializers.IntegerField(read_only=True)
        data = JsonDumpField(read_only=True)

    class UserSerializer(serializers.Serializer):
        id = serializers.CharField()
        username = serializers.CharField()

    action_name = serializers.CharField(read_only=True)
    execution_time = serializers.DurationField(read_only=True)
    timestamp = serializers.DateTimeField(read_only=True)
    ip_address = serializers.CharField(read_only=True)
    request = BaseRequestSerializer(read_only=True)
    response = ResponseSerializer(read_only=True)
    user = UserSerializer()

and change SERIALIZER_CLASS settings to:

REQUESTLOGS = {
    ...
    'SERIALIZER_CLASS': 'app.serializers.LogEntrySerializer',
    ...
}

leogregianin avatar May 26 '22 19:05 leogregianin

Thanks for providing the example, @leogregianin

Closing this issue soon.

Raekkeri avatar May 31 '22 13:05 Raekkeri