Esempio n. 1
0
 def get_all_relation_of_type(person, relation_direction, relation_type):
     result = []
     traversal_definition = dict(node_class=Person,
                                 direction=relation_direction,
                                 relation_type=relation_type,
                                 model=None)
     relations_traversal = Traversal(person, Person.__label__,
                                     traversal_definition)
     result = relations_traversal.all()
     return result
 def query_relations(cls,
                     source,
                     target_cls,
                     direction=EITHER,
                     relation_type=None,
                     model=None):
     definition = dict(node_class=target_cls,
                       direction=direction,
                       relation_type=relation_type,
                       model=model)
     relations_traversal = Traversal(source, source.__label__, definition)
     return relations_traversal.all()
Esempio n. 3
0
def studentpin(request, id):
    if request.session.has_key('contestant'):

        exam = Exam.nodes.get(examid=id)
        idcontestant = request.session['contestant']
        contestant = Contestant.nodes.get(contestantid=idcontestant)
        exambatch = contestant.exambatchrel[0]
        # print(exambatch.pincode)

        definition = dict(node_class=Question,
                          direction=INCOMING,
                          relation_type=None,
                          model=None)
        getTraversals = Traversal(exam, Question.__label__, definition)

        allquestion = []
        order = 0

        for getTraversal in getTraversals:
            order += 1
            new_ques_mod = QuestionMod(order, getTraversal)
            allquestion.append(new_ques_mod)

        numbques = len(allquestion)
        context = {
            'exam': exam,
            'allquestion': allquestion,
            'numbques': numbques,
            'exambatch': exambatch
        }
        return render(request, 'home/studentpin.html', context)
    else:
        return redirect('home:login')
Esempio n. 4
0
 def retrieve_menu_plan(meal):
     definition = dict(node_class=Meal_Type,
                       direction=OUTGOING,
                       relation_type=None,
                       model=None)
     all_relations = Traversal(meal, meal.__label__, definition).all()
     return list(
         MenuPlan(str(x.name), str(meal.name)) for x in all_relations)
Esempio n. 5
0
def attack(request):
    result = OrderedDict()
    try:
        vm_id = request.GET.get('vm_id', '')
        vm = VM.nodes.first_or_none(vm_id=vm_id)
        if vm is None:
            return JsonResponse([], safe=False)
        definition = dict(node_class=VM,
                          direction=INCOMING,
                          relation_type=None,
                          model=None)
        incoming_traversal = Traversal(vm, VM.__label__, definition)
        all_incoming_vms = incoming_traversal.all()
    except Exception as e:
        logging.error(f'An error occured in /attack method: {e}')
        return HttpResponseServerError(['An error occured in /attack method.'])

    for incoming_vm in all_incoming_vms:
        result[incoming_vm.vm_id] = incoming_vm
    return JsonResponse(list(result.keys()), safe=False)
Esempio n. 6
0
def questionexam(request, id):
    if request.user.is_authenticated:
        user = request.user
        getuserid = user.id

        exam = Exam.nodes.get(examid=id)

        definition = dict(node_class=Question,
                          direction=INCOMING,
                          relation_type=None,
                          model=None)
        getTraversals = Traversal(exam, Question.__label__, definition)

        allquestion = []
        order = 0

        for getTraversal in getTraversals:
            order += 1
            new_ques_mod = QuestionMod(order, getTraversal)
            allquestion.append(new_ques_mod)

        if request.method == 'POST':
            content = request.POST.get('content')
            chA = request.POST.get('chA')
            chB = request.POST.get('chB')
            chC = request.POST.get('chC')
            chD = request.POST.get('chD')
            chAns = request.POST.get('chAns')

            question = Question(content=content,
                                A=chA,
                                B=chB,
                                C=chC,
                                D=chD,
                                answer=chAns)
            question.save()
            question.examrel.connect(exam)

            return redirect('home:questionexam', exam.examid)

        context = {'user': user, 'exam': exam, 'allquestion': allquestion}
        return render(request, 'home/questionexam.html', context)
    else:
        return redirect('home:login')
Esempio n. 7
0
def inputpin(request):

    if request.method == 'POST':
        inputpin = request.POST.get('inputpin')
        yourname = request.POST.get('yourname')
        try:
            exambatch = ExamBatch.nodes.get(pincode=inputpin)

            examid = exambatch.examrel[0].examid
            exam = Exam.nodes.get(examid=examid)

            contestant = Contestant(contestantname=yourname, timebatch=5)
            contestant.save()
            contestant.exambatchrel.connect(exambatch)
            request.session['contestant'] = str(contestant.contestantid)

            definition = dict(node_class=Question,
                              direction=INCOMING,
                              relation_type=None,
                              model=None)
            all_question = Traversal(exam, Question.__label__, definition)

            doc_contest = {
                '_id': contestant.contestantid,
                'exambatchid': exambatch.exambatchid,
                'result': 0,
            }
            order = 1
            for question in all_question:

                doc_contest[str(order)] = 0
                order += 1

            x = mycol.insert_one(doc_contest)

            return redirect('home:studentpin', examid)

        except:
            return render(request, 'home/inputpin.html',
                          {'message': 'Mã pin không chính xác'})

    return render(request, 'home/inputpin.html')
Esempio n. 8
0
def teacherpin(request, id):
    if request.user.is_authenticated:
        user = request.user
        getuserid = user.id

        exam = Exam.nodes.get(examid=id)

        definition = dict(node_class=Question,
                          direction=INCOMING,
                          relation_type=None,
                          model=None)
        getTraversals = Traversal(exam, Question.__label__, definition)

        allquestion = []
        order = 0

        a = str(random.randint(111111, 999999))
        exambatch = ExamBatch(pincode=a, timebatch=5)
        exambatch.save()
        exambatch.examrel.connect(exam)

        cache.set(exambatch.exambatchid, 0, timeout=3600)

        for getTraversal in getTraversals:
            order += 1
            new_ques_mod = QuestionMod(order, getTraversal)
            allquestion.append(new_ques_mod)

        numbques = len(allquestion)

        context = {
            'user': user,
            'exam': exam,
            'allquestion': allquestion,
            'exambatch': exambatch,
            'numbques': numbques
        }
        return render(request, 'home/teacherPin.html', context)
    else:
        return redirect('home:login')
Esempio n. 9
0
def contestantlistdiv(request):
    exambatchid = request.GET.get('exambatch', None)

    exambatch = ExamBatch.nodes.get(exambatchid=exambatchid)

    # print(cache.get(exambatch.exambatchid))
    # print(cache.ttl(exambatch.exambatchid))
    stage = cache.get(exambatch.exambatchid)
    definition = dict(node_class=Contestant,
                      direction=INCOMING,
                      relation_type=None,
                      model=None)
    getTraversals = Traversal(exambatch, Contestant.__label__, definition)
    s = ''
    for contestant in getTraversals:

        temp = '''<div class="col-3 col-lg-3" style="text-align: center;margin-bottom: 10px; color: #431b93;font-weight: 900">

                    ''' + contestant.contestantname + '''</div>'''

        s += temp

    data = {'flag': True, 's': s, 'stage': stage}
    return JsonResponse(data)
Esempio n. 10
0
def statisticResult(request):
    exambatchid = request.GET.get('exambatch', None)
    stage = request.GET.get('stage', None)
    # print(exambatchid)
    exambatch = ExamBatch.nodes.get(exambatchid=exambatchid)

    definition = dict(node_class=Contestant,
                      direction=INCOMING,
                      relation_type=None,
                      model=None)
    getTraversals = Traversal(exambatch, Contestant.__label__, definition)

    mydocre = mycol.find({'exambatchid': exambatchid})

    sortres_list = mycol.find({
        'exambatchid': exambatchid
    }).sort("result", -1).limit(3)
    full_sorlist = mycol.find({
        'exambatchid': exambatchid
    }).sort("result", -1).limit(10)

    contestant_list = []
    full_contestant_list = []

    for contestant in full_sorlist:
        cont = Contestant.nodes.get(contestantid=contestant['_id'])
        full_contestant_list.append(cont.contestantname)

    full_contestant_list = full_contestant_list[3:]
    s = ''
    for contestant in full_contestant_list:
        temp = '''<p style="color:red;font-weight: 900;font-size: 24pt;">''' + contestant + '''</p>'''
        s += temp

    for sortres in sortres_list:
        cont = Contestant.nodes.get(contestantid=sortres['_id'])
        contestant_list.append(cont.contestantname)

    if len(contestant_list) == 3:
        top1 = contestant_list[0]
        top2 = contestant_list[1]
        top3 = contestant_list[2]
    elif len(contestant_list) == 2:
        top1 = contestant_list[0]
        top2 = contestant_list[1]
        top3 = 'No One'
    elif len(contestant_list) == 1:
        top1 = contestant_list[0]
        top2 = 'No One'
        top3 = 'No One'
    else:
        top1 = 'No One'
        top2 = 'No One'
        top3 = 'No One'

    #
    dataPoint = []
    chart = mycol.find({'exambatchid': exambatchid}).sort("result", 1)
    order = 0
    for element in chart:
        order += 1
        cont = Contestant.nodes.get(contestantid=element['_id'])
        temp = {
            'x': order,
            'y': element['result'],
            'label': str(cont.contestantname),
            'color': "#E21B3C"
        }
        dataPoint.append(temp)

    data = {
        'flag': True,
        's': s,
        'top1': top1,
        'top2': top2,
        'top3': top3,
        'dataPoint': dataPoint,
    }
    return JsonResponse(data)
Esempio n. 11
0
def statistic(request):
    exambatchid = request.GET.get('exambatch', None)
    stage = request.GET.get('stage', None)
    # print(exambatchid)
    exambatch = ExamBatch.nodes.get(exambatchid=exambatchid)

    definition = dict(node_class=Contestant,
                      direction=INCOMING,
                      relation_type=None,
                      model=None)
    getTraversals = Traversal(exambatch, Contestant.__label__, definition)

    mydocre = mycol.find({'exambatchid': exambatchid})
    print('-----------------------------------*******')

    countR = mycol.find({'exambatchid': exambatchid, str(stage): 1})
    countW = mycol.find({'exambatchid': exambatchid, str(stage): 0})
    # print(countR.count())
    # print(countW.count())
    # print(stage)

    dataPoint = [{
        'x': 1,
        'y': countR.count(),
        'label': "Correct",
        'color': "#E21B3C"
    }, {
        'x': 2,
        'y': countW.count(),
        'label': "Incorrect",
        'color': "#00ABE9"
    }]
    sortres_list = mycol.find({
        'exambatchid': exambatchid
    }).sort("result", -1).limit(3)

    contestant_list = []
    for sortres in sortres_list:
        cont = Contestant.nodes.get(contestantid=sortres['_id'])
        contestant_list.append(cont.contestantname)

    if len(contestant_list) == 3:
        top1 = contestant_list[0]
        top2 = contestant_list[1]
        top3 = contestant_list[2]
    elif len(contestant_list) == 2:
        top1 = contestant_list[0]
        top2 = contestant_list[1]
        top3 = 'No One'
    elif len(contestant_list) == 1:
        top1 = contestant_list[0]
        top2 = 'No One'
        top3 = 'No One'
    else:
        top1 = 'No One'
        top2 = 'No One'
        top3 = 'No One'

    data = {
        'flag': True,
        'dataPoint': dataPoint,
        'top1': top1,
        'top2': top2,
        'top3': top3
    }
    return JsonResponse(data)