Merge branch 'file_upload' into 'dev'

Выставляется препод к курсу

See merge request !481
remotes/origin/dev
Andrey 8 years ago
commit a25610ddee
  1. 23
      courses/migrations/0008_auto_20180511_1208.py
  2. 2
      courses/models.py
  3. 7
      courses/serializers.py
  4. 7
      courses/views.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='Материалы к уроку'),
),
]

@ -38,7 +38,7 @@ class Lesson(models.Model):
description = models.TextField(verbose_name='Описание', blank=True, null=True) description = models.TextField(verbose_name='Описание', blank=True, null=True)
video = models.TextField(verbose_name='Код видео', blank=True, null=True) video = models.TextField(verbose_name='Код видео', blank=True, null=True)
materials = ArrayField( materials = ArrayField(
models.FileField(verbose_name="Материал к уроку", upload_to=upload_material), models.FileField(verbose_name="Материал к уроку", upload_to=upload_material, max_length=255),
verbose_name="Материалы к уроку", verbose_name="Материалы к уроку",
default=get_empty_list, default=get_empty_list,
) )

@ -38,12 +38,7 @@ class LessonSerializer(MiniLessonSerializer):
@staticmethod @staticmethod
def get_materials(self): def get_materials(self):
try: return [settings.MEDIA_URL + i for i in self.materials]
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 []
class TeacherLessonSerializer(MiniLessonSerializer): class TeacherLessonSerializer(MiniLessonSerializer):

@ -154,9 +154,12 @@ class UpdateLessonView(APIView):
lesson.save() lesson.save()
l.sort = sort l.sort = sort
materials = list(l.materials) materials = []
if not materials_url == '': 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: for key in request.FILES:
f = request.FILES[key] f = request.FILES[key]
path = default_storage.save(upload_material(l, f.name), ContentFile(f.read())) path = default_storage.save(upload_material(l, f.name), ContentFile(f.read()))

Loading…
Cancel
Save