82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
"""Back account serializers"""
|
|
from rest_framework import serializers
|
|
|
|
from account import models
|
|
from account.models import User
|
|
from account.serializers import RoleBaseSerializer
|
|
from main.models import SiteSettings
|
|
|
|
|
|
class _SiteSettingsSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = SiteSettings
|
|
fields = (
|
|
'id',
|
|
'subdomain',
|
|
'country_code',
|
|
)
|
|
|
|
|
|
class BackUserSerializer(serializers.ModelSerializer):
|
|
last_country = _SiteSettingsSerializer(read_only=True)
|
|
roles = RoleBaseSerializer(many=True, read_only=True)
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = (
|
|
'id',
|
|
'last_login',
|
|
'is_superuser',
|
|
'username',
|
|
'last_name',
|
|
'first_name',
|
|
'is_active',
|
|
'date_joined',
|
|
'image_url',
|
|
'cropped_image_url',
|
|
'email',
|
|
'email_confirmed',
|
|
'unconfirmed_email',
|
|
'email_confirmed',
|
|
'newsletter',
|
|
'password',
|
|
'city',
|
|
'locale',
|
|
'last_ip',
|
|
'last_country',
|
|
# 'roles',
|
|
)
|
|
extra_kwargs = {
|
|
'password': {'write_only': True},
|
|
}
|
|
read_only_fields = ('old_password', 'last_login', 'date_joined', 'city', 'locale', 'last_ip', 'last_country')
|
|
|
|
def create(self, validated_data):
|
|
user = super().create(validated_data)
|
|
user.set_password(validated_data['password'])
|
|
user.save()
|
|
return user
|
|
|
|
|
|
class BackDetailUserSerializer(BackUserSerializer):
|
|
class Meta:
|
|
model = User
|
|
exclude = ('password',)
|
|
read_only_fields = ('old_password', 'last_login', 'date_joined')
|
|
|
|
def create(self, validated_data):
|
|
user = super().create(validated_data)
|
|
user.set_password(validated_data['password'])
|
|
user.save()
|
|
return user
|
|
|
|
|
|
class UserRoleSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = models.UserRole
|
|
fields = [
|
|
'role',
|
|
'user',
|
|
'establishment'
|
|
]
|