Skip to content
Snippets Groups Projects
serializers.py 1.24 KiB
Newer Older
  • Learn to ignore specific revisions
  • Bodor Máté's avatar
    Bodor Máté committed
    from rest_framework import serializers
    
    from django.utils import timezone
    
    
    from common.serializers import CurrentUserProfileDefault
    
    Bodor Máté's avatar
    Bodor Máté committed
    from . import models
    
    
    class TaskSerializer(serializers.ModelSerializer):
    
        created_by = serializers.HiddenField(default=CurrentUserProfileDefault())
    
    
    Bodor Máté's avatar
    Bodor Máté committed
        class Meta:
            model = models.Task
    
            read_only_fields = ('created_by', 'created_at', 'updated_at')
    
            fields = '__all__'
    
    Bodor Máté's avatar
    Bodor Máté committed
    
    
    Bodor Mate's avatar
    Bodor Mate committed
        def validate(self, data):
            if timezone.now() >= data['deadline']:
                raise serializers.ValidationError('Please, enter appropriate deadline.')
            return data
    
    
    Bodor Máté's avatar
    Bodor Máté committed
    
    class SolutionSerializer(serializers.ModelSerializer):
    
        created_at = serializers.DateTimeField(read_only=True)
        updated_at = serializers.DateTimeField(read_only=True)
    
        created_by = serializers.HiddenField(default=CurrentUserProfileDefault())
    
    Bodor Máté's avatar
    Bodor Máté committed
        class Meta:
            model = models.Solution
    
            read_only_fields = ('created_by', 'created_at', 'updated_at', 'ready')
            fields = ('task', 'created_at', 'updated_at', 'accepted', 'files', 'created_by')
    
    
        def validate(self, data):
            if timezone.now() > data['task'].deadline:
                raise serializers.ValidationError('You late.')
    
    Bodor Mate's avatar
    Bodor Mate committed
            data['accepted'] = False