summaryrefslogtreecommitdiff
path: root/yaksh/management/commands/create_demo_course.py
blob: e71e0ae75bed47801a135d5c1574c6886da75e75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os
from django.core.management.base import BaseCommand
from yaksh.models import Course, Question, Quiz, QuestionPaper, Profile, FileUpload
from yaksh.file_utils import extract_files
from django.contrib.auth.models import User
from django.utils import timezone
from django.core.files import File
from datetime import datetime, timedelta
import pytz
import zipfile


def create_demo_course():
    """ creates a demo course, quiz """

    success = False
    print("Creating Demo User...")
    # create a demo user
    user, u_status = User.objects.get_or_create(username='demo_user',
                                                password='demo',
                                                email='demo@test.com')
    Profile.objects.get_or_create(user=user, roll_number=0,
                                  institute='demo_institute',
                                  department='demo_department',
                                  position='Faculty')

    print("Creating Demo Course...")
    # create a demo course
    course, c_status = Course.objects.get_or_create(name="Demo_course",
                                                    enrollment="open",
                                                    creator=user)

    print("Creating Demo Quiz...")
    # create a demo quiz
    quiz, q_status = Quiz.objects.get_or_create(start_date_time=timezone.now(),
                                      end_date_time=timezone.now() + timedelta(176590),
                                      duration=30, active=True,
                                      attempts_allowed=-1,
                                      time_between_attempts=0,
                                      description='Demo_quiz', pass_criteria=0,
                                      language='Python', prerequisite=None,
                                      course=course)

    print("Creating Demo Questions...")
    #create demo question
    f_path = os.path.join(os.getcwd(), 'yaksh', 'fixtures', 'demo_questions.json')
    zip_file_path = os.path.join(os.getcwd(), 'yaksh', 'fixtures', 'demo_questions.zip')
    extract_files(zip_file_path)
    ques = Question()
    ques.read_json("questions_dump.json", user)

    questions = Question.objects.filter(active=True, summary="Demo_Question")

    print("Creating Demo Question Paper...")
    # create a demo questionpaper
    question_paper, q_ppr_status = QuestionPaper.objects.get_or_create(quiz=quiz,
                                                         total_marks=5.0,
                                                         shuffle_questions=True
                                                         )
    # add fixed set of questions to the question paper
    for question in questions:
        question_paper.fixed_questions.add(question)

    success = True
    return success


class Command(BaseCommand):
    help = "Create a Demo Course, Demo Quiz"

    def handle(self, *args, **options):
        """ Handle command to create demo course """
        status = create_demo_course()
        if status:
            self.stdout.write("Successfully Created")
        else:
            self.stdout.write("Unable to create Demo Course")