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

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)
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(Storage.objects.get(id=file_id))