ConceptPortal-public/rsconcept/backend/apps/library/serializers/basics.py

51 lines
1.6 KiB
Python
Raw Normal View History

''' Basic serializers that do not interact with database. '''
from rest_framework import serializers
from shared import messages as msg
from ..models import AccessPolicy, validate_location
class LocationSerializer(serializers.Serializer):
''' Serializer: Item location. '''
location = serializers.CharField(max_length=500)
def validate(self, attrs):
attrs = super().validate(attrs)
if not validate_location(attrs['location']):
raise serializers.ValidationError({
'location': msg.invalidLocation()
})
return attrs
class RenameLocationSerializer(serializers.Serializer):
''' Serializer: rename location. '''
target = serializers.CharField(max_length=500)
new_location = serializers.CharField(max_length=500)
def validate(self, attrs):
attrs = super().validate(attrs)
if not validate_location(attrs['target']):
raise serializers.ValidationError({
'target': msg.invalidLocation()
})
if not validate_location(attrs['target']):
raise serializers.ValidationError({
'new_location': msg.invalidLocation()
})
return attrs
class AccessPolicySerializer(serializers.Serializer):
''' Serializer: Constituenta renaming. '''
access_policy = serializers.CharField()
def validate(self, attrs):
attrs = super().validate(attrs)
if not attrs['access_policy'] in AccessPolicy.values:
raise serializers.ValidationError({
'access_policy': msg.invalidEnum(attrs['access_policy'])
})
return attrs