コード例 #1
0
ファイル: views.py プロジェクト: mikel365/Helix-Test
def timecount(request):
    tested = False
    student = Student.objects.get(login=request.session['username'])
    a = int(str(request.session['starts']))
    test = Test.objects.get(pk=a)
    request.session['starts'] = None
    request.session.modified = True
    request.session.save()
    for x in TestResult.objects.all():
        if x.test.id == a and x.student.id == student.id:
            tested = True
    if not tested:
        tr = TestResult(student=student, test=test, balls=2)
        tr.save()
    print a
    print 'ok'
コード例 #2
0
ファイル: views.py プロジェクト: mikel365/Helix-Test
def teachertests(request):
    tests = []
    if 'usertype' in request.session and request.session['usertype'] == "t":
        teacher = Teacher.objects.get(login=request.session['username'])
        tests = Test.objects.filter(teacher=teacher)
        context = {'username': request.session['username'], 'usertype': 't', 'tests': tests}
        setf = [x for x in request.POST if x.startswith("setf")]
        if request.POST.get('apply') or len(setf) > 0:
            dels_ = [x for x in request.POST if x.startswith("del")]
            viss_ = [x for x in request.POST if x.startswith('vis')]
            sts_ = [x for x in request.POST if x.startswith("st")]
            for a in viss_:
                test_id = a.replace('vis', '')
                test = Test.objects.get(id=test_id)
                test.visibility = True
                test.save()
            for a in sts_:
                test_id = a.replace('st', '')
                test = Test.objects.get(id=test_id)
                test.visibility = False
                test.save()
            for a in dels_:
                test_id = a.replace('del', '')
                test = Test.objects.get(id=test_id)
                test.delete()
            for a in setf:
                test_id = a.replace('setf', '')
                test = Test.objects.get(pk=int(test_id))
                undone = []
                completests = []
                for x in TestResult.objects.all():
                    if x.test == test:
                        completests.append(x.student)
                for x in Student.objects.all():
                    if x not in completests and x.grade == test.grade and x.school == test.school:
                        undone.append(x)
                for x in undone:
                    testres = TestResult(student=x, test=test, balls=2, quest_count=len(test.question_set.all()),
                                         right_count=0, unright_count=0,
                                         answers_count=len(
                                             Choice.objects.filter(question=Question.objects.get(test=test))))
                    testres.save()
        return render(request, 'studtests/created tests.html', context)
    else:
        raise Http404('Access denied')
コード例 #3
0
ファイル: views.py プロジェクト: mikel365/Helix-Test
def gettrfromandr(request):
    data = []
    if request.POST:
        if request.POST.get('login') and request.POST.get('password'):
            print 'login and pass found'
            user = auth.authenticate(username=request.POST.get('login'), password=request.POST.get('password'))
            auth.login(request, user)
            for t in Teacher.objects.all():
                if t.login == request.POST.get('login'):
                    data = ['1', 't', t.id]
            for s in Student.objects.all():
                if s.login == request.POST.get('login'):
                    data = ['1', 's', s.id]
        elif request.POST.get('testresults'):
            print 'te'
            questions = []
            choices = []
            rightq = []
            falseq = []
            anddata = request.POST.get('testresults')
            data = anddata.split('/')
            print data
            studname = data[0].encode('utf8')
            student = Student.objects.get(login=studname)
            testid = data[1].encode('utf8')
            test = Test.objects.get(pk=int(testid))
            print test.grade, test.id, test.name
            for i, x in enumerate(data[2:len(data) - 1]):
                if i % 2 == 0:
                    questions.append(x)
                else:
                    choices.append(x)
            for i, x in enumerate(questions):
                print x.encode('utf-8'), questions
                print questions[i]
                question = Question.objects.get(pk=int(x))
                print question
                if question.test == test:
                    choices_ = Choice.objects.filter(question=question)
                    for j, y in enumerate(choices_):
                        for k in choices:
                            if y.right_choice and k[j] == '1':
                                rightq.append(y)
                            elif (not y.right_choice) and k[j] == '1':
                                falseq.append(y)
            try:
                tr = TestResult(student=student, test=test, balls=0,
                                quest_count=len(Question.objects.filter(test=test)),
                                unright_count=len(falseq),
                                right_count=len(rightq))
                tr.save()
                choicecount = 0
                for x in tr.test.question_set.all():
                    choicecount += len(x.choice_set.all())
                for x in rightq:
                    tr.right_choices.add(x)
                for x in falseq:
                    tr.unright_choices.add(x)
                tr.answers_count = choicecount
                tr.save()
            except Exception:
                print Exception
            print 'right: ' + str(rightq)
            print 'false' + str(falseq)
            print request.POST.get('testresults')
        elif request.POST.get('delete'):
            test = Test.objects.get(pk=int(request.POST.get('delete')))
            test.clean()
        elif request.POST.get('getav'):
            print request.POST.get('getav')
            student = Student.objects.get(login=request.POST.get('getav'))
            tested = False
            strtests = ""
            tests = Test.objects.all()
            for x in tests:
                for tr in TestResult.objects.all():
                    if tr.test == x and tr.student == student:
                        tested = True
                if not tested:
                    strtests += str(x.id) + "/"
                tested = False
            print "finished"
            return HttpResponse(strtests)
        elif request.POST.get('gettresults'):
            trs = []
            teacher = Teacher.objects.get(pk=int(request.POST.get('gettresults')))
            for x in TestResult.objects.all():
                if x.test.teacher == teacher:
                    trs.append(x.id)
            strtrs = ""
            for x in trs:
                strtrs += x + "/"
            return HttpResponse(strtrs)
        elif request.POST.get('gettestinfo'):
            test = Test.objects.get(pk=int(request.POST.get('getquestions')))
            return test.theme + "/" + test.school + "/" + test.grade
        elif request.POST.get('getquestions'):
            test = Test.objects.get(pk=int(request.POST.get('getquestions')))
            strqu = ""
            for x in Question.objects.filter(test=test):
                strqu += x.id + "/"
            return HttpResponse(strqu)
        elif request.POST.get('getchoices'):
            question = Question.objects.get(pk=int(request.POST.get('getchoices')))
            strch = ""
            for x in Choice.objects.filter(question=question):
                strch += x.id + "/"
            return HttpResponse(strch)
        elif request.POST.get('ttests'):
            teacher = Teacher.objects.get(pk=int(request.POST.get('ttests')))
            strtests = ""
            for x in Test.objects.filter(teacher=teacher):
                strtests += x.id + "/"
            return HttpResponse(strtests)
    return HttpResponse(data)
コード例 #4
0
ファイル: views.py プロジェクト: mikel365/Helix-Test
def vote(request, test_id):
    p = get_object_or_404(Test, pk=test_id)
    student = Student.objects.get(login=request.session['username'])
    finished = False
    for t in TestResult.objects.all():
        if t.test == p and t.student == student:
            finished = True
    if not finished:
        checkbox_list = [x for x in request.POST if x.startswith('choice')]
        enter_list = [x for x in request.POST if x.startswith('enter')]
        list = []
        a = 0
        right_choices = []
        unright_choices = []
        selected_choices = []
        """get all choices with correct question"""
        for c in checkbox_list:
            id = c.replace('choice_', '')
            selected_choice = Choice.objects.get(id=int(id))
            if selected_choice.right_choice:
                list += 'True'
                a += 1
                right_choices.append(selected_choice)
            else:
                list += 'False'
                unright_choices.append(selected_choice)
        for c in enter_list:
            id = c.replace("enter_", "")
            value = request.POST.get(c)
            quest = Question.objects.get(pk=int(id))
            if value == quest.choice_set.all()[0].choice_text:
                a += 1
                right_choices.append(quest.choice_set.all()[0])
            else:
                unright_choices.append(quest.choice_set.all()[0])
        s = Student.objects.get(login=request.session['username'])
        tr = TestResult(student=s, test=p, balls=0, quest_count=len(p.question_set.all()))
        if (p in RndTest.objects.all()):
            rtest = RndTest.objects.get(name=p.name)
            tr = TestResult(student=s, test=p, balls=0, quest_count=rtest.qcount)
        tr.save()
        right_count = 0
        unright_count = 0
        choicecount = 0
        for x in tr.test.question_set.all():
            choicecount += len(x.choice_set.all())
        for x in right_choices:
            tr.right_choices.add(x)
            right_count += 1
        for x in unright_choices:
            tr.unright_choices.add(x)
            unright_count += 1
        tr.right_count = right_count
        tr.unright_count = unright_count
        tr.answers_count = choicecount
        tr.save()
        if a == len(checkbox_list):
            s.question_list.add(p)
        request.session['starts'] = None

        return redirect('/')
    else:
        raise Http404("You've already finished this test")