Files
nikolark b12413ed67 ✨ Modernize bit bit
- bumps
- poetry
- linting
2022-08-07 15:44:40 +02:00

50 lines
1.4 KiB
Python

from passlib.hash import sha512_crypt
from rest_framework import serializers
from .models import Alias, Domain, User
class AliasSerializer(serializers.ModelSerializer):
def create(self, validated_data):
# Workaround to accept duplicates
# FIXME, will fail with existing alias with validated_data['active']=False
alias, created = Alias.objects.get_or_create(**validated_data)
return alias
class Meta:
model = Alias
validators = [] # Disable unique togheter check
fields = "__all__"
class AliasDeleteSerializer(serializers.ModelSerializer):
class Meta:
model = Alias
validators = [] # No Unique togheter check on deletion
fields = "__all__"
class DomainSerializer(serializers.ModelSerializer):
class Meta:
model = Domain
fields = "__all__"
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = "__all__"
extra_kwargs = {"password": {"write_only": True}}
def _hash_password(self, raw_password):
return sha512_crypt.encrypt(raw_password)
def create(self, validated_data):
user = User(
email=validated_data["email"],
domain=validated_data["domain"],
password=self._hash_password(validated_data["password"]),
)
user.save()
return user