Beispiel #1
0
def subject_position_updates(request, pk, term):  #all
    if int(term) == 4:
        query = ANNUAL.objects.select_related('subject_by').filter(
            subject_by__exact=BTUTOR.objects.get(pk=pk))
        students = [
            x[:] for x in list(query.values_list('Agr', 'id')) if x[0] != None
        ]
    else:
        query = QSUBJECT.objects.select_related('tutor').filter(
            tutor__exact=BTUTOR.objects.get(pk=pk))
        students = [
            x[:] for x in list(query.values_list('agr', 'id')) if x[0] != None
        ]
    agr = [r[0] for r in students]  ###############news
    posi = do_positions(agr[:])
    ids = [r[1] for r in students]
    if int(term) == 4:
        for i in range(0, len(agr)):
            objs = ANNUAL.objects.get(pk=ids[i])
            objs.grade = do_grades([int(objs.Agr)],
                                   cader(BTUTOR.objects.get(pk=pk).Class))[0]
            objs.Posi = posi[i]
            objs.save()
        return redirect('subject_view', pk=pk, md=2)
    else:
        for i in range(0, len(agr)):
            objs = QSUBJECT.objects.get(pk=ids[i])
            objs.posi = posi[i]
            objs.save()
        return redirect('subject_view', pk=pk, md=1)
Beispiel #2
0
def single_student_update(request, pk):  #student
    obj = QSUBJECT.objects.get(pk=pk)
    if obj.tutor != None:
        obj.total = obj.test + obj.agn + obj.atd
        obj.agr = obj.exam + obj.total
        obj.grade = do_grades([obj.agr], cader(obj.tutor.Class))[0]
        obj.save()
        return redirect('position_updates', pk=obj.tutor.id, term=3)
    else:
        return redirect('home')
Beispiel #3
0
def many_student_updates(request, pk):  #tutor
    query = QSUBJECT.objects.select_related('tutor').filter(
        tutor__exact=BTUTOR.objects.get(pk=pk))
    students = list(query.values_list('id'))
    ids = [r[0] for r in students]
    for i in range(0, query.count()):
        obj = QSUBJECT.objects.get(pk=ids[i])
        obj.total = obj.test + obj.agn + obj.atd
        obj.agr = obj.exam + obj.total
        obj.grade = do_grades([obj.agr], cader(obj.tutor.Class))[0]
        obj.save()
    return redirect('position_updates', pk=pk, term=3)
Beispiel #4
0
def create_new_subject_teacher(
    request
):  # teacher form for every new term, class, subjects, subject_per_name
    if request.method == 'POST':
        result = subject_class_term_Form(request.POST)
        if result.is_valid():
            unique = BTUTOR.objects.filter(
                accounts__exact=request.user,
                term__exact='1st Term',
                Class__exact=result.cleaned_data['Class'],
                subject__exact=result.cleaned_data['subject'],
                teacher_name__exact=
                f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
                session__exact=session).count()
            if unique == 0:
                new_teacher = BTUTOR(
                    accounts=request.user,
                    subject=result.cleaned_data['subject'],
                    Class=result.cleaned_data['Class'],
                    term='1st Term',
                    cader=cader(result.cleaned_data['Class']),
                    teacher_name=
                    f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
                    session=session)
                new_teacher.save()
                TUTOR_HOME(
                    tutor=request.user,
                    teacher_name=
                    f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
                    first_term=new_teacher).save()
                return redirect('upload_txt', pk=new_teacher.id)
            else:
                others = BTUTOR.objects.filter(
                    accounts__exact=request.user,
                    subject__exact=result.cleaned_data['subject']).order_by(
                        'id')
                page = request.GET.get('page', 1)
                paginator = Paginator(others, 30)
                try:
                    all_page = paginator.page(page)
                except PageNotAnInteger:
                    all_page = paginator.page(1)
                except EmptyPage:
                    all_page = paginator.page(paginator.num_pages)
                return render(request, 'result/first_term_record_notify.html',
                              {
                                  'all_page': all_page,
                                  'tutor': result.cleaned_data['subject']
                              })
    else:
        result = subject_class_term_Form()
        return render(request, 'result/create_new_teacher.html',
                      {'result': result})
Beispiel #5
0
def update_teacher_class(request, pk, tr):
    previous = TUTOR_HOME.objects.get(first_term=BTUTOR.objects.get(pk=pk))
    term = ['1st Term', '2nd Term', '3rd Term'][int(tr)]
    if BTUTOR.objects.filter(
            accounts__exact=request.user,
            subject__exact=previous.first_term.subject,
            Class__exact=previous.first_term.Class,
            term__exact=term,
            cader__exact=cader(previous.first_term.Class),
            teacher_name__exact=
            f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
            session=session).count() == 0:
        new_term = BTUTOR(
            accounts=request.user,
            subject=previous.first_term.subject,
            Class=previous.first_term.Class,
            term=term,
            cader=cader(previous.first_term.Class),
            teacher_name=
            f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
            session=session)
        new_term.save()
        if term == '2nd Term':
            previous.second_term = new_term
        else:
            if term == '3rd Term':
                previous.third_term = new_term
        previous.save()
        pk = new_term.id
    if term == '3rd Term' and BTUTOR.objects.filter(
            accounts__exact=request.user,
            subject__exact=previous.first_term.subject,
            Class__exact=previous.first_term.Class,
            term__in=['1st Term', '2nd Term'],
            cader__exact=cader(previous.first_term.Class),
            teacher_name__exact=
            f'{request.user.profile.title}{request.user.profile.last_name} : {request.user.profile.first_name}',
            session=session).count() == 1:
        return redirect('home')
    return redirect('upload_txt', pk=pk)
Beispiel #6
0
 def save(self):
     if self.subject_by.term == '3rd Term':
         from statistics import mean
         from result.utils import do_grades, cader
         qsubject = QSUBJECT.objects.filter(student_name__exact = self.student_name, tutor__Class__exact = self.subject_by.Class, tutor__subject__exact = self.subject_by.subject, tutor__session__exact = self.subject_by.session)
         listed = [i[0] for i in list(qsubject.values_list('agr'))]
         if len(listed) != 0:
             if len(listed) == 3:
                 self.first = qsubject[0]
                 self.second = qsubject[1]
                 self.anual = qsubject[0].agr + qsubject[1].agr + self.third.agr 
                 self.Agr = round(mean([qsubject[0].agr , qsubject[1].agr, self.third.agr]), 2)
                 self.Grade = do_grades([int(mean([qsubject[0].agr , qsubject[1].agr, self.third.agr]))], cader(self.third.tutor.Class))[0]
             elif len(listed) == 2:
                 self.second = qsubject[1]
                 self.anual = qsubject[1].agr + self.third.agr 
                 self.Agr = round(mean([qsubject[1].agr, self.third.agr]), 2)
                 self.Grade = do_grades([int(mean([qsubject[1].agr, self.third.agr]))], cader(self.third.tutor.Class))[0]
             elif len(listed) == 1:
                 self.anual = self.third.agr 
                 self.Agr = self.third.agr
                 self.Grade = do_grades([int(mean([self.third.agr]))], cader(self.third.tutor.Class))[0]
     super(ANNUAL, self).save()
Beispiel #7
0
def create_student_annual(request):
        global dim
        trace = [['CHE', 'ACC', 'ARB'], ['GOV', 'ICT', 'HIS'], ['GEO', 'AGR', 'YOR'], ['BST', 'BIO', 'ECO'], ['BUS', 'PHY', 'LIT', 'COM'], ['ELE', 'CTR', 'GRM', 'PRV']]
        annuals = ANNUAL.objects.select_related('subject_by').filter(subject_by__subject__name__exact= 'ENG', subject_by__Class__exact=request.user.profile.class_in, subject_by__session__exact = session)
        if len(annuals) != 0:
            ids = [x for x in list(annuals.values_list('id'))]
            c, j = [None, None]
            for r in range(0, len(ids)):
                name = ANNUAL.objects.get(id=ids[r][0])
                a = return_value_or_None(request, ids[r][0], trace[0])
                b = return_value_or_None(request, ids[r][0], trace[1])
                if name.subject_by.Class== 'SSS 1' or name.subject_by.Class== 'SSS 2' or name.subject_by.Class== 'SSS 3':#yor
                    c = return_value_or_None(request, ids[r][0], trace[2])
                d = return_value_or_None(request, ids[r][0], trace[3])
                e = return_value_or_None(request, ids[r][0], trace[4])   
                f = return_value_or_None(request, ids[r][0], trace[5])
                #['MAT', 'NAV', 'IRS', 'AGR'] ['MAT', 'CIV', 'IRS']
                g = return_value_or_None(request, ids[r][0], ['MAT'])
                h = return_value_or_None(request, ids[r][0], ['CIV', 'NAV'])
                i = return_value_or_None(request, ids[r][0], ['IRS'])     
                if name.subject_by.Class== 'JSS 1' or name.subject_by.Class== 'JSS 2' or name.subject_by.Class== 'JSS 3':#agr
                    c = return_value_or_None(request, ids[r][0], ['YOR'])
                    j = return_value_or_None(request, ids[r][0], ['AGR'])            #i
                if len(dim) != 0:
                    OVERALL_ANNUAL.objects.create(student_name=name.student_name, class_in=name.subject_by.Class, teacher_in=request.user,  session=name.subject_by.session, acc = a, ict = b, yor = c, bst = d, bus = e, prv = f, eng = name, mat = g, nva = h, irs = i, agr = j, AGR = round(sum(dim),2), AVR = round(mean(dim),2), GRD = do_grades([int(mean(dim))], cader(get_object_or_404(ANNUAL, pk=ids[r][0]).third.tutor.Class))[0]).save()
                dim = []  
        else:
             return redirect('home')
Beispiel #8
0
def upload_new_subject_scores(request, pk):
    start_time = time.time()
    tutor = get_object_or_404(BTUTOR, pk=pk) 
    if request.method == "POST":
        my_file = request.FILES['files'] # get the uploaded file
        if not my_file.name.endswith('.txt'):
            return render(request, 'result/file_extension_not_txt.html')
        file_txt = my_file.read().decode("ISO-8859-1")
        if tutor.term == '3rd Term':
            if len(set([i[0] for i in[x for x in list(QSUBJECT.objects.filter(tutor__Class__exact = tutor.Class, tutor__subject__exact = tutor.subject, tutor__session__exact = tutor.session).values_list('tutor'))]])) != 2:
                return redirect('home')
        contents = file_txt.split('\n');
        named_scores = [[], [], []]#[compltet_data_for_each_student, scores, name_only]
        for line in contents:
            each_student = [new.strip() for new in line.split(',')]
            named_scores[0] += [each_student]
        serial_no = [named_scores[0].index(x) for x in named_scores[0]]#get name indexes
        valid_input = [n[:] for n in named_scores[0] if len(n) > 2]
        males = serial_no[-1]#last_no on male list
        females = len(valid_input) - males
        tutor.males = males
        tutor.females = females
        
        #####################REPEATED NAMES######################################
        word_counts = Counter([r[0] for r in valid_input])
        repeated_name = word_counts.most_common()
        ideces = [list(x) for x in repeated_name if x[1] != 1]
        for i in range(0, len(ideces)):
            repeated_names = [valid_input[valid_input.index(x)][0] + str(valid_input.index(x)) for x in valid_input if x[0] == ideces[i][0]]
            each = [valid_input.index(x) for x in valid_input if x[0] == ideces[i][0]]
            for r in range(0, len(repeated_names)):
                valid_input[each[r]] = str(repeated_names[r])
        
        ##########################ERROR CHECK##############################
        sd = []
        for i in range(0, len(valid_input)):
            output = [check(s) for s in valid_input[i]]
            if len(output) == 9:
                if output != [False, True, True, True, True, True, True, True, True]:
                    return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id})
            elif len(output) == 5:
                if output != [False, True, True, True, True]:
                    return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id})
            else:
                return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id}) 
        ##########################ERROR CHECK##############################
            sd += [[valid_input[i][0]]+[[int(float(ints)) for ints in valid_input[i][1:]]][0]]
        
        if len(sd) == 9:#BST ONLY: Reduced 8 to 4 columns by averaging.
            from statistics import mean
            valid_input = [[round(mean(x[1:3])), round(mean(x[3:5])), round(mean(x[5:7])), round(mean(x[7:9]))] for x in sd]
        else:
            valid_input = sd
            
        x = cader(tutor.Class)
        raw_scores = [[x[0], x[1], x[2], x[3], sum(x[1:4]), x[4], sum([sum(x[1:4]), x[4]])] for x in valid_input]
        
        posi = do_positions([int(i[-1]) for i in raw_scores][:])
        grade = do_grades([int(i[-1]) for i in raw_scores][:], x)
        
        
        #####################NAMES QUERIES######################################
        Genders = [sorted(raw_scores[:males]), sorted(raw_scores[males:])]#sorted_list
        for i in range(0, 2):
            splited = sorted([x[0].split(' ') for x in Genders[i]])
            for r in range(0, len(splited)):
                unspaced = [i for i in splited[r] if len(i) > 2]+['first_name']
                Genders[i][r][0] = unspaced[0] +" "+ unspaced[1]
        Males = [[list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name', 'id'))], sorted([x for x in [x[0] for x in Genders[0]] if x not in [x[0] for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name'))]])]
        [[CNAME(full_name = i, gender = 1).save() for i in Males[1] if len(Males[1]) != 0]]#remainder
        if len(Males[1]) != 0:
            Males[0] + [list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name', 'id'))][0]

        Females = [[list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name', 'id'))], sorted([x for x in [x[0] for x in Genders[1]] if x not in [x[0] for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name'))]])]
        [[CNAME(full_name = i, gender = 2).save() for i in Females[1] if len(Females[1]) != 0]]#remainder
        if len(Females[1]) != 0:
            Females[0] + [list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name', 'id'))][0]
        
        
        Both_sex_scores = Genders[0] + Genders[1]
               
        final = [x+[y]+[z] for x,y,z in zip(Both_sex_scores, grade, posi)]#complete scores
        Both_sex_ids = sorted(Males[0], key=sort_key) + sorted(Females[0], key=sort_key)#compltes ids 
        joined_scores_ids = [[str(i[1])]+x[:] for i,x in zip(Both_sex_ids, final)]
        #from django.http import HttpResponse
        #return HttpResponse([len(joined_scores_ids)], content_type='text/plain')#
                                     ########################QUERY SUBJECT MODEL FOR CONTINUATIONS###############################
        
        Both_sex_ids_final = [x for x in joined_scores_ids if x[1] not in [r[0] for r in [list(QSUBJECT.objects.filter(student_name__in=CNAME.objects.filter(full_name__in=[x[1] for x in joined_scores_ids])).distinct().values_list('student_name'))]]]
        
        [QSUBJECT(student_name=CNAME.objects.get(pk=i[0]), test=i[2], agn=i[3], atd=i[4], exam=i[6], total=i[5], agr=i[7], posi=i[9], grade=i[8], tutor = tutor, cader = x).save() for i in Both_sex_ids_final]
        elapsed_time_secs = time.time() - start_time
        msg = "Execution took: %s secs (Wall clock time)" % timedelta(seconds=round(elapsed_time_secs))
        messages.success(request, msg)
        print(msg)
        tutor.save()
        if tutor.term == '3rd Term':
            qs = QSUBJECT.objects.select_related('tutor').filter(tutor__id__exact=pk)
            [ANNUAL(student_name = x.student_name, third = x, subject_by = BTUTOR.objects.get(pk=pk)).save() for x in qs]
    else:#
        return render(request, 'result/loader.html', {'pk':pk, 'qry':tutor})
    ######################STAGE 2 ::: UPLOAD SCORES##################ENDS
    return redirect('subject_view', pk=pk)#summarise all tutor's uploads
Beispiel #9
0
def mass_upload(request):
    start_time = time.time()
    for entry in os.listdir(basepath):#6 entries {JSS1, JSS 2, JSS 3, SSS 1, SSS 2, SSS 3}
        for files in os.listdir(os.path.join(basepath, entry)): #33 + 60
            os.chdir(os.path.join(basepath, entry))
            with open(files, 'r') as file:
                new = files.split("_")#['99', 'SSS 3', '3', 'MAT.txt']
                user = User.objects.get(pk=int(new[0]))#99   'MAT'                     'SSS 3'                                                     '3rd Term'                 's'
                unique = BTUTOR.objects.filter(accounts__exact=user, term__exact=['empty', '1st Term', '2nd Term', '3rd Term'][int(new[2])], Class__exact=new[1], subject__exact = ASUBJECTS.objects.get(name=new[-1].split('.')[0]), session__exact = session)
                if unique.count() == 0:
                    tutor = BTUTOR(accounts=user, subject = ASUBJECTS.objects.get(name=new[-1].split('.')[0]), Class = new[1], term = ['empty', '1st Term', '2nd Term', '3rd Term'][int(new[2])], cader=cader(new[1]), teacher_name = f'{user.profile.title}{user.profile.last_name} : {user.profile.first_name}', session = session)
                    tutor.save()
                else:
                    tutor = BTUTOR.objects.get(accounts=user, term=['empty', '1st Term', '2nd Term', '3rd Term'][int(new[2])], Class=new[1], subject = ASUBJECTS.objects.get(name=new[-1].split('.')[0]), session = session)
                
                file_txt = file.read()#.decode("ISO-8859-1")
                contents = file_txt.split('\n');
                named_scores = [[], [], []]#[compltet_data_for_each_student, scores, name_only]
                for line in contents:
                    each_student = [new.strip() for new in line.split(',')]
                    named_scores[0] += [each_student]
                serial_no = [named_scores[0].index(x) for x in named_scores[0]]#get name indexes
                valid_input = [n[:] for n in named_scores[0] if len(n) > 2]
                males = serial_no[-1]#last_no on male list
                females = len(valid_input) - males
                tutor.males = males
                tutor.females = females
                tutor.save()
                #####################REPEATED NAMES######################################
                word_counts = Counter([r[0] for r in valid_input])
                repeated_name = word_counts.most_common()
                ideces = [list(x) for x in repeated_name if x[1] != 1]
                for i in range(0, len(ideces)):
                    repeated_names = [valid_input[valid_input.index(x)][0] + str(valid_input.index(x)) for x in valid_input if x[0] == ideces[i][0]]
                    each = [valid_input.index(x) for x in valid_input if x[0] == ideces[i][0]]
                    for r in range(0, len(repeated_names)):
                        valid_input[each[r]] = str(repeated_names[r])
                
                ##########################ERROR CHECK##############################
                sd = []
                for i in range(0, len(valid_input)):
                    output = [check(s) for s in valid_input[i]]
                    if len(output) == 9:
                        if output != [False, True, True, True, True, True, True, True, True]:
                            return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id, 'subject':ASUBJECTS.objects.get(name=new[-1].split('.')[0])})
                    elif len(output) == 5:
                        if output != [False, True, True, True, True]:
                            return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id, 'subject':ASUBJECTS.objects.get(name=new[-1].split('.')[0])})
                    else:
                        return render(request, 'result/InputTypeError.html', {'int':i, 'invalid': valid_input[i], 'pk':tutor.id, 'subject':ASUBJECTS.objects.get(name=new[-1].split('.')[0])}) 
                ##########################ERROR CHECK##############################
                    sd += [[valid_input[i][0]]+[[int(float(ints)) for ints in valid_input[i][1:]]][0]]
                
                if len(sd) == 9:#BST ONLY: Reduced 8 to 4 columns by averaging.
                    from statistics import mean
                    valid_input = [[round(mean(x[1:3])), round(mean(x[3:5])), round(mean(x[5:7])), round(mean(x[7:9]))] for x in sd]
                else:
                    valid_input = sd
                    
                x = cader(tutor.Class)
                raw_scores = [[x[0], x[1], x[2], x[3], sum(x[1:4]), x[4], sum([sum(x[1:4]), x[4]])] for x in valid_input]
                
                posi = do_positions([int(i[-1]) for i in raw_scores][:])
                grade = do_grades([int(i[-1]) for i in raw_scores][:], x)
                
                
                #####################NAMES QUERIES######################################
                Genders = [sorted(raw_scores[:males]), sorted(raw_scores[males:])]#sorted_list
                for i in range(0, 2):
                    splited = sorted([x[0].split(' ') for x in Genders[i]])
                    for r in range(0, len(splited)):
                        unspaced = [i for i in splited[r] if len(i) > 2]+['first_name']
                        Genders[i][r][0] = unspaced[0] +" "+ unspaced[1]
                Males = [[list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name', 'id'))], sorted([x for x in [x[0] for x in Genders[0]] if x not in [x[0] for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name'))]])]
                [[CNAME(full_name = i, gender = 1).save() for i in Males[1] if len(Males[1]) != 0]]#remainder
                if len(Males[1]) != 0:
                    Males[0] + [list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[0]]).values_list('full_name', 'id'))][0]
        
                Females = [[list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name', 'id'))], sorted([x for x in [x[0] for x in Genders[1]] if x not in [x[0] for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name'))]])]
                [[CNAME(full_name = i, gender = 2).save() for i in Females[1] if len(Females[1]) != 0]]#remainder
                if len(Females[1]) != 0:
                    Females[0] + [list(x) for x in list(CNAME.objects.filter(full_name__in=[x[0] for x in Genders[1]]).values_list('full_name', 'id'))][0]
                
                
                Both_sex_scores = Genders[0] + Genders[1]
               
                final = [x+[y]+[z] for x,y,z in zip(Both_sex_scores, grade, posi)]#complete scores
                Both_sex_ids = sorted(Males[0], key=sort_key) + sorted(Females[0], key=sort_key)#compltes ids 
                joined_scores_ids = [[str(i[1])]+x[:] for i,x in zip(Both_sex_ids, final)]
                                             ########################QUERY SUBJECT MODEL FOR CONTINUATIONS###############################
                
                Both_sex_ids_final = [x for x in joined_scores_ids if x[1] not in [r[0] for r in [list(QSUBJECT.objects.filter(student_name__in=CNAME.objects.filter(full_name__in=[x[1] for x in joined_scores_ids])).distinct().values_list('student_name'))]]]
                
                [QSUBJECT(student_name=CNAME.objects.get(pk=i[0]), test=i[2], agn=i[3], atd=i[4], exam=i[6], total=i[5], agr=i[7], posi=i[9], grade=i[8], tutor = tutor, cader = x).save() for i in Both_sex_ids_final]
                elapsed_time_secs = time.time() - start_time
                msg = "Execution took: %s secs (Wall clock time)" % timedelta(seconds=round(elapsed_time_secs))
                messages.success(request, msg)
                print(msg)
                tutor.save()
                if tutor.term == '3rd Term':
                    qs = QSUBJECT.objects.select_related('tutor').filter(tutor__id__exact=tutor.id)
                    [ANNUAL(student_name = x.student_name, third = x, subject_by = BTUTOR.objects.get(pk=tutor.id)).save() for x in qs]                    
                    #agr = [r[0] for r in [x[:] for x in list(ANNUAL.objects.filter(subject_by__exact=tutor).values_list('Agr'))]]###############news
                    agr = [r[0] for r in [x[:] for x in list(ANNUAL.objects.filter(subject_by__exact=tutor).values_list('Agr'))]]###############news
                    posi = do_positions(agr[:])
                    ids = [r[0] for r in [x[:] for x in list(ANNUAL.objects.filter(subject_by__exact=tutor).values_list('id'))]]
                    for i in range(0, len(agr)):
                        objs = ANNUAL.objects.get(pk=ids[i])
                        objs.grade = do_grades([int(objs.Agr)], cader(tutor.Class))[0]
                        objs.Posi = posi[i]
                        objs.save()
                    objs = ANNUAL.objects.get(pk=ids[0])
                    TUTOR_HOME(tutor = objs.first.tutor.accounts, teacher_name = objs.first.tutor.teacher_name, first_term = objs.first.tutor, second_term = objs.second.tutor, third_term = objs.third.tutor).save()
                elapsed_time_secs = time.time() - start_time
                msg = "Execution took: %s secs (Wall clock time)" % timedelta(seconds=round(elapsed_time_secs))
                messages.success(request, msg)
                print(msg)
                file.close()
                new_file = os.path.join(os.path.join(reloadpath, entry), files)
                old_file = os.path.join(os.path.join(basepath, entry), files)
                shutil.move(old_file, new_file)

    ######################STAGE 2 ::: UPLOAD SCORES##################ENDS
    return redirect('home')