Sanitize HTML input

This commit is contained in:
2020-01-15 07:07:12 +00:00
parent 83ab4dffbe
commit 200df3fdc8
2 changed files with 31 additions and 3 deletions

View File

@@ -7,6 +7,7 @@ from rest_auth.registration.serializers import RegisterSerializer
from rest_auth.serializers import UserDetailsSerializer
from uuid import uuid4
from PIL import Image
from bleach.sanitizer import Cleaner
from . import models, old_models
@@ -44,12 +45,37 @@ def process_image(upload):
return small, medium, large
ALLOWED_TAGS = [
'h3',
'p',
'br',
'strong',
'em',
'u',
'code',
'ol',
'li',
'ul',
'a',
]
clean = Cleaner(tags=ALLOWED_TAGS).clean
class UserEmailField(serializers.ModelField):
def to_representation(self, obj):
return getattr(obj.user, 'email', obj.old_email)
def to_internal_value(self, data):
return serializers.EmailField().run_validation(data)
class HTMLField(serializers.CharField):
def to_internal_value(self, data):
data = clean(data)
return super().to_internal_value(data)
@@ -221,14 +247,13 @@ class SessionListSerializer(SessionSerializer):
class CourseSerializer(serializers.ModelSerializer):
name = serializers.CharField()
description = serializers.CharField(write_only=True)
class Meta:
model = models.Course
fields = ['id', 'name', 'description']
fields = ['id', 'name']
class CourseDetailSerializer(serializers.ModelSerializer):
sessions = SessionListSerializer(many=True, read_only=True)
description = HTMLField()
class Meta:
model = models.Course
fields = '__all__'