def get(self): if self.request.get('langCode'): langCode = self.request.get('langCode') q = Subjects.query(Subjects.LangCode == langCode) units = q.fetch(999) countmap_other_language={} for unit in units: logging.info('QQQ: LangCode in clone: %s' % unit.LangCode) if unit.LearningUnitID not in countmap_other_language: logging.info('QQQ: LearningUnitID in clone: %s' % unit.LearningUnitID) countmap_other_language[unit.LearningUnitID] = 1 q = Subjects.query(Subjects.LangCode == 'en') units_en = q.fetch(999) for unit2 in units_en: if unit2.LearningUnitID not in countmap_other_language: logging.info('QQQ: LearningUnitID to add in clone: %s' % unit2.LearningUnitID) logging.info('QQQ: LangCode to add in clone: %s' % langCode) n = Subjects(LearningUnitID = unit2.LearningUnitID , Subject = unit2.Subject , Name = unit2.Name , Seq = unit2.Seq , LangCode = langCode , Description = unit2.Description , Status = 'Pending Translation' ) n.put() return self.redirect('/subjs') else: return self.redirect('/subjs')
def test_insert_subject(client, numSubjects): with app.app_context(): # insertSubject(subjectCode, term, subjectType, subjectName, components, pillar, cohortnum, totalenrollment, sessionnum): numSubjects = len(Subjects.query.all()) subjectCode = 50.999 term = 5 subjectType = "Core" subjectName = "Test Subject" components = "[]" pillar = 1 cohortnum = 1 totalenrollment = 1 sessionnum = 1 Subjects.insertSubject(subjectCode, term, subjectType, subjectName, components, pillar, cohortnum, totalenrollment, sessionnum) print("\n[INFO] Inserting new subject with following fields:") print("[INFO] Subject Code: {}".format(subjectCode)) print("[INFO] Term: {}".format(term)) print("[INFO] Subject Type: {}".format(subjectType)) print("[INFO] Components: {}".format(components)) print("[INFO] Pillar: {}".format(pillar)) print("[INFO] Cohort No.: {}".format(cohortnum)) print("[INFO] Total Enrollment: {}".format(totalenrollment)) print("[INFO] Session No.: {}".format(sessionnum)) new_numSubjects = len(Subjects.query.all()) print("[INFO] Current no. of Subjects: {}".format(numSubjects)) print("[INFO] No. of Subjects after insert: {}".format(new_numSubjects)) subjects = Subjects.query.all() assert len(subjects) == int(numSubjects) + 1
def insere_disciplina(nome, periodo, prof, creditos, carga, site): subject = Subjects(name=nome, period=periodo, professor=prof, credits=creditos, workload=carga, url=site) subject.save()
def display(): from models import Subjects try: inserted = Subjects.insert(request.form['subjectCode'], request.form['term'], request.form['subjectType'], request.form['subjectName']) except: print("Empty fields") result = Subjects.select(all=True) return render_template("database.html", result=result)
def subjectsTable(): try: inserted = Subjects.insert( request.form['subjectCode'], request.form['term'], request.form['subjectType'], request.form['subjectName']) except: print("Empty fields") allSubjects = Subjects.select(all=True) return render_template("subjectsTable.html", allSubjects=allSubjects)
def post(self): #logging.error('QQQ: templatecreate POST') n = Subjects(LearningUnitID = self.request.get('Name') , Subject=self.request.get('Subject') , Name = self.request.get('Name') , Seq = 999 , LangCode = 'en' , Description=self.request.get('Description') , Status = 'Pending Review' ) n.put() logging.info("PPP - Preparing to delete Subjs_units from memcache.") memcache.delete("Subjs_En") memcache.delete("Subj_EnCnt") return self.redirect('/subjs/create')
def get(self, unit_id): iden = int(unit_id) unit = ndb.Key('Subjects', iden).get() f = Subjects.query(Subjects.LangCode == 'en', Subjects.LearningUnitID == unit.LearningUnitID) units_en = f.get() SubjAreaList = [] if SubjectAreas.LangCode == 'en': q = SubjectAreas.query(SubjectAreas.LangCode == 'en').order(SubjectAreas.Seq) SubjAreaResponseSet = q.fetch(999) for SubjArea in SubjAreaResponseSet: SubjAreaList.append(SubjArea.Name) logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url('/units' ) else: login = users.create_login_url('/units') #SubjectList = ['Math', 'Biology', 'Chemistry']; StatusList = ['Pending Translation', 'Pending Review', 'Published']; self.render_template('LearnSubjEdit.html', {'unit': unit, 'units_en': units_en, 'SubjectList': SubjAreaList, 'StatusList': StatusList, 'currentuser':currentuser, 'login':login, 'logout': logout})
def get(self, unit_id): iden = int(unit_id) unit = ndb.Key("TopicGrps", iden).get() f = TopicGrps.query(TopicGrps.LangCode == "en", TopicGrps.LearningUnitID == unit.LearningUnitID) units_en = f.get() if self.request.get("SubjFilter"): SubjFilter = self.request.get("SubjFilter") self.session["SubjFilter"] = SubjFilter else: SubjFilter = self.session.get("SubjFilter") if not SubjFilter: self.session["SubjFilter"] = "all" SubjFilter = "all" logging.info("QQQ: SubjFilter in Topic Grp Edit: %s" % SubjFilter) if self.request.get("SubjAreaFilter"): SubjAreaFilter = self.request.get("SubjAreaFilter") self.session["SubjAreaFilter"] = SubjAreaFilter else: SubjAreaFilter = self.session.get("SubjAreaFilter") if not SubjAreaFilter: self.session["SubjAreaFilter"] = "Math" SubjAreaFilter = "Math" q3 = Subjects.query(Subjects.Subject == SubjAreaFilter).order(Subjects.Seq) subjects = q3.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append("none") logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url("/topgrps") else: login = users.create_login_url("/topgrps") # SubjectList = ['Math', 'Biology', 'Chemistry']; StatusList = ["Pending Translation", "Pending Review", "Published"] self.render_template( "LearnTopicGrpEdit.html", { "unit": unit, "units_en": units_en, "SubjectList": SubjectList, "SubjFilter": SubjFilter, "StatusList": StatusList, "currentuser": currentuser, "login": login, "logout": logout, }, )
def subjects(): available_rooms = Rooms.query.all() room_list = [(-1,'No Preference')] for room in available_rooms: room_list.append((room.room_id, room.location)) form = SubjectForm() if form.add_more_component.data: print("came here instead") form.component.append_entry(u'default value') for entry in form.component.entries: entry.classroom.choices = room_list if form.validate_on_submit(): print("came here") if form.term_no.data == '-1' or form.pillar.data == '-1' or form.subject_type.data == '-1': print("Please choose an option for term, pillar and subject type") else: subjectname = form.subject_name.data subjectid = form.subject_id.data termno = dict(form.terms).get(form.term_no.data) subjecttype = dict(form.subject_types).get(form.subject_type.data) pillar = form.pillar.data cohort_num = form.cohort_num.data total_enrollment = form.total_enrollment.data session_nums = len(form.component.entries) components = [] for each_entry in form.component.entries: temp = {"duration":each_entry.data['duration'],"sessionType": int(each_entry.data['session']),"classroom":each_entry.data['classroom'], 'cohorts':[]} if int(each_entry.data['session']) == -1: print("Please choose an option for session type") return render_template('subjects.html',form=form) if int(each_entry.data['session']) == 1: for i in range(cohort_num): temp['cohorts'].append(i) components.append(temp) print(temp) Subjects.insertSubject(subjectid,termno,subjecttype,subjectname, str(components), pillar, cohort_num, total_enrollment, session_nums) return redirect(url_for('subjectsTable')) return render_template('subjects.html',form=form)
def TopicSeqRecalc(): dic_en = {} q2 = Subjects.query(Subjects.LangCode == 'en') unitsen = q2.fetch(999) for uniten in unitsen: logging.info('GGG: TopicSeqRecalc / Seq before: %d' % uniten.Seq) seq = uniten.Seq if seq == None: seq = 256 logging.info('GGG: TopicSeqRecalc / Adding Subjects to Dic: %s' % uniten.LearningUnitID) logging.info('GGG: TopicSeqRecalc / Adding Seq to Dic: %d' % seq) dic_en[uniten.LearningUnitID] = seq q = Subjects.query(Subjects.LangCode != 'en') units = q.fetch(999) for unit in units: logging.info('GGG: TopicSeqRecalc / Updating Subjects %s' % unit.LearningUnitID) logging.info('GGG: TopicSeqRecalc / Updating Subjects Seq: %d' % dic_en[unit.LearningUnitID]) unit.Seq = dic_en[unit.LearningUnitID] unit.put() return
def genSchedule(): ''' Update the input.json file in algorithm folder from the database. runScheduler then, update the database with the new data. ''' input_dict = {'professor':[],'subject':[],'classroom':[],'studentGroup':[]} prof_format = {'name':'','id':0,'courseTable':{}} subject_format = {'component':[],'pillar':0,'sessionNumber':0,'name':'','term':1,'cohortNumber':1,'totalEnrollNumber':10,'type':0,'courseId':''} class_format = {'name':'','location':'','id':1,'roomType':0,'capacity':10} studentGroup_format = {'pillar': 0, 'size': 0, 'subjects': [], 'name': '', 'cohort': 0, 'term': 1,'id':0} input_dict['subject'] = Subjects.getAllSubjects() input_dict['classroom'] = Rooms.geAllRooms() input_dict['studentGroup'] = studentGroup.getAllGroups() classroomlist = [i for i in range(len(input_dict['classroom']))] for professor in Users.getAllProfessors(): input_dict['professor'].append({'name':professor.fullname,'id':professor.professor_id,'coursetable':ast.literal_eval(professor.coursetable)}) for each_professor in input_dict['professor']: each_professor['coursetable'] = {str(k):ast.literal_eval(v) for k,v in each_professor['coursetable'].items()} for each_subject in input_dict['subject']: for each_component in each_subject['component']: each_component['classroom'] = classroomlist print(input_dict) file_to_open = os.path.join(os.getcwd(), "input.json") with open(file_to_open,'w+') as input_file: print(json.dump(input_dict, input_file)) with open(file_to_open, 'r') as data_file: data = json.load(data_file) print(data) """ file_to_open2 = os.path.join(os.getcwd(),"algorithm/input.json") with open(file_to_open2,'w') as input_file: print(json.dump(input_dict, input_file)) input_file.close() with open(file_to_open2, 'r') as data_file: data = json.load(data_file) print(data) data_file.close() """ runScheduler() timetablePath = os.path.join(os.getcwd(), "timetable.json") with open(timetablePath, 'r') as data_file: data = json.load(data_file) Timetable.replace_all(data) return redirect(url_for('home'))
def get(self): if self.request.get("SubjFilter"): SubjFilter = self.request.get("SubjFilter") self.session["SubjFilter"] = SubjFilter else: SubjFilter = self.session.get("SubjFilter") if not SubjFilter: self.session["SubjFilter"] = "all" SubjFilter = "all" if self.request.get("SubjAreaFilter"): SubjAreaFilter = self.request.get("SubjAreaFilter") self.session["SubjAreaFilter"] = SubjAreaFilter else: SubjAreaFilter = self.session.get("SubjAreaFilter") if not SubjAreaFilter: self.session["SubjAreaFilter"] = "Math" SubjAreaFilter = "Math" logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url("/topgrps") else: login = users.create_login_url("/topgrps") q3 = Subjects.query(Subjects.Subject == SubjAreaFilter, Subjects.LangCode == "en").order( Subjects.Seq, Subjects.LearningUnitID ) subjects = q3.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append("none") # SubjectList = ['Math', 'Biology', 'Chemistry']; self.render_template( "LearnTopicGrpCreate.html", { "SubjectList": SubjectList, "SubjFilter": SubjFilter, "currentuser": currentuser, "login": login, "logout": logout, }, )
def get(self, unit_id): iden = int(unit_id) unit = ndb.Key('TopicAreas', iden).get() f = TopicAreas.query(TopicAreas.LangCode == 'en', TopicAreas.LearningUnitID == unit.LearningUnitID) units_en = f.get() if self.request.get('SubjFilter'): SubjFilter=self.request.get('SubjFilter') self.session['SubjFilter'] = SubjFilter else: SubjFilter = self.session.get('SubjFilter') if not SubjFilter: self.session['SubjFilter'] = 'all' SubjFilter = 'all' logging.info('QQQ: SubjFilter in Topic Grp Edit: %s' % SubjFilter) if self.request.get('SubjAreaFilter'): SubjAreaFilter=self.request.get('SubjAreaFilter') self.session['SubjAreaFilter'] = SubjAreaFilter else: SubjAreaFilter = self.session.get('SubjAreaFilter') if not SubjAreaFilter: self.session['SubjAreaFilter'] = 'Math' SubjAreaFilter = 'Math' q3 = Subjects.query(Subjects.Subject == SubjAreaFilter).order(Subjects.Seq) subjects = q3.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append('none') logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url('/topareas' ) else: login = users.create_login_url('/topareas') # SubjectList = ['Math', 'Biology', 'Chemistry']; StatusList = ['Pending Translation', 'Pending Review', 'Published']; self.render_template('LearnTopicAreaEdit.html', {'unit': unit, 'units_en': units_en, 'SubjectList': SubjectList, 'StatusList': StatusList, 'currentuser':currentuser, 'login':login, 'logout': logout})
def get(self): if self.request.get('SubjFilter'): SubjFilter=self.request.get('SubjFilter') self.session['SubjFilter'] = SubjFilter else: SubjFilter = self.session.get('SubjFilter') if not SubjFilter: self.session['SubjFilter'] = 'all' SubjFilter = 'all' if self.request.get('SubjAreaFilter'): SubjAreaFilter=self.request.get('SubjAreaFilter') self.session['SubjAreaFilter'] = SubjAreaFilter else: SubjAreaFilter = self.session.get('SubjAreaFilter') if not SubjAreaFilter: self.session['SubjAreaFilter'] = 'Math' SubjAreaFilter = 'Math' logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url('/subjs' ) else: login = users.create_login_url('/subjs') q3 = Subjects.query(Subjects.Subject == SubjAreaFilter, Subjects.LangCode == 'en').order(Subjects.Seq, Subjects.LearningUnitID) subjects = q3.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append('none') # SubjectList = ['Math', 'Biology', 'Chemistry']; self.render_template('LearnTopicAreaCreate.html', {'SubjectList':SubjectList, 'SubjFilter':SubjFilter, 'currentuser':currentuser, 'login':login, 'logout': logout})
def viewStudentSchedule(): """ A schedule contains the following information per specific class: subject id subject name type of session(cohort based learning, lecture, lab) start time to end time location of session(room id) professors teaching """ input_dict = {'professor':[],'subject':[],'classroom':[],'studentGroup':[]} prof_format = {'name':'','id':0,'courseTable':{}} subject_format = {'component':[],'pillar':0,'sessionNumber':0,'name':'','term':1,'cohortNumber':1,'totalEnrollNumber':10,'type':0,'courseId':''} class_format = {'name':'','location':'','id':1,'roomType':0,'capacity':10} studentGroup_format = {'pillar': 0, 'size': 0, 'subjects': [], 'name': '', 'cohort': 0, 'term': 1,'id':0} for professor in Users.getAllProfessors(): input_dict['professor'].append({'name':professor.fullname,'id':professor.professor_id,'coursetable':ast.literal_eval(professor.coursetable)}) for each_professor in input_dict['professor']: each_professor['coursetable'] = {str(k):ast.literal_eval(v) for k,v in each_professor['coursetable'].items()} input_dict['subject'] = Subjects.getAllSubjects() input_dict['classroom'] = Rooms.geAllRooms() input_dict['studentGroup'] = studentGroup.getAllGroups() Session = {'Lab':2,'Cohort Based Learning':0,'Lecture':1} student_schedule = [['Monday','Tuesday','Wedneday','Thursday','Friday'], ['08:30-09:00',None,None,None,None,None], ['09:00-09:30',None,None,None,None,None], ['09:30-10:00',None,None,None,None,None], ['10:00-10:30',None,None,None,None,None], ['10:30-11:00',None,None,None,None,None], ['11:00-11:30',None,None,None,None,None], ['11:30-12:00',None,None,None,None,None], ['12:00-12:30',None,None,None,None,None], ['12:30-13:00',None,None,None,None,None], ['13:00-13:30',None,None,None,None,None], ['13:30-14:00',None,None,None,None,None], ['14:00-14:30',None,None,None,None,None], ['14:30-15:00',None,None,None,None,None], ['15:00-15:30',None,None,None,None,None], ['15:30-16:00',None,None,None,None,None], ['16:00-16:30',None,None,None,None,None], ['16:30-17:00',None,None,None,None,None], ['17:00-17:30',None,None,None,None,None], ['17:30-18:00',None,None,None,None,None], ['18:00-18:30',None,None,None,None,None], ['18:30-19:00',None,None,None,None,None]] if current_user.user_group == 'student': subject_cohort_dict = {} for each_student_group in input_dict['studentGroup']: if each_student_group['name'] == current_user.student_group: for subject in each_student_group['subjects']: subject_cohort_dict[str(subject)] = int(each_student_group['cohort']) break print(subject_cohort_dict) user_timetable = Timetable.find_Timetable(subject_cohort_dict) for specific_class in user_timetable['user_timetable']: class_info = [] subject_id = str(specific_class['subject']) subject_name = '' for each_subject in input_dict['subject']: if each_subject['courseId'] == specific_class['subject']: subject_name = each_subject['name'] break session_type = 'Lecture' if len(ast.literal_eval(specific_class['cohort'])) > 1 else 'Cohort Based Learning' start_to_end = student_schedule[int(specific_class['startTime'])+1][0][0:6] +\ student_schedule[int(float(specific_class['duration'])*2)+int(specific_class['startTime'])][0][6:] location = specific_class['classroom'] professors_teaching = '' for professor in input_dict['professor']: if subject_id in list(professor['coursetable'].keys()): professors_teaching += professor['name'] + "," professors_teaching = professors_teaching[:len(professors_teaching)-1] input_specific_class = subject_id + "<br>"\ + subject_name + "<br>"\ + session_type + "<br>"\ + start_to_end + "<br>"\ + location + "<br>"\ + professors_teaching class_info.append(int(float(specific_class['duration'])*2)) class_info.append(input_specific_class) student_schedule[int(specific_class['startTime'])+1][int(specific_class['weekday'])+1] = class_info print(student_schedule) #redirect(url_for('home')) return render_template("viewStudentSchedule.html",student_schedule=student_schedule)
def getTable(): from models import Subjects result = Subjects.export(app) return result
def get(self): # TopicSeqRecalc() languages = memcache.get("languages") if languages is not None: logging.info("get languages from memcache.") else: q = Languages.query().order(Languages.langName) languages = q.fetch(99) logging.info("Can not get languages from memcache.") if not memcache.add("languages", languages, 99): logging.info("Memcache set failed.") if self.request.get('langCode'): langCode=self.request.get('langCode') self.session['langCode'] = langCode else: langCode = self.session.get('langCode') if not langCode: self.session['langCode'] = 'en' langCode = 'en' langName = 'no language' for language in languages: if language.langCode == langCode: langName = language.langName if self.request.get('StatusFilter'): StatusFilter=self.request.get('StatusFilter') self.session['StatusFilter'] = StatusFilter else: StatusFilter = self.session.get('StatusFilter') if not StatusFilter: self.session['StatusFilter'] = 'all' StatusFilter = 'all' if self.request.get('SubjAreaFilter'): SubjAreaFilter=self.request.get('SubjAreaFilter') self.session['SubjAreaFilter'] = SubjAreaFilter else: SubjAreaFilter = self.session.get('SubjAreaFilter') if not SubjAreaFilter: self.session['SubjAreaFilter'] = 'Math' SubjAreaFilter = 'Math' if self.request.get('Typ'): Typ=self.request.get('Typ') self.session['Typ'] = Typ else: Typ = self.session.get('Typ') if not Typ: self.session['Typ'] = 'ex' Typ = 'ex' logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url('/units' ) else: login = users.create_login_url('/units') SubjAreaList = [] q = SubjectAreas.query(SubjectAreas.LangCode == langCode) SubjAreaResponseSet = q.fetch(999) for SubjArea in SubjAreaResponseSet: SubjAreaList.append(SubjArea.Name) StatusList = ['Pending Translation', 'Pending Review', 'Published']; # SubjAreaList = ['Math', 'Science']; logging.info('QQQ: rq rq rq: %s' % self.request.get('rq')) # if self.request.get('rq') == '2': Cnt = memcache.get("Subj_EnCnt") if Cnt is not None: logging.info("PPP - got Subj_EnCnt from memcache.") count_en = Cnt else: logging.info("PPP - Could not get Subjs_EnCnt from memcache.") count_en = 0 langCode_en = 'en' units = memcache.get("Subjs_En") if units is not None: logging.info("PPP - got Subjs_En_units from memcache.") else: # logging.info("PPP - Can not get SubjAreas_units from memcache.") q = Subjects.query(Subjects.LangCode == langCode_en) units = q.fetch(999, keys_only=True) if not memcache.add("Subjs_En", units, 999): logging.info("PPP - Subjs_EnCnt_Memcache set failed.") for unit in units: # logging.info('QQQ: count_en: %d' % count_en) count_en = count_en + 1 if not memcache.add("Subj_EnCnt", count_en, 999): logging.info("PPP - Subj_EnCnt_Memcache set failed.") logging.info('QQQ: Total count_en: %d' % count_en) # count_en = 0 # langCode_en = 'en' # q = Subjects.query(Subjects.LangCode == langCode_en) # units = q.fetch(999) # for unit in units: # logging.info('QQQ: count_en: %d' % count_en) # count_en = count_en + 1 # logging.info('QQQ: Total count_en: %d' % count_en) logging.info('QQQ: langCode: %s' % langCode) count_other_language = 0 q2 = Subjects.query(Subjects.LangCode == langCode) unitsx = q2.fetch(999, keys_only=True) for unit in unitsx: logging.info('QQQ: count_other_language: %d' % count_other_language) count_other_language = count_other_language + 1 logging.info('QQQ: Total count_other_language: %d' % count_other_language) logging.info('GGG: StatusFilter in LearnUnitList: %s' % StatusFilter) logging.info('GGG: SubjAreaFilter in LearnUnitList: %s' % SubjAreaFilter) if SubjAreaFilter == 'all': if StatusFilter == 'all': logging.info('GGG: Which Query in LearnUnitList: %s' % 'all and all') logging.info('GGG: LangCode in LearnUnitList: %s' % langCode) q = Subjects.query(Subjects.LangCode == langCode).order(Subjects.Seq, Subjects.LearningUnitID) else: logging.info('GGG: Which Query in LearnUnitList: %s' % 'all and StatusFilter') logging.info('GGG: LangCode in LearnUnitList: %s' % langCode) logging.info('GGG: StatusFilter in LearnUnitList: %s' % StatusFilter) q = Subjects.query(Subjects.LangCode == langCode, Subjects.Status == StatusFilter).order(Subjects.Seq, Subjects.LearningUnitID) else: if StatusFilter == 'all': logging.info('GGG: Which Query in LearnUnitList: %s' % 'SubjAreaFilter and all') logging.info('GGG: LangCode in LearnUnitList: %s' % langCode) logging.info('GGG: SubjAreaFilter in LearnUnitList: %s' % SubjAreaFilter) q = Subjects.query(Subjects.LangCode == langCode, Subjects.Subject == SubjAreaFilter).order(Subjects.Seq, Subjects.LearningUnitID) else: logging.info('GGG: Which Query in LearnUnitList: %s' % 'SubjAreaFilter and StatusFilter') logging.info('GGG: LangCode in LearnUnitList: %s' % langCode) logging.info('GGG: SubjAreaFilter in LearnUnitList: %s' % SubjAreaFilter) logging.info('GGG: StatusFilter in LearnUnitList: %s' % StatusFilter) q = Subjects.query(Subjects.LangCode == langCode, Subjects.Subject == SubjAreaFilter, Subjects.Status == StatusFilter).order(Subjects.Seq, Subjects.LearningUnitID) units = q.fetch(999) # self.render_template('LearnSubjList.html', {'units': units, 'count_en': count_en, 'count_other_language': count_other_language, 'StatusList':StatusList, 'StatusFilter':StatusFilter, 'SubjAreaFilter':SubjAreaFilter, 'SubjAreaList':SubjAreaList, 'languages':languages, 'langCode':langCode, 'langName':langName, 'currentuser':currentuser, 'login':login, 'logout': logout}) # else: # units = [] # count_en = 0 # count_other_language = 0 self.render_template('LearnSubjList.html', {'units': units, 'count_en': count_en, 'count_other_language': count_other_language, 'StatusList':StatusList, 'StatusFilter':StatusFilter, 'SubjAreaFilter':SubjAreaFilter, 'Typ':Typ, 'SubjAreaList':SubjAreaList, 'languages':languages, 'langCode':langCode, 'langName':langName, 'currentuser':currentuser, 'login':login, 'logout': logout})
def get(self): languages = memcache.get("languages") if languages is not None: logging.info("get languages from memcache.") else: q = Languages.query().order(Languages.langName) languages = q.fetch(99) logging.info("Can not get languages from memcache.") if not memcache.add("languages", languages, 10): logging.info("Memcache set failed.") if self.request.get("langCode"): langCode = self.request.get("langCode") self.session["langCode"] = langCode else: langCode = self.session.get("langCode") if not langCode: self.session["langCode"] = "en" langCode = "en" langName = "no language" for language in languages: if language.langCode == langCode: langName = language.langName if self.request.get("Typ"): Typ = self.request.get("Typ") self.session["Typ"] = Typ else: Typ = self.session.get("Typ") if not Typ: self.session["Typ"] = "ex" Typ = "ex" if self.request.get("StatusFilter"): StatusFilter = self.request.get("StatusFilter") self.session["StatusFilter"] = StatusFilter else: StatusFilter = self.session.get("StatusFilter") if not StatusFilter: self.session["StatusFilter"] = "all" StatusFilter = "all" if self.request.get("SubjFilter"): SubjFilter = self.request.get("SubjFilter") self.session["SubjFilter"] = SubjFilter else: SubjFilter = self.session.get("SubjFilter") if not SubjFilter: self.session["SubjFilter"] = "all" SubjFilter = "all" Cnt = memcache.get("TopGrp_EnCnt") if Cnt is not None: logging.info("PPP - got TopGrp_EnCnt from memcache.") count_en = Cnt else: logging.info("PPP - Could not get TopGrp_EnCnt from memcache.") count_en = 0 langCode_en = "en" units = memcache.get("TopGrps_En") if units is not None: logging.info("PPP - got TopGrps_En from memcache.") else: logging.info("PPP - Can not get TopGrps_En_units from memcache.") q = TopicGrps.query(TopicGrps.LangCode == langCode_en) units = q.fetch(999, keys_only=True) if not memcache.add("TopGrps_En", units, 999): logging.info("PPP - TopGrps_En_Memcache set failed.") for unit in units: # logging.info('QQQ: count_en: %d' % count_en) count_en = count_en + 1 if not memcache.add("TopGrp_EnCnt", count_en, 999): logging.info("PPP - TopGrp_EnCnt_Memcache set failed.") logging.info("QQQ: Total count_en: %d" % count_en) # count_en = 0 # langCode_en = 'en' # q = TopicGrps.query(TopicGrps.LangCode == langCode_en) # units = q.fetch(999) # for unit in units: # logging.info('QQQ: count_en: %d' % count_en) # count_en = count_en + 1 # logging.info('QQQ: Total count_en: %d' % count_en) logging.info("QQQ: langCode: %s" % langCode) count_other_language = 0 q2 = TopicGrps.query(TopicGrps.LangCode == langCode) unitsx = q2.fetch(999, keys_only=True) for unit in unitsx: logging.info("QQQ: count_other_language: %d" % count_other_language) count_other_language = count_other_language + 1 logging.info("QQQ: Total count_other_language: %d" % count_other_language) logging.info("GGG: StatusFilter in LearnUnitList: %s" % StatusFilter) if StatusFilter == "all": if SubjFilter == "all": q = TopicGrps.query(TopicGrps.LangCode == langCode).order(TopicGrps.Seq, TopicGrps.LearningUnitID) else: q = TopicGrps.query(TopicGrps.LangCode == langCode, TopicGrps.Subject == SubjFilter).order( TopicGrps.Seq, TopicGrps.LearningUnitID ) else: if SubjFilter == "all": q = TopicGrps.query(TopicGrps.LangCode == langCode, TopicGrps.Status == StatusFilter).order( TopicGrps.Seq, TopicGrps.LearningUnitID ) else: q = TopicGrps.query( TopicGrps.LangCode == langCode, TopicGrps.Status == StatusFilter, TopicGrps.Subject == SubjFilter ).order(TopicGrps.Seq, TopicGrps.LearningUnitID) units = q.fetch(999) q4 = Subjects.query(Subjects.LangCode == langCode, Subjects.Subject == SubjFilter).order(Subjects.Seq) subjects = q4.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append("none") logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url("/topgrps") else: login = users.create_login_url("/topgrps") StatusList = ["Pending Translation", "Pending Review", "Published"] # SubjectList = ['Math', 'Science']; self.render_template( "LearnTopicGrpList.html", { "units": units, "count_en": count_en, "count_other_language": count_other_language, "StatusList": StatusList, "SubjectList": SubjectList, "StatusFilter": StatusFilter, "Typ": Typ, "SubjFilter": SubjFilter, "languages": languages, "langCode": langCode, "langName": langName, "currentuser": currentuser, "login": login, "logout": logout, }, )
def makesubjects(): #adding to tutor table here id = request.json['id'] #print id tutor = Tutor.query.filter_by(id = request.json['id']).first() if tutor is None: return jsonify({'return':'error'}) else: loc = tutor.location eraseTutor = Tutor(id, int(loc),'',tutor.avgRatings,tutor.ratingCount) db.session.merge(eraseTutor) db.session.commit() #erase end allSubjects = "" i = 0 for subject in request.json['subjects']: #print subject["subject"] if (i == 0): allSubjects = subject["subject"] i = i + 1 else: i = i+1 allSubjects = allSubjects + "," + subject["subject"] myTutor = Tutor(id, loc, allSubjects, tutor.avgRatings, tutor.ratingCount) db.session.merge(myTutor) db.session.commit() #finished adding to tutor table subjects = Subjects.query.all() for subject in subjects: ids = "" idlist = subject.ids.split(',') for idval in idlist: if idval != request.json['id']: if not ids: ids = idval else: ids = ids + "," + idval subject.ids = ids if not ids: db.session.delete(subject) db.session.commit() for subject in request.json['subjects']: sub = Subjects.query.filter_by(subject = subject["subject"]).first() if sub is None: newID = request.json['id'] newSubject = Subjects(subject["subject"],newID) db.session.add(newSubject) db.session.commit() else: if not sub.ids: sub.ids = request.json['id'] else: sub.ids = sub.ids + "," + request.json['id'] db.session.commit() tutor1 = Tutor.query.filter(Tutor.id == request.json['id']).first() if tutor1 is None: return jsonify({'return':'noSuccess'}) tutor1.location = request.json['location'] db.session.commit() return jsonify({'return':'success','id':request.json['id']})
def update_records(request, lms_id): if request.method == 'POST': student = Student.objects.get(lmsId=lms_id) status = "" # Logging In s = requests.session() login_url = 'http://lms.bml.edu.in/login/index.php' dash_url = 'http://lms.bml.edu.in/local/dashboard/index.php' year = student.lmsId.split('.')[2][:2] print '-' * 103 print 'Name : ' + student.lmsId.split( '.')[0].title() + ' ' + student.lmsId.split('.')[1].title() print 'Year : ' + str(year) print 'Batch: ' + student.lmsId.split('.')[2][2:].upper() sem = 'Sem I' login = s.get(login_url) login_html = lxml.html.fromstring(login.content) hidden_inputs = login_html.xpath(r'//form//input[@type="hidden"]') form = {x.attrib["name"]: x.attrib["value"] for x in hidden_inputs} form['username'] = student.lmsId form['password'] = decode(student.password) response = s.post(login_url, data=form) print '-' * 103 if response.url == dash_url: status = "Login Succees!" print status else: status = 'Could Not Login! Check Details!' print status return render(request, "attendance/error.html", {}) # Searching for attendance link res_html = lxml.html.fromstring(response.content) res_links = res_html.xpath('//a[@class="btn-block "]/@href') attendance_link = '' for i in range(len(res_links)): if 'http://lms.bml.edu.in/mod/attendance/myattendance.php?studentid' in res_links[ i]: attendance_link = res_links[i] # Extracting info from Attendance Page attendance_page = s.get(attendance_link) attendance_html = lxml.html.fromstring(attendance_page.content) subjects = attendance_html.xpath('//a[@class="panel-title"]/text()') total_classes = attendance_html.xpath( '//div[@class="attendance-report-wrapper"]/div[2]/table[1]/tbody[1]/tr[1]/td[1]/text()' ) present = attendance_html.xpath( '//div[@class="attendance-report-wrapper"]/div[2]/table[1]/tbody[1]/tr[1]/td[' '2]/text()') absent = attendance_html.xpath( '//div[@class="attendance-report-wrapper"]/div[2]/table[1]/tbody[1]/tr[1]/td[' '3]/text()') sem_subjects = [] sub_array = [] # Formatting Subjects for i in range(len(subjects)): sem_subjects += [i] num = -1 if "SEM VI" in subjects[i]: num = 6 print "Found 6 sem" + subjects[i] elif "SEM V" in subjects[i]: num = 5 elif "SEM IV" in subjects[i]: num = 4 elif "SEM III" in subjects[i]: num = 3 elif "SEM II" in subjects[i]: num = 2 elif "Sem II" in subjects[i]: num = 2 elif "SEM I" in subjects[i]: num = 1 elif "Sem I" in subjects[i]: num = 1 temp = subjects[i].split(':') if len(temp) > 1: try: subjects[i] = temp[2].strip()[:-12] except IndexError: subjects[i] = subjects[i].strip() else: subjects[i] = temp[0].split('-')[0] sub_array.append({'name': subjects[i], 'sem': num}) k = 0 subjects_array = [] for subject in sub_array: try: test = Subjects.objects.get(name=subject['name']) except Exception: test = Subjects(name=subject['name'], sem=subject['sem']) test.save() pass k += 1 subjects_array.append(test) # Printing Details print '-' * 103 print '{0:50}||{1:5}|{2:7}|{3:6}|{4:7}|{5:6}|{6:6}| Set ah? '.format( 'Course', 'Total', 'Present', 'Absent', ' %', 'For 80', 'For 75') print '-' * 103 for i in range(len(sem_subjects)): k = sem_subjects[i] if total_classes[k] != '0': perc = (float(present[k])) / float(total_classes[k]) * 100 else: perc = -1 comment = '' if perc >= 80: comment = '{0:6}|{1:6}| SET!'.format(' SET', ' SET') elif perc == -1: perc = 0 comment = '{0:6}|{1:6}| SET!'.format(' SET', ' SET') elif perc >= 75: classes80 = int(absent[k]) * 5 - int(total_classes[k]) comment = '{0:4d} |{1:6}| uh?'.format(classes80, ' SET') else: classes80 = int(absent[k]) * 5 - int(total_classes[k]) classes75 = int(absent[k]) * 4 - int(total_classes[k]) comment = '{0:4d} |{1:4d} | Dhadel!'.format( classes80, classes75) print u'{0:50}||{1:4d} |{2:5d} |{3:4d} |{4:6.2f}%|{5:15}'.format( subjects[k], int(total_classes[k]), int(present[k]), int(absent[k]), float(perc), comment) try: temp = Attendance.objects.filter( student__lmsId=student.lmsId).get( subject__name=subjects[k]) # print temp temp.present_class = present[k] temp.absent_class = absent[k] temp.total_class = total_classes[k] temp.for75 = int(absent[k]) * 4 - int(total_classes[k]) temp.for80 = int(absent[k]) * 5 - int(total_classes[k]) temp.save() except Exception: temp = Attendance( student=student, subject=subjects_array[k], present_class=present[k], absent_class=absent[k], total_class=total_classes[k], for75=int(absent[k]) * 4 - int(total_classes[k]), for80=int(absent[k]) * 5 - int(total_classes[k])) temp.save() print '-' * 103 student.last_updated = timezone.now() student.cur_sem = max(list_of_sems(student)) print student.name + " --------- " + str(student.cur_sem) student.save() print student.last_updated # Loggin Out page_html = lxml.html.fromstring(response.content) logout = page_html.xpath(r'//a[@title = "Log out"]/@href') response = s.post(logout[0]) if response.url == 'http://lms.bml.edu.in/': status = 'Logout Success!' print status else: status = 'Logout Failed!' print status print '-' * 103 return redirect('/attendance/' + student.lmsId + "/" + str(student.cur_sem) + "/#focus") return HttpResponse("Failure!")
def test_remove_subject(client, numSubjects): with app.app_context(): # insertSubject(subjectCode, term, subjectType, subjectName, components, pillar, cohortnum, totalenrollment, sessionnum): Subjects.remove(50.999) subjects = Subjects.query.all() assert len(subjects) == int(numSubjects)
def get(self): languages = memcache.get("languages") if languages is not None: logging.info("get languages from memcache.") else: q = Languages.query().order(Languages.langName) languages = q.fetch(99) logging.info("Can not get languages from memcache.") if not memcache.add("languages", languages, 10): logging.info("Memcache set failed.") if self.request.get('langCode'): langCode=self.request.get('langCode') self.session['langCode'] = langCode else: langCode = self.session.get('langCode') if not langCode: self.session['langCode'] = 'en' langCode = 'en' langName = 'no language' for language in languages: if language.langCode == langCode: langName = language.langName if self.request.get('StatusFilter'): StatusFilter=self.request.get('StatusFilter') self.session['StatusFilter'] = StatusFilter else: StatusFilter = self.session.get('StatusFilter') if not StatusFilter: self.session['StatusFilter'] = 'all' StatusFilter = 'all' if self.request.get('SubjFilter'): SubjFilter=self.request.get('SubjFilter') self.session['SubjFilter'] = SubjFilter else: SubjFilter = self.session.get('SubjFilter') if not SubjFilter: self.session['SubjFilter'] = 'all' SubjFilter = 'all' count_en = 0 langCode_en = 'en' q = TopicAreas.query(TopicAreas.LangCode == langCode_en) units = q.fetch(999) for unit in units: logging.info('QQQ: count_en: %d' % count_en) count_en = count_en + 1 logging.info('QQQ: Total count_en: %d' % count_en) logging.info('QQQ: langCode: %s' % langCode) count_other_language = 0 q2 = TopicAreas.query(TopicAreas.LangCode == langCode) unitsx = q2.fetch(999) for unit in unitsx: logging.info('QQQ: count_other_language: %d' % count_other_language) count_other_language = count_other_language + 1 logging.info('QQQ: Total count_other_language: %d' % count_other_language) logging.info('GGG: StatusFilter in LearnUnitList: %s' % StatusFilter) if StatusFilter == 'all': if SubjFilter == 'all': q = TopicAreas.query(TopicAreas.LangCode == langCode).order(TopicAreas.Seq, TopicAreas.LearningUnitID) else: q = TopicAreas.query(TopicAreas.LangCode == langCode, TopicAreas.Subject == SubjFilter).order(TopicAreas.Seq, TopicAreas.LearningUnitID) else: if SubjFilter == 'all': q = TopicAreas.query(TopicAreas.LangCode == langCode, TopicAreas.Status == StatusFilter).order(TopicAreas.Seq, TopicAreas.LearningUnitID) else: q = TopicAreas.query(TopicAreas.LangCode == langCode, TopicAreas.Status == StatusFilter, TopicAreas.Subject == SubjFilter).order(TopicAreas.Seq, TopicAreas.LearningUnitID) units = q.fetch(999) q4 = Subjects.query(Subjects.LangCode == langCode, Subjects.Subject == 'Math') subjects = q4.fetch(999) SubjectList = [] if subjects: for subject in subjects: SubjectList.append(subject.Name) else: SubjectList.append('none') logout = None login = None currentuser = users.get_current_user() if currentuser: logout = users.create_logout_url('/topareas' ) else: login = users.create_login_url('/topareas') StatusList = ['Pending Translation', 'Pending Review', 'Published']; # SubjectList = ['Math', 'Science']; self.render_template('LearnTopicAreaList.html', {'units': units, 'count_en': count_en, 'count_other_language': count_other_language, 'StatusList':StatusList, 'SubjectList':SubjectList, 'StatusFilter':StatusFilter, 'SubjFilter':SubjFilter, 'languages':languages, 'langCode':langCode, 'langName':langName, 'currentuser':currentuser, 'login':login, 'logout': logout})