diff --git a/access/migrations/0004_auto_20171215_1735.py b/access/migrations/0004_auto_20171215_1735.py new file mode 100644 index 0000000..720ef9e --- /dev/null +++ b/access/migrations/0004_auto_20171215_1735.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-12-15 17:35 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('access', '0003_auto_20171214_2049'), + ] + + operations = [ + migrations.AlterField( + model_name='pivotprogressvertex', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Преподователь'), + ), + ] diff --git a/access/models/other.py b/access/models/other.py index 5e9037c..fcdd84c 100644 --- a/access/models/other.py +++ b/access/models/other.py @@ -68,7 +68,7 @@ class PivotProgressVertex(models.Model): (1, 'Ожидание'), (0, 'Не выполненно'), ) - teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь по умолчанию", + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name="Преподователь", blank=True, null=True) progress = models.ForeignKey(to=Progress) vertex = ArrayField(models.CharField(max_length=15, blank=True, verbose_name='Ссылки на узлы', unique=True),) diff --git a/csv/load_comments.py b/csv/load_comments.py index 067c343..219facf 100644 --- a/csv/load_comments.py +++ b/csv/load_comments.py @@ -1,4 +1,7 @@ import csv +import random +import string + import django import os import sys @@ -10,49 +13,40 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") django.setup() from course_service.courses.models import Vertex -from storage.models import Comment +from storage.models import Comment, File from access.models.other import PivotProgressVertex if __name__ == '__main__': + Comment.objects.all().delete() csv.field_size_limit(500 * 1024 * 1024) with open('./management/comment.csv') as comment_csv: comment_reader = csv.DictReader(comment_csv) for row in comment_reader: - if row['type'] == 'task': - teacher_action = row['status'] == "Одобрено" or row['status'] == "Отклонено" - owner = get_user_model().objects.get(email=row['owner__email']) - sub = get_user_model().objects.get(email=row['sub__email']) - teacher = owner if teacher_action else sub - user = owner if not teacher_action else sub - vertex = Vertex.objects.get(object_id=row['object_id'], content_type__model='task') - action = '' + int(not teacher_action)*"try" +\ - int(row['status'] == "Одобрено")*"yes" +\ - int(row['status'] == "Отклонено")*"no" - - child_thread, is_create = Thread.objects.get_or_create( - key="""user_%s__vertex_%s""" % (user.id, vertex.id,), - text="""%s - %s - %s""" % - (vertex.course.title, vertex.vertex_set.all()[0].title, user.get_full_name()), - ) - - if is_create: - child_thread.parent.add(Thread.objects.get(key="""user_%s""" % user.id)) - child_thread.parent.add(Thread.objects.get(key="""user_%s""" % teacher.id)) - child_thread.parent.add(Thread.objects.get(key='Support')) - child_thread.subscribers.add(user) - - journal = Journal.objects.create( - thread=child_thread, - user=owner, - content_type=ct, - object_id=vertex.id, - action_type=action, - extra_data=row['text'], + if row['type'] == 'task' or row['type'] == 'exam': + c = Comment.objects.create( + id=row['id'], + email=row['owner__email'], + text=row['text'], + key=''.join(random.choice(string.ascii_letters) for x in range(15)), ) - journal.date = row['date'] - journal.save() for file_id in row['files'].split("[")[1].split("]")[0].split(", "): if file_id: - journal.files.add(File.objects.get(id=file_id)) + c.files.add(File.objects.get(id=file_id)) + + c.date = row['date'] + c.save() + parent_id = row['parent_id'] + if row['type'] == 'task': + parent_id += 50 + + vertex = Vertex.objects.get(id=parent_id) + vertex_key = vertex.token + comment_key = c.key + + PivotProgressVertex.objects.get_or_create( + comment=comment_key, + vertex=vertex_key, + progress=vertex.topic.course.route.out_key + ) diff --git a/storage/migrations/0002_auto_20171214_1908.py b/storage/migrations/0002_auto_20171214_1908.py new file mode 100644 index 0000000..2725f1d --- /dev/null +++ b/storage/migrations/0002_auto_20171214_1908.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-12-14 19:08 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('storage', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='key', + field=models.CharField(editable=False, max_length=15, unique=True, verbose_name='Внешний ключ'), + ), + ] diff --git a/storage/migrations/0004_auto_20171215_1704.py b/storage/migrations/0004_auto_20171215_1704.py new file mode 100644 index 0000000..240b817 --- /dev/null +++ b/storage/migrations/0004_auto_20171215_1704.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-12-15 17:04 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('storage', '0003_comment_date'), + ] + + operations = [ + migrations.AlterField( + model_name='file', + name='original', + field=models.FileField(max_length=255, unique=True, upload_to='files', verbose_name='Файл'), + ), + ] diff --git a/storage/models.py b/storage/models.py index fc1b088..a750d13 100755 --- a/storage/models.py +++ b/storage/models.py @@ -21,7 +21,7 @@ class FileManager(models.Manager): class File(models.Model): key = models.CharField(max_length=15, verbose_name="Внешний ключ", unique=True, editable=False) - original = models.FileField(max_length=255, verbose_name='Файл', upload_to="files") + original = models.FileField(max_length=255, verbose_name='Файл', upload_to="files", unique=True) name = models.CharField(max_length=255, null=True, blank=True, verbose_name='Видимое имя файла') objects = FileManager()