Files
mailadmin/mailadmin/serializers.py
T

56 lines
1.5 KiB
Python

from django.conf import settings
from django.contrib.auth.models import Group, User
from rest_framework import serializers
from rest_framework.relations import SlugRelatedField
from mailadmin.models import OrgUnit
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ["id", "name"]
class UserSerializer(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
class Meta:
model = User
exclude = ["password", "user_permissions"]
class OrgUnitSerializer(serializers.ModelSerializer):
admin_groups = GroupSerializer(many=True)
member_groups = GroupSerializer(many=True)
prefixes = SlugRelatedField(many=True, read_only=True, slug_field="name")
class Meta:
model = OrgUnit
fields = [
"id",
"admin_groups",
"member_groups",
"prefixes",
"inside_id",
"name",
"is_active",
"created",
"update",
]
class AliasSerializer(serializers.Serializer):
source = serializers.EmailField(required=True)
destination = serializers.EmailField(required=True)
domain = serializers.IntegerField(required=True)
def validate_source(self, value):
_domain_name = settings.NEUF_EMAIL_DOMAIN_NAME
domain_part = value.split("@")[1]
if domain_part != _domain_name:
raise serializers.ValidationError(f"source '{value}' is not in domain {_domain_name}")
return value