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.
 
 
 
 
 
 

67 lines
2.7 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 Storage
if __name__ == '__main__':
csv.field_size_limit(500 * 1024 * 1024)
thread = Thread.objects.get(key='Student_teacher')
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':
owner = get_user_model().objects.get(email=row['owner__email'])
sub = get_user_model().objects.get(email=row['sub__email'])
vertex = Vertex.objects.get(object_id=row['object_id'], content_type__model='task')
action = 0
if row['status'] == "Одобрено":
action = 1
child_thread, is_create = Thread.objects.get_or_create(
key="""user_%s__staff_%s""" % (sub.id, owner.id,)
)
elif row['status'] == "Отклонено":
action = 2
child_thread, is_create = Thread.objects.get_or_create(
key="""user_%s__staff_%s""" % (sub.id, owner.id,)
)
else:
child_thread, is_create = Thread.objects.get_or_create(
key="""user_%s__staff_%s""" % (owner.id, sub.id,)
)
journal = Journal.objects.create(
thread=child_thread,
user=owner,
content_type=ct,
object_id=vertex.id,
action_type=action,
date=row['date'],
)
journal_comment = Journal.objects.create(
thread=child_thread,
user=owner,
content_type=ct,
object_id=vertex.id,
action_type=7,
extra_data=row['text'],
date=row['date'],
)
for file_id in row['files'].split("[")[1].split("]")[0].split(", "):
if file_id:
journal.files.add(Storage.objects.get(id=file_id))
if is_create:
child_thread.parent.add(thread)
child_thread.subscribers.add(owner)
child_thread.subscribers.add(sub)