add: add admin panel api for user
This commit is contained in:
0
core/apps/admin_panel/serializers/__init__.py
Normal file
0
core/apps/admin_panel/serializers/__init__.py
Normal file
40
core/apps/admin_panel/serializers/user.py
Normal file
40
core/apps/admin_panel/serializers/user.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from django.db import transaction
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.accounts.models import User
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = [
|
||||
'id', 'first_name', 'last_name', 'username', 'password'
|
||||
]
|
||||
extra_kwargs = {'id': {'read_only': True}, 'password': {'write_only': True}}
|
||||
|
||||
def validate_username(self, value):
|
||||
if User.objects.filter(username=value).exists():
|
||||
raise serializers.ValidationError("User with this username already exists")
|
||||
return value
|
||||
|
||||
def create(self, validated_data):
|
||||
with transaction.atomic():
|
||||
user = User.objects.create(
|
||||
first_name=validated_data.get('first_name'),
|
||||
last_name=validated_data.get('last_name'),
|
||||
username=validated_data.get('username'),
|
||||
)
|
||||
user.set_password(validated_data.get('password'))
|
||||
user.save()
|
||||
return user
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
with transaction.atomic():
|
||||
instance.username = validated_data.get('username', instance.username)
|
||||
instance.first_name = validated_data.get('first_name', instance.first_name)
|
||||
instance.last_name = validated_data.get('last_name', instance.last_name)
|
||||
if validated_data.get('password'):
|
||||
instance.set_password(validated_data.get('password'))
|
||||
instance.save()
|
||||
return instance
|
||||
Reference in New Issue
Block a user