diff --git a/api/v1/serializers.py b/api/v1/serializers.py index cc16d8e8..1ec91a21 100644 --- a/api/v1/serializers.py +++ b/api/v1/serializers.py @@ -6,12 +6,29 @@ from . import Base64ImageField from apps.course.models import Category, Course, Material, Lesson, Like from apps.content.models import ( Image, Text, ImageText, Video, - Gallery, GalleryImage, + Gallery, GalleryImage, ImageObject, ) User = get_user_model() +class ImageObjectSerializer(serializers.ModelSerializer): + image = Base64ImageField( + required=True, allow_empty_file=False, allow_null=False, + ) + + class Meta: + model = ImageObject + fields = ( + 'id', + 'image', + ) + + read_only_fields = ( + 'id', + ) + + class MaterialSerializer(serializers.ModelSerializer): class Meta: diff --git a/api/v1/urls.py b/api/v1/urls.py index 6483f23d..846af2ae 100644 --- a/api/v1/urls.py +++ b/api/v1/urls.py @@ -12,7 +12,7 @@ from .views import ( ImageViewSet, TextViewSet, ImageTextViewSet, VideoViewSet, GalleryViewSet, GalleryImageViewSet, - UserViewSet, LessonViewSet, + UserViewSet, LessonViewSet, ImageObjectViewSet, ) router = DefaultRouter() @@ -22,6 +22,7 @@ router.register(r'materials', MaterialViewSet, base_name='materials') router.register(r'lessons', LessonViewSet, base_name='lessons') router.register(r'likes', LikeViewSet, base_name='likes') +router.register(r'image-objects', ImageObjectViewSet, base_name='image-objects') router.register(r'images', ImageViewSet, base_name='images') router.register(r'texts', TextViewSet, base_name='texts') router.register(r'image-texts', ImageTextViewSet, base_name='image-texts') diff --git a/api/v1/views.py b/api/v1/views.py index 3cfeaa5e..7ecb780d 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -15,19 +15,25 @@ from .serializers import ( UserSerializer, UserPhotoSerializer, LessonSerializer, ContentImageSerializer, GalleryImageSerializer, CoverImageSerializer, - CourseRetrieveSerializer, + CourseRetrieveSerializer, ImageObjectSerializer, ) from .permissions import IsAdmin, IsAdminOrIsSelf, IsAuthorOrAdmin, IsAuthorObjectOrAdmin from apps.course.models import Category, Course, Material, Lesson, Like from apps.content.models import ( Image, Text, ImageText, Video, - Gallery, GalleryImage, + Gallery, GalleryImage, ImageObject, ) User = get_user_model() +class ImageObjectViewSet(ExtendedModelViewSet): + queryset = ImageObject.objects.all() + serializer_class = ImageObjectSerializer + # permission_classes = (IsAuthorOrAdmin,) + + class MaterialViewSet(ExtendedModelViewSet): queryset = Material.objects.all() serializer_class = MaterialSerializer diff --git a/apps/content/admin.py b/apps/content/admin.py index 53619829..88c5a8bc 100644 --- a/apps/content/admin.py +++ b/apps/content/admin.py @@ -7,10 +7,15 @@ from polymorphic.admin import ( from apps.content.models import ( Content, Image, Text, ImageText, Video, - Gallery, GalleryImage, + Gallery, GalleryImage, ImageObject, ) +@admin.register(ImageObject) +class ImageObjectAdmin(admin.ModelAdmin): + pass + + class ContentChildAdmin(PolymorphicChildModelAdmin): base_model = Content