You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.6 KiB
57 lines
2.6 KiB
import os, sys, django, csv
|
|
|
|
from django.contrib.auth import get_user_model
|
|
|
|
sys.path.append("../")
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
|
|
django.setup()
|
|
|
|
from courses.models import Vertex
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from journals.models import Thread, Journal
|
|
from storage.models import File
|
|
|
|
if __name__ == '__main__':
|
|
csv.field_size_limit(500 * 1024 * 1024)
|
|
ct = ContentType.objects.get(app_label='courses', model='vertex')
|
|
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'],
|
|
)
|
|
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))
|
|
|
|
|