Exemple #1
0
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'})
Exemple #2
0
 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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
 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
Exemple #7
0
 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
Exemple #8
0
 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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
0
 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
Exemple #12
0
 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
Exemple #13
0
 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
Exemple #14
0
 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
Exemple #15
0
 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')