@ -1,9 +1,15 @@
import base64
import os
from jwt import DecodeError
from jwt import DecodeError
from rest_framework . parsers import MultiPartParser
from courses . models import Course , Lesson , Topic
from courses . models import Course , Lesson , Topic , upload_material
from rest_framework . renderers import JSONRenderer
from rest_framework . renderers import JSONRenderer , BrowsableAPIRenderer
from rest_framework . response import Response
from rest_framework . response import Response
from rest_framework . views import APIView
from rest_framework . views import APIView
from django . core . files . storage import default_storage
from django . core . files . base import ContentFile
from courses . serializers import CourseDetailSerializer , CourseTreeSerializer , LessonSerializer , TeacherLessonSerializer
from courses . serializers import CourseDetailSerializer , CourseTreeSerializer , LessonSerializer , TeacherLessonSerializer
import jwt
import jwt
@ -87,18 +93,27 @@ class DeleteLessonView(APIView):
class UpdateLessonView ( APIView ) :
class UpdateLessonView ( APIView ) :
renderer_classes = ( JSONRenderer , )
renderer_classes = ( JSONRenderer , BrowsableAPIRenderer )
parser_classes = ( MultiPartParser , )
@staticmethod
@staticmethod
def post ( request ) :
def bool_transformer ( val ) :
lesson_token = request . JSON . get ( ' token ' , None )
if val == ' false ' :
sort = request . JSON . get ( ' sort ' , None )
return False
topic_id = request . JSON . get ( ' topic ' , None )
if val == ' true ' :
title = request . JSON . get ( ' title ' , None )
return True
description = request . JSON . get ( ' description ' , None )
return val
video = request . JSON . get ( ' video ' , None )
free = request . JSON . get ( ' free ' , None )
def post ( self , request ) :
is_hm = request . JSON . get ( ' is_hm ' , None )
lesson_token = request . POST . get ( ' token ' , None )
sort = request . POST . get ( ' sort ' , None )
topic_id = request . POST . get ( ' topic ' , None )
title = request . POST . get ( ' title ' , None )
description = request . POST . get ( ' description ' , None )
video = request . POST . get ( ' video ' , None )
materials_url = request . POST . get ( ' materials_url ' , ' ' )
free = self . bool_transformer ( request . POST . get ( ' free ' , None ) )
is_hm = self . bool_transformer ( request . POST . get ( ' is_hm ' , None ) )
if topic_id is None :
if topic_id is None :
return Response ( " topic не передан " , status = 400 )
return Response ( " topic не передан " , status = 400 )
@ -138,6 +153,16 @@ class UpdateLessonView(APIView):
lesson . sort = lesson . sort + 1
lesson . sort = lesson . sort + 1
lesson . save ( )
lesson . save ( )
l . sort = sort
l . sort = sort
materials = list ( l . materials )
if not materials_url == ' ' :
materials = base64 . b64decode ( materials_url ) . decode ( " utf-8 " ) . split ( ' , ' )
for key in request . FILES :
f = request . FILES [ key ]
path = default_storage . save ( upload_material ( l , f . name ) , ContentFile ( f . read ( ) ) )
materials . append ( path )
l . materials = materials
l . save ( )
l . save ( )
return Response ( CourseTreeSerializer ( topic . course ) . data , status = 200 )
return Response ( CourseTreeSerializer ( topic . course ) . data , status = 200 )