Example #1
0
    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')  
Example #2
0
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
Example #3
0
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()
Example #4
0
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)
Example #5
0
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)
Example #6
0
 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')
Example #7
0
    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})
Example #8
0
    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,
            },
        )
Example #9
0
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)
Example #10
0
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  
Example #11
0
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'))
Example #12
0
    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,
            },
        )
Example #13
0
    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})
Example #14
0
    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})
Example #15
0
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)
Example #16
0
def getTable():
    from models import Subjects
    result = Subjects.export(app)
    return result
Example #17
0
    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})
Example #18
0
    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,
            },
        )
Example #19
0
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']})	
Example #20
0
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!")
Example #21
0
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)
Example #22
0
    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})