Update Course and gallery serializers

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 24c31b314a
commit 181ba1c9b7
  1. 24
      api/v1/serializers/content.py
  2. 36
      api/v1/serializers/course.py

@ -180,13 +180,14 @@ class ContentSerializer(serializers.ModelSerializer):
return super(ContentSerializer, self).to_representation(obj) return super(ContentSerializer, self).to_representation(obj)
class GallerySerializer(serializers.ModelSerializer): class GalleryImageCreateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Gallery model = GalleryImage
fields = ( fields = (
'id', 'id',
'title', 'gallery',
'img',
'created_at', 'created_at',
'update_at', 'update_at',
) )
@ -198,14 +199,19 @@ class GallerySerializer(serializers.ModelSerializer):
) )
class GalleryImageCreateSerializer(serializers.ModelSerializer): class GalleryImageSerializer(GalleryImageCreateSerializer):
img = ImageObjectSerializer()
class GallerySerializer(serializers.ModelSerializer):
gallery_images = GalleryImageSerializer(many=True)
class Meta: class Meta:
model = GalleryImage model = Gallery
fields = ( fields = (
'id', 'id',
'gallery', 'title',
'img', 'gallery_images',
'created_at', 'created_at',
'update_at', 'update_at',
) )
@ -215,7 +221,3 @@ class GalleryImageCreateSerializer(serializers.ModelSerializer):
'created_at', 'created_at',
'update_at', 'update_at',
) )
class GalleryImageSerializer(GalleryImageCreateSerializer):
img = ImageObjectSerializer()

@ -76,6 +76,7 @@ class CourseCreateSerializer(serializers.ModelSerializer):
required=False, required=False,
) )
materials = MaterialSerializer(many=True, required=False) materials = MaterialSerializer(many=True, required=False)
gallery = GallerySerializer()
class Meta: class Meta:
model = Course model = Course
@ -110,7 +111,7 @@ class CourseCreateSerializer(serializers.ModelSerializer):
'update_at', 'update_at',
) )
def dispatch_content(self, course, validated_data, content, materials): def dispatch_content(self, course, content, materials):
for c in content: for c in content:
if c['type'] == 'text': if c['type'] == 'text':
if 'id' in c['data'] and c['data']['id']: if 'id' in c['data'] and c['data']['id']:
@ -189,18 +190,47 @@ class CourseCreateSerializer(serializers.ModelSerializer):
) )
course.materials.add(m) course.materials.add(m)
def dispatch_gallery(self, course, gallery):
if gallery:
if 'id' in gallery and gallery['id']:
g = Gallery.objects.get(id=gallery['id'])
g.title = gallery.get('title', g.title)
g.save()
else:
g = Gallery.objects.create(
title=gallery.get('title', '')
)
if 'images' in gallery:
for i in gallery['images']:
if 'id' in i and i['id']:
gi = GalleryImage.objects.get(id=i['id'])
gi.gallery = g
gi.img = i['img']
gi.save()
else:
gi = GalleryImage.objects.create(
gallery=g,
img=i['img'],
)
course.gallery = g
course.save()
def create(self, validated_data): def create(self, validated_data):
content = validated_data.pop('content', []) content = validated_data.pop('content', [])
materials = validated_data.pop('materials', []) materials = validated_data.pop('materials', [])
gallery = validated_data.pop('gallery', {})
course = super().create(validated_data) course = super().create(validated_data)
self.dispatch_content(course, validated_data, content, materials) self.dispatch_content(course, content, materials)
self.dispatch_gallery(course, gallery)
return course return course
def update(self, instance, validated_data): def update(self, instance, validated_data):
content = validated_data.pop('content', []) content = validated_data.pop('content', [])
materials = validated_data.pop('materials', []) materials = validated_data.pop('materials', [])
gallery = validated_data.pop('gallery', {})
course = super().update(instance, validated_data) course = super().update(instance, validated_data)
self.dispatch_content(course, validated_data, content, materials) self.dispatch_content(course, content, materials)
self.dispatch_gallery(course, gallery)
return course return course

Loading…
Cancel
Save