From 6390fb2653ece8e6131f714221bbaaeb3d195eeb Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 11 May 2018 14:18:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D1=81=D1=82=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D1=80=D0=B5=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BA=20=D0=BA=D1=83=D1=80=D1=81=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/migrations/0008_auto_20180511_1208.py | 23 +++++++++++++++++++ courses/models.py | 2 +- courses/serializers.py | 7 +----- courses/views.py | 7 ++++-- 4 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 courses/migrations/0008_auto_20180511_1208.py diff --git a/courses/migrations/0008_auto_20180511_1208.py b/courses/migrations/0008_auto_20180511_1208.py new file mode 100644 index 0000000..39b3f95 --- /dev/null +++ b/courses/migrations/0008_auto_20180511_1208.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2018-05-11 12:08 +from __future__ import unicode_literals + +import courses.models +import django.contrib.postgres.fields +from django.db import migrations, models +import lms.tools + + +class Migration(migrations.Migration): + + dependencies = [ + ('courses', '0007_lesson_materials'), + ] + + operations = [ + migrations.AlterField( + model_name='lesson', + name='materials', + field=django.contrib.postgres.fields.ArrayField(base_field=models.FileField(max_length=255, upload_to=courses.models.upload_material, verbose_name='Материал к уроку'), default=lms.tools.get_empty_list, size=None, verbose_name='Материалы к уроку'), + ), + ] diff --git a/courses/models.py b/courses/models.py index bec647d..f7cea7e 100755 --- a/courses/models.py +++ b/courses/models.py @@ -38,7 +38,7 @@ class Lesson(models.Model): description = models.TextField(verbose_name='Описание', blank=True, null=True) video = models.TextField(verbose_name='Код видео', blank=True, null=True) materials = ArrayField( - models.FileField(verbose_name="Материал к уроку", upload_to=upload_material), + models.FileField(verbose_name="Материал к уроку", upload_to=upload_material, max_length=255), verbose_name="Материалы к уроку", default=get_empty_list, ) diff --git a/courses/serializers.py b/courses/serializers.py index 7b2434b..e4403ed 100644 --- a/courses/serializers.py +++ b/courses/serializers.py @@ -38,12 +38,7 @@ class LessonSerializer(MiniLessonSerializer): @staticmethod def get_materials(self): - try: - prefix = 'materials/%s/%s/%s' % (self.topic.course.token, self.topic.id, self.token) - name_list = os.listdir('%s/%s/' % (settings.MEDIA_ROOT, prefix)) - return ["%s%s/%s" % (settings.MEDIA_URL, prefix, i) for i in name_list] - except FileNotFoundError: - return [] + return [settings.MEDIA_URL + i for i in self.materials] class TeacherLessonSerializer(MiniLessonSerializer): diff --git a/courses/views.py b/courses/views.py index d217f5c..b83b8d6 100644 --- a/courses/views.py +++ b/courses/views.py @@ -154,9 +154,12 @@ class UpdateLessonView(APIView): lesson.save() l.sort = sort - materials = list(l.materials) + materials = [] if not materials_url == '': - materials = base64.b64decode(materials_url).decode("utf-8").split(',') + materials_url_media = base64.b64decode(materials_url).decode("utf-8").split(',') + for material_url_media in materials_url_media: + materials.append(material_url_media.split(settings.MEDIA_URL)[1]) + for key in request.FILES: f = request.FILES[key] path = default_storage.save(upload_material(l, f.name), ContentFile(f.read()))