46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
from django.contrib.auth import get_user_model
|
|
from rest_framework import serializers
|
|
|
|
from apps.accounts.models import ApiKey
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class PkAsIdMixin(serializers.Serializer):
|
|
"""Keep JSON `id` stable after ERD-named primary keys."""
|
|
|
|
id = serializers.IntegerField(source="pk", read_only=True)
|
|
|
|
|
|
class UserSerializer(PkAsIdMixin, serializers.ModelSerializer):
|
|
class Meta:
|
|
model = User
|
|
fields = ["id", "user_name", "status", "created_at", "updated_at"]
|
|
read_only_fields = ["id", "created_at", "updated_at"]
|
|
|
|
|
|
class LoginSerializer(serializers.Serializer):
|
|
user_name = serializers.CharField(max_length=30)
|
|
password = serializers.CharField(write_only=True)
|
|
|
|
|
|
class ApiKeySerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ApiKey
|
|
fields = [
|
|
"id",
|
|
"name",
|
|
"prefix",
|
|
"is_active",
|
|
"last_used_at",
|
|
"created_at",
|
|
"updated_at",
|
|
"user",
|
|
]
|
|
read_only_fields = fields
|
|
|
|
|
|
class ApiKeyCreateSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=100)
|
|
user_id = serializers.IntegerField(required=False)
|