def debuging(): objid = request.args.get('objectid', "2XaxJgvRj6Udone") ischool = myschool.myschool(objid) if request.method == 'GET': rtdata = {'respon': 'failure'} testtype = request.args.get('testtype') action = request.args.get('action') if testtype: reqer = appmsg_sets.get(testtype) or appmsg_sets2.get(testtype) if reqer: rtdata = { 'reqtype': testtype, 'requrl': reqer[0], 'reqkeys': ','.join(reqer[1]) } elif action == 'alltypes': alltypes = list(appmsg_sets.keys()) alltypes.extend(appmsg_sets2.keys()) types = ','.join(alltypes) rtdata = {'respon': 'success', 'types': types} elif action == 'listusers': reqd = dict() reqd['usertype'] = request.args.get('usertype') reqd['departid'] = request.args.get('departid') reqd['level'] = request.args.get('level') reqd['page'] = request.args.get('page', 1) reqd['pageSize'] = request.args.get('page_limit', 20) realurl = ischool.handle_msger(reqs=reqd) with capp_smsg('get_users') as qer: wx_rtdata = qer.get(urlpath=realurl) return json.dumps(wx_rtdata) elif action == 'get_teacher': uid = request.args.get('userid') teacher = worktbl.d_get('teachers', uid) if teacher: rtdata['data'] = teacher else: rtdata['respon'] = 'failure' else: return send_file('statics/htmls/debug.html', mimetype='text/html') return json.dumps(rtdata) requrl = request.args.get('requrl') reqname = request.args.get('reqname') wx_rtdata = None reqd = request.form.to_dict() or {} with capp_smsg(reqname, postdata=reqd) as qer: if reqname.startswith('post'): reqbox = dict() reqbox[appmsg_sets2[reqname][2]] = reqd realurl = ischool.handle_msger(postdata=reqbox) wx_rtdata = qer.post(posturl=realurl) else: realurl = ischool.handle_msger(reqs=reqd) #realurl = realurl.encode('utf8') if isinstance(realurl, unicode) else realurl.decode('gbk').encode('utf8') wx_rtdata = qer.get(urlpath=realurl) return json.dumps(wx_rtdata or {'code': 0, 'respon': 'failure'})
def get_user(self, userid, ck_admin=False): reqd = {'userid': userid} userdatas = None with capp_smsg('get_userinfo') as qer: realurl = self.handle_msger(reqs=reqd) userdatas = qer.get(urlpath=realurl) if ck_admin and userdatas['code'] == 0: with capp_smsg('get_admininfo') as qer: realurl = self.handle_msger(reqs=reqd) admininfo = qer.get(urlpath=realurl) userdatas['admininfo'] = admininfo return userdatas
def cls_tchr_course(self, termid): # collect all tearchers # collect all class, class's course # export: c_c_t: {classid: {classname, courseid, teacherid, teachername}} # c_c_t: {classid: {classname, courseid: {teacherid, teachername}, ...}} # TODO: use time cacher teachers = {} reqd = { 'usertype': 2, 'page': 0, 'pageSize': 100, 'departid': self.mainid, 'level': 1 } with capp_smsg('get_users') as qer: for _ in xrange(1, 6): reqd['page'] = _ realurl = self.handle_msger(reqs=reqd) srt = qer.get(urlpath=realurl) if not srt or srt['code'] != 0: break #teachers.extend(srt['data']['dataList']) for t in srt['data']['dataList']: teachers[t['userid']] = t['name'] if len(teachers) == 0: print("no teacher founld!") return None print(teachers) classes = self._list_class() print("classes count: %s" % len(classes)) c_c_t = {} for cc in classes: clsid = cc['departid'] c_c_t[clsid] = dict(classname=cc['departname']) #c_c_t[clsid] = {} reqd = {'depart_id': clsid, 'term_id': termid} with capp_smsg('get_selectSheSchedule') as qer: realurl = self.handle_msger(reqs=reqd) srt = qer.get(urlpath=realurl) if srt['code'] != 0 or 'data' not in srt: continue for cinfo in srt['data']: if cinfo['teacherid']: # counld be "" if cinfo['course_id'] not in c_c_t[clsid]: c_c_t[clsid][cinfo['course_id']] = dict( teacherid=cinfo['teacherid'], teachername=teachers[cinfo['teacherid']]) time.sleep(0.1) return c_c_t
def col_class_students(self, classid, page=1, page_limit=100): reqd = {'usertype': 1, 'departid': classid, 'level': 6, 'page': page, 'pageSize': page_limit} realurl = self.handle_msger(reqs=reqd) wx_rtdata = None with capp_smsg('get_users') as qer: wx_rtdata = qer.get(urlpath=realurl) return wx_rtdata
def schoolinfo(self): realurl = self.handle_msger() with capp_smsg('get_schoolinfo') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: return wx_rtdata['data'] return wx_rtdata
def col_dep_tearchers(self, dpid, level, page=1, page_limit=100, takeall=False): # 获取某个部门的老师 reqd = { 'usertype': 2, 'departid': dpid, 'level': level, 'page': page, 'pageSize': page_limit } counts = 100 if takeall else 2 teachers = [] wx_rtdata = None total = 0 for x in range(1, counts): reqd['page'] = x realurl = self.handle_msger(reqs=reqd) with capp_smsg('get_users') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: teachers.extend(wx_rtdata['data']['dataList']) total += len(wx_rtdata['data']['dataList']) if len(wx_rtdata['data']['dataList']) < page_limit: loger.info("users with total: %s" % total) break else: break time.sleep(0.2) return teachers
def get_teacher_grades(self, userid, termid): # 学校/上级单位/合作伙伴用 # 通过课表功能获取教师所教学的学科在各个年级的分布: 老师A-三年级语文+二年级体育 # 输出CCT(Course-Class mapping of Teacher): {courseid1: [grade_dict1, grade_dict2, ...], courseid2: ...} reqd = {'teacherid': userid, 'term_id': termid} with capp_smsg('get_teacherscheduel') as qer: realurl = self.handle_msger(reqs=reqd) schedueldata = qer.get(urlpath=realurl) if int(schedueldata['code']) == 0: courselist = {} for _ in schedueldata['data']: the_course = None for cid, course in courselist.iteritems(): if _['course_id'] == cid: the_course = course break if the_course is None: #the_course = {'course_id': _['course_id'], 'grades': []} the_course = [] courselist[_['course_id']] = the_course g = self._class_2_grade(_['classid']) if not g or g['departid'] in the_course: # elif g['departid'] in [g['departid'] for g in the_course['grades']] continue the_course.append(g['departid']) return courselist
def col_dep_tearchers(self, dpid, level, page=1, page_limit=100, takeall=False): # 获取某个部门的老师 reqd = { 'usertype': 2, 'departid': dpid, 'level': level, 'page': page, 'pageSize': page_limit } counts = 100 if takeall else 1 teachers = [] wx_rtdata = None for x in xrange(counts): reqd['page'] = x realurl = self.handle_msger(reqs=reqd) with capp_smsg('get_users') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: teachers.extend(wx_rtdata['data']['dataList']) if wx_rtdata['data']['pageInfo']['page'] == wx_rtdata['data'][ 'pageInfo']['total']: break time.sleep(0.2) if takeall: return teachers return wx_rtdata
def __simple_geter(self, reqname, reqid=None): realurl = self.handle_msger() wx_rtdata = None with capp_smsg(reqname) as qer: wx_rtdata = qer.get(urlpath=realurl, force=True) if reqid and wx_rtdata['code'] == 0: return wx_rtdata['data']['dataList'].get(reqid) return wx_rtdata
def name(self): realurl = self.handle_msger() with capp_smsg('get_schoolinfo') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: n = wx_rtdata['data']['name'] else: n = None return n
def get_teacher_inidata(self, userid): # 获取教师信息及其管理班级 reqd = {'userid': userid} inidata = {} with capp_smsg('get_userinfo') as qer: realurl = self.handle_msger(reqs=reqd) userdatas = qer.get(urlpath=realurl) if int(userdatas['code']) == 0: inidata['code'] = 0 inidata['msg'] = userdatas['msg'] inidata['datetime'] = userdatas['datetime'] inidata['user_info'] = userdatas['data'] else: return userdatas with capp_smsg('get_teacherclass') as qer: realurl = self.handle_msger(reqs=reqd) classesdata = qer.get(urlpath=realurl) if int(classesdata['code']) == 0: inidata['user_classes'] = classesdata['data'] return inidata
def col_departments(self, utype=1): # base on stduent reqd = {'usertype': utype} realurl = self.handle_msger(reqs=reqd) with capp_smsg('get_dpinfos') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: return wx_rtdata['data'] else: loger.warning("take department failure[%s]" % wx_rtdata['msg']) return None
def check_dp(self, dpid, exists=False): reqd = {'departid': dpid} realurl = self.handle_msger(reqs=reqd) with capp_smsg('get_dptinfobyId') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: if exists: return True else: return wx_rtdata['data'] loger.warning("get department wrong!") return wx_rtdata
def col_teacher_class(self, userid, ftype=0): # class that teach # 3:teach; 2:classteacher; 1-classmanager reqd = {'userid': userid} realurl = self.handle_msger(reqs=reqd) wx_rtdata = None with capp_smsg('get_teacherclass') as qer: wx_rtdata = qer.get(urlpath=realurl) if wx_rtdata['code'] == 0: if ftype and 0<ftype<4: return dict_search2(wx_rtdata['data'], 'type', str(ftype)) else: return wx_rtdata['data'] return wx_rtdata
def get_teacher_cct(self, teacherid, termid, courseid): # 学校/上级单位/合作伙伴用 # 获取特定course的CCT映射 [course-class of <teacher>] (get_teacher_grades的部分) # return: {classid: {classdata}, ...} reqd = {'teacherid': teacherid, 'term_id': termid} with capp_smsg('get_teacherscheduel') as qer: realurl = self.handle_msger(reqs=reqd) schedueldata = qer.get(urlpath=realurl) if int(schedueldata['code']) == 0: clss = [] for _ in schedueldata['data']: if _['course_id'] == courseid: clss.append(_['classid']) return self._getclass_s(clss, take='departname')