Update lesson serializer

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 15f5d3b9e8
commit 187906398b
  1. 147
      api/v1/serializers/course.py

@ -192,6 +192,7 @@ class CourseCreateSerializer(serializers.ModelSerializer):
cover=ImageObject.objects.get(id=material['cover']), cover=ImageObject.objects.get(id=material['cover']),
short_description=material['short_description'], short_description=material['short_description'],
) )
course.materials.add(m)
return course return course
def update(self, instance, validated_data): def update(self, instance, validated_data):
@ -289,6 +290,10 @@ class CourseSerializer(CourseCreateSerializer):
class LessonCreateSerializer(serializers.ModelSerializer): class LessonCreateSerializer(serializers.ModelSerializer):
content = serializers.ListSerializer(
child=ContentCreateSerializer(),
required=False,
)
class Meta: class Meta:
model = Lesson model = Lesson
@ -305,12 +310,152 @@ class LessonCreateSerializer(serializers.ModelSerializer):
read_only_fields = ( read_only_fields = (
'id', 'id',
'content',
'created_at', 'created_at',
'update_at', 'update_at',
) )
def create(self, validated_data):
content = validated_data.pop('content', [])
lesson = super().create(validated_data)
for c in content:
if c['type'] == 'text':
if 'id' in c['data'] and c['data']['id']:
t = Text.objects.get(id=c['data']['id'])
t.position = c['data']['position']
t.title = c['data']['title']
t.lesson = lesson
t.txt = c['data']['txt']
t.save()
else:
t = Text.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
txt=c['data']['txt'],
)
elif c['type'] == 'image':
if 'id' in c['data'] and c['data']['id']:
i = Image.objects.get(id=c['data']['id'])
i.position = c['data']['position']
i.title = c['data']['title']
i.lesson = lesson
i.img = ImageObject.objects.get(id=c['data']['img'])
i.save()
else:
i = Image.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
img=ImageObject.objects.get(id=c['data']['img']),
)
elif c['type'] == 'image-text':
if 'id' in c['data'] and c['data']['id']:
it = ImageText.objects.get(id=c['data']['id'])
it.position = c['data']['position']
it.title = c['data']['title']
it.lesson = lesson
it.img = ImageObject.objects.get(id=c['data']['img'])
it.txt = c['data']['txt']
it.save()
else:
it = ImageText.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
img=ImageObject.objects.get(id=c['data']['img']),
txt=c['data']['txt'],
)
elif c['type'] == 'video':
if 'id' in c['data'] and c['data']['id']:
v = Video.objects.get(id=c['data']['id'])
v.position = c['data']['position']
v.title = c['data']['title']
v.lesson = lesson
v.url = c['data']['url']
v.save()
else:
v = Video.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
url=c['data']['url'],
)
return lesson
def update(self, instance, validated_data):
content = validated_data.pop('content', [])
lesson = super().update(instance, validated_data)
for c in content:
if c['type'] == 'text':
if 'id' in c['data'] and c['data']['id']:
t = Text.objects.get(id=c['data']['id'])
t.position = c['data']['position']
t.title = c['data']['title']
t.lesson = lesson
t.txt = c['data']['txt']
t.save()
else:
t = Text.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
txt=c['data']['txt'],
)
elif c['type'] == 'image':
if 'id' in c['data'] and c['data']['id']:
i = Image.objects.get(id=c['data']['id'])
i.position = c['data']['position']
i.title = c['data']['title']
i.lesson = lesson
i.img = ImageObject.objects.get(id=c['data']['img'])
i.save()
else:
i = Image.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
img=ImageObject.objects.get(id=c['data']['img']),
)
elif c['type'] == 'image-text':
if 'id' in c['data'] and c['data']['id']:
it = ImageText.objects.get(id=c['data']['id'])
it.position = c['data']['position']
it.title = c['data']['title']
it.lesson = lesson
it.img = ImageObject.objects.get(id=c['data']['img'])
it.txt = c['data']['txt']
it.save()
else:
it = ImageText.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
img=ImageObject.objects.get(id=c['data']['img']),
txt=c['data']['txt'],
)
elif c['type'] == 'video':
if 'id' in c['data'] and c['data']['id']:
v = Video.objects.get(id=c['data']['id'])
v.position = c['data']['position']
v.title = c['data']['title']
v.lesson = lesson
v.url = c['data']['url']
v.save()
else:
v = Video.objects.create(
position=c['data']['position'],
title=c['data']['title'],
lesson=lesson,
url=c['data']['url'],
)
return lesson
class LessonSerializer(LessonCreateSerializer): class LessonSerializer(LessonCreateSerializer):
course = CourseSerializer() course = CourseSerializer()
cover = ImageObjectSerializer() cover = ImageObjectSerializer()
content = ContentSerializer()

Loading…
Cancel
Save