Esempio n. 1
0
 def get(self, request, stu, user):
     user_filter = DakaUser.objects.filter(user=user.student_id, enable=True)
     if user_filter.exists():
         user_filter.update(enable=False)
         return get_json_response(True)
     else:
         return get_json_response('找不到用户!', 3002)
Esempio n. 2
0
 def get(self, request, stu, user):
     data = sc_request(
         'POST', user.student_id,
         'https://dekt.hfut.edu.cn/scReports/api/wx/activedetail/' +
         request.GET['pid'])
     if data['code'] != '200':
         return get_json_response("未知错误:%s" % data['code'], 3204)
     else:
         return get_json_response({
             'name':
             data['data']['name'],
             'module':
             data['data']['module'],
             'form':
             data['data']['form'],
             'level':
             data['data']['activityLevel'],
             'category':
             data['data']['category'],
             'tag':
             data['data']['label'],
             'campus':
             data['data']['campus'],
             'createtime':
             data['data']['ct'],
             'applystart':
             data['data']['st'],
             'applyend':
             data['data']['et'],
             'projectstart':
             data['data']['lectureStartTime'],
             'projectend':
             data['data']['lectureEndTime'],
             'location':
             data['data']['theVenue'],
             'sponsor':
             data['data']['sponsor'],
             'organizer':
             data['data']['organizer'],
             'teacher':
             data['data']['teacher'],
             'phone':
             data['data']['phone'],
             'goal':
             '德' + data['data']['virtue'] + '% 智' + data['data']['wisdom'] +
             '% 体' + data['data']['body'] + '% 美' + data['data']['beauty'] +
             '% 劳' + data['data']['work'] + '%',
             'applyway': ('团队报名' if data['data']['applyWay'] else '个人报名'),
             'applynum':
             (data['data']['bmTeamNum']
              if data['data']['applyWay'] else data['data']['bmNum']),
             'fullnum': (data['data']['teamNum'] if data['data']['applyWay']
                         else data['data']['peopleNum']),
             'teamsize': (data['data']['teamSize']
                          if data['data']['applyWay'] else None),
             'content':
             data['data']['content']
         })
Esempio n. 3
0
 def get(self, request, stu, user):
     data = sc_request(
         'POST', user.student_id,
         'https://dekt.hfut.edu.cn/scReports/api/wx/activedetail/cancellRegistration/'
         + request.GET['id'])
     if data['data']:
         return get_json_response("取消报名成功")
     else:
         return get_json_response("操作失败", 3209)
Esempio n. 4
0
 def get(self, request):
     data = requests.get(
         'https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/password/getContactInfo?username=%s'
         % request.GET['id']).json()
     if data['code'] == 1:
         if data['data']['email'] is None or data['data']['phone'] is None:
             return get_json_response('预留信息无效,请尝试使用初始密码(身份证后6位)登录!', 3003)
         return get_json_response(data['data'])
     else:
         return get_json_response(data['msg'])
Esempio n. 5
0
 def get(self, request, stu, user):
     try:
         balance = stu.request(
             '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/thirdPartyApi/schoolcard/balance?sno='
             + user.student_id).json()['data']
         return get_json_response({
             'balance': balance,
         })
     except Timeout:
         return get_json_response({'balance': '维护中'})
Esempio n. 6
0
 def get(self, request, stu, user):
     data = sc_request(
         'GET', user.student_id,
         'https://dekt.hfut.edu.cn/scReports/api/wx/report/getUserScore')
     if data['code'] == '200':
         userinfo = sc_request(
             'GET', user.student_id,
             'https://dekt.hfut.edu.cn/scReports/api/wx/uc/userInfo'
         )['data']
         return get_json_response({
             'class':
             userinfo['deptAndClassesName'],
             'data': [
                 {
                     'title': '思政学习',
                     'score': data['data']['szxx']
                 },
                 {
                     'title': '科技创新',
                     'score': data['data']['kjcx']
                 },
                 {
                     'title': '体育健身',
                     'score': data['data']['tyjs']
                 },
                 {
                     'title': '公益服务',
                     'score': data['data']['gyfw']
                 },
                 {
                     'title': '社会实践',
                     'score': data['data']['shsj']
                 },
                 {
                     'title': '创业活动',
                     'score': data['data']['cyhd']
                 },
                 {
                     'title': '文艺活动',
                     'score': data['data']['wyhd']
                 },
                 {
                     'title': '社团活动',
                     'score': data['data']['sthd']
                 },
                 {
                     'title': '技能项目',
                     'score': data['data']['jnxm']
                 },
             ],
             'hour':
             userinfo['serviceHour']
         })
     else:
         return get_json_response("未知错误", 3203)
Esempio n. 7
0
 def get(self, request, stu, user):
     data = stu.request(
         url='https://one.hfut.edu.cn/api/center/manage/user/update-mypwd',
         method='PUT',
         data=json.dumps({
             'oldPassword': request.GET['old'],
             'newPassword': request.GET['new']
         })).json()
     if data['code'] == 1:
         return get_json_response('修改成功!')
     else:
         return get_json_response(data['msg'], 3005)
Esempio n. 8
0
 def get(self, request, stu, user):
     data = stu.request(
         'http://hfut-test.heppy.wang:7002/accountDoLoss.action',
         method='POST',
         params={
             'account': user.card_id,
             'passwd': request.GET['password']
         }).text
     data = BeautifulSoup(data, 'lxml').select('.biaotou')[0].text.strip()
     if '操作成功' in data:
         return get_json_response(data)
     else:
         return get_json_response(data, 3001)
Esempio n. 9
0
 def get(self, request, stu, user):
     data = sc_request('GET', request.GET['id'], 'https://dekt.hfut.edu.cn/scReports/api/wx/report/getUserScore')
     if data['code'] == '200':
         userinfo = sc_request('GET', request.GET['id'], 'https://dekt.hfut.edu.cn/scReports/api/wx/uc/userInfo')['data']
         return get_json_response({
             'classname': userinfo['deptAndClassesName'],
             'hour': userinfo['serviceHour']
         })
     else:
         return get_json_response({
             'classname': '未知',
             'hour': '未知'
         })
Esempio n. 10
0
 def get(self, request):
     data = NoticeModel.objects.filter(page=request.GET['page'],
                                       show=True).order_by('-time').all()
     if len(data):
         response = []
         for dat in data:
             response.append({'text': dat.text, 'theme': dat.theme})
         return get_json_response({
             'theme': data[0].theme,
             'notices': response
         })
     else:
         return get_json_response({'theme': None, 'notices': []})
Esempio n. 11
0
 def get(self, request):
     try:
         mid = requests.post(
             url='https://userapi.qiekj.com/goods/scan/v2',
             params={
                 'NQT': request.GET['NQT']
             },
             headers={
                 'User-Agent':
                 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0 '
             }).json()
         if mid['code'] == 4000:
             return get_json_response({'status': '设备可能已被拆除但仍未更新'})
         mid = mid['data']['id']
         if len(mid) >= 15:
             data = requests.post(
                 'https://userapi.qiekj.com/machine/detail',
                 params={
                     'machineId': mid
                 },
                 headers={
                     'User-Agent':
                     'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 '
                     'Firefox/84.0 '
                 }).json()['data']
             if data['status'] == 1:
                 status = '空闲'
             elif data['status'] == 2:
                 status = '使用中,剩余%s秒' % data['remainTime']
             else:
                 status = '未知(%s)' % data['status']
         else:
             data = requests.post(
                 'https://userapi.qiekj.com/goods/normal/details',
                 params={
                     'goodsId': mid
                 },
                 headers={
                     'User-Agent':
                     'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 '
                     'Firefox/84.0 '
                 }).json()['data']
             if data['deviceErrorCode'] is None:
                 status = '空闲'
             elif data['deviceErrorCode'] == 2:
                 status = '使用中'
             else:
                 status = data['deviceErrorMsg']
         return get_json_response({'status': status})
     except:
         return get_json_response({'status': '未知'})
Esempio n. 12
0
    def get(self, request):

        data = requests.get(
            url='https://api.weixin.qq.com/sns/jscode2session',
            params={
                'appid': 'wxa0cf6d472206fa8c',
                'secret': 'b08be86e5f5934f4d8e6356806f779a1',
                'js_code': request.GET['code'],
                'grant_type': 'authorization_code'
            }
        ).json()
        '''
        data = {
            'errcode': 0,
            'openid': 'testopenid' + request.GET['code'],
            'unionid': 'testunionid' + request.GET['code'],
            'errmsg': None
        }
        '''
        print(data)
        if ('errcode' not in data) or (data['errcode'] == 0):
            token = uuid.uuid4()
            openid = data['openid']
            session_key = data['session_key']
            guest, success = Guest.objects.update_or_create(
                defaults={
                    'nick_name': '',
                    'city': '',
                    'avatar': ''
                },
                openid=openid,
            )
            LoginState.objects.create(
                user_id=guest.pk,
                student_id=None,
                session_key=session_key,
                type=2,
                token=token,
                vpn_ticket="",
                at_token="",
                available=True
            )
            return get_json_response({
                'type': 'guest',
                'token': token
            })
        else:
            return get_json_response({
                'msg': data['errmsg']
            }, 3001)
Esempio n. 13
0
 def get(self, request, stu, user):
     data = stu.request(
         'https://one.hfut.edu.cn/api/center/manage/user/update-mypwd',
         json={
             'newPassword': request.GET['new'],
             'oldPassword': request.GET['old'],
         }).json()
     if data['code'] == 1:
         return get_json_response({'result': True})
     else:
         return get_json_response(
             {
                 'result': False,
                 'message': data['msg'],
             }, 3001)
Esempio n. 14
0
 def get(self, request):
     data = requests.get(
         url=
         'https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/password/changePwd',
         cookies={
             TICKET_NAME: request.GET['vpn_ticket']
         },
         params={
             'ticket': request.GET['ticket'],
             'password': request.GET['password']
         }).json()
     if data['code'] == 1:
         return get_json_response('修改成功!')
     else:
         return get_json_response(data['msg'], 3004)
Esempio n. 15
0
 def get(self, request, stu, user):
     data = stu.request(
         'http://jxglstu.hfut.edu.cn/eams5-student/for-std/course-table/get-data?bizTypeId=2&semesterId=%s&dataId=%s'
         % (request.GET['sid'], user.eduadmin_id)).json()
     lessons = []
     for lesson in data['lessons']:
         schedules = []
         if lesson['scheduleText']['dateTimePlaceText']['text']:
             schedule_texts = lesson['scheduleText']['dateTimePlaceText'][
                 'text'].split('; \n')
             schedules = [analyze(text) for text in schedule_texts]
         teachers = [{
             'name':
             teacher['teacher']['person']['nameZh'],
             'title':
             teacher['teacher']['title']['name']
             if teacher['teacher']['title'] else None
         } for teacher in lesson['teacherAssignmentList']]
         lessons.append({
             'code': lesson['code'],
             'name': lesson['course']['nameZh'],
             'schedules': schedules,
             'classes': lesson['nameZh'],
             'credits': lesson['course']['credits'],
             'type': lesson['courseType']['name'],
             'teachers': teachers
         })
     return get_json_response({
         'layout': data['timeTableLayoutId'],
         'last_week': data['weekIndices'][-1],
         'current_week': data['currentWeek'],
         'lessons': lessons
     })
Esempio n. 16
0
 def get(self, request, stu, user):
     data = json.loads(request.body)
     filters = data['filters']
     building = ''
     if 'name' in filters:
         filters['name__contains'] = filters['name']
         filters.pop('name')
     if 'classname' in filters:
         filters['classname__contains'] = filters['classname']
         filters.pop('classname')
     if 'teacher' in filters:
         filters['teacher__contains'] = filters['teacher']
         filters.pop('teacher')
     if 'building' in filters:
         building = filters['building']
         filters.pop('building')
     query = Paginator(Lesson.objects.filter(**filters), 25)
     data = query.page(data['page']).object_list.values()
     response = []
     if building:
         for l in data:
             for c in l['info']:
                 if building in c['room']:
                     response.append(l)
                     break
     else:
         response = data
     return get_json_response({
         'last_page': query.num_pages,
         'data': list(response)
     })
Esempio n. 17
0
 def get(self, request, stu, user):
     stu.request(
         '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/reader/hwthau2.php'
     )
     data = stu.request(
         '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/reader/book_lst.php'
     ).text
     soup = BeautifulSoup(data, 'lxml').select('.table_line > tr')
     response = []
     first = True
     for tr in soup:
         if first:
             first = False
             continue
         td = tr.select('td')
         print(td[1])
         response.append({
             'name':
             td[1].text,
             'starttime':
             td[2].text,
             'endtime':
             td[3].text,
             'marc':
             td[1].select('a')[0]['href'].split('marc_no=')[1]
         })
     return get_json_response(response)
Esempio n. 18
0
 def get(self, request, stu, user):
     data = stu.request(
         url=
         'http://jxglstu.hfut.edu.cn/eams5-student/for-std/course-table/info/%s'
         % user.eduadmin_id,
         headers={
             'Cache-Control': 'no-cache',
             'Pragma': 'no-cache'
         }).text
     s = BeautifulSoup(data, 'lxml')
     soup = s.select('#allSemesters > option')
     response = []
     default = 0
     for option in soup:
         if option['value']:
             response.append({
                 'label': option.text,
                 'value': option['value'],
                 'default': 'selected' in option.attrs
             })
             if 'selected' in option.attrs:
                 default = option['value']
     details = json.loads(
         re.search(r'JSON.parse\(([\s\S]*?)\);',
                   str(s.html))[1].replace('\'', '').replace('\\"', '"'))
     return get_json_response({
         'default': default,
         'semesters': response,
         'details': {item['id']: item
                     for item in details}
     })
Esempio n. 19
0
 def post(self, request, stu, user):
     json_body = json.loads(request.body)
     filters = json_body['filters']
     data = stu.request(
         '/http-8080/77726476706e69737468656265737421a2a611d2736526022a5ac7f9/opac/ajax_search_adv.php',
         method='POST',
         json={
             "searchWords": [
                 {
                     "fieldList": [
                         {
                             "fieldCode": "any",
                             "fieldValue": json_body['word']
                         }
                     ]
                 }
             ],
             "filters": filters,
             "limiter": [],
             "sortField": "relevance",
             "sortType": "desc",
             "pageSize": 20,
             "pageCount": int(json_body['page']),
             "locale": "zh_CN",
             "first": True
         }).json()
     return get_json_response(data)
Esempio n. 20
0
 def get(self, request, guest):
     mgr = Manager()
     data = mgr.request(
         url='/bizType/2/adminclass-course-table/semester/154/search',
         params={
             'nameZhLike': request.GET['name'],
             'grades': request.GET['grade'],
             'department': request.GET['deptid'],
             'queryPage__': '%s,100' % request.GET['page']
         },
         headers={
             'Accept': 'application/json'
         }).json()
     return get_json_response({
         'classes': [{
             'name': item['nameZh'],
             'code': item['code'],
             'id': item['id'],
             'grade': item['grade'],
             'department': item['mngtDepart']['abbrZh']
         } for item in data['data']],
         'sum':
         data['_page_']['totalRows'],
         'pages':
         data['_page_']['totalPages']
     })
Esempio n. 21
0
 def get(self, request):
     query = Building.objects.filter(
         campus=request.GET['campus']).order_by('sort')
     data = []
     for building in query:
         data.append({'name': building.name})
     return get_json_response(data)
Esempio n. 22
0
 def get(self, request, stu, user):
     borrow_books = stu.request(
         '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getBorrowNum'
     ).json()['data']
     return get_json_response({
         'borrow_books': borrow_books,
     })
Esempio n. 23
0
 def get(self, request, stu, user):
     info = stu.userinfo
     balance = stu.request(
         '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/thirdPartyApi/schoolcard/balance?sno='
         + info.id).json()['data']
     borrow_books = stu.request(
         '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getBorrowNum'
     ).json()['data']
     subscribe_books = stu.request(
         '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/operation/library/getSubscribeNum'
     ).json()['data']
     emails = stu.request(
         '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/center/user/getBindMailList'
     ).json()['data']
     unread_email = 0
     for email in emails:
         unread_email += stu.request(
             '/https/77726476706e69737468656265737421fff944d22f367d44300d8db9d6562d/api/msg/mailBusiness/getUnreadMsg?mail='
             + email['mail']).json()['data']
     return get_json_response({
         'balance': balance,
         'borrow_books': borrow_books,
         'subscribe_books': subscribe_books,
         'unread_email': unread_email
     })
Esempio n. 24
0
 def get(self, request, stu, user):
     data = stu.request('http://jxglstu.hfut.edu.cn/eams5-student/my/account').text
     soup = BeautifulSoup(data, 'lxml')
     password = soup.find(id='plainPassword')['value']
     return get_json_response({
         'password': password
     })
Esempio n. 25
0
 def get(self, request, guest):
     mgr = Manager()
     resp = mgr.request('/bizType/2/adminclass-course-table/semester/%s/course-table/%s' % (request.GET['sid'], request.GET['cid']))
     soup = BeautifulSoup(resp.content, 'lxml').select_one('#lessons > tbody').findAll('tr')
     lessons = []
     for tr in soup:
         data = [td.text.strip() for td in tr.findAll('td')]
         print([item.strip() for item in data[8].split(';')])
         lessons.append({
             'code': data[3],
             'name': data[2],
             'schedules': [analyze(item.strip()) for item in data[8].split(';')],
             'classes': data[4],
             'credits': None,
             'type': data[5],
             'teachers': [{
                 'name': re.sub(r'\s{2,}|\n+', '', item),
                 'title': None
             } for item in data[7].split(',')]
         })
     return get_json_response({
         'layout': int(re.search(LAYOUT_ID_REG, resp.text)[1]),
         'last_week': None,
         'current_week': None,
         'lessons': lessons
     })
Esempio n. 26
0
 def get(self, request, stu, user):
     data = stu.request(
         '/http-8080/77726476706e69737468656265737421ffe7409f69386e456a468ca88d1b203b/opac/item.php?marc_no='
         + request.GET['marc']).text
     soup = BeautifulSoup(data, 'lxml')
     information = []
     content = ''
     for dl in soup.select('.booklist'):
         title = dl.select('dt')[0].text
         info = dl.select('dd')[0].text
         if title == '电子资源:' or title == '' or title == '豆瓣简介:':
             continue
         if title == '提要文摘附注:':
             content = info
         else:
             information.append({'title': title, 'value': info})
     available = []
     for tr in soup.select('.whitetext'):
         td = tr.select('td')
         if len(td) < 4:
             continue
         available.append({
             'bookno': td[0].text,
             'barcode': td[1].text,
             'place': td[3].text.strip(),
             'status': td[4].text
         })
     return get_json_response({
         'info': information,
         'content': content,
         'available': available
     })
Esempio n. 27
0
 def get(self, request):
     session = requests.session()
     captcha = session.get('https://webvpn.hfut.edu.cn/http/77726476706e69737468656265737421f3f652d22f367d44300d8db9d6562d/cas/vercode?randomStr=HFUTGo').content
     return get_json_response({
         'captcha': 'data:image/jpeg;base64,%s' % base64.b64encode(captcha).decode(),
         'vpn_ticket': session.cookies[TICKET_NAME]
     })
Esempio n. 28
0
 def get(self, request, stu, user):
     data = stu.request(
         '/http-8080/77726476706e69737468656265737421e0f4408e237e60566b1cc7a99c406d3657/code.jsp'
     ).content
     return get_json_response({
         'image':
         'data:image/jpeg;base64,' + base64.b64encode(data).decode()
     })
Esempio n. 29
0
 def get(self, request, stu, user):
     data = stu.request(
         method='POST',
         url='http://172.31.241.31:9999/ecc/api/booking/bookinginfo',
         data=
         'page=%s&limit=20&status=%s&buildingId=%s&campusId=%s&date=%s&lessonNo=%s&personNum=%s&teachingRoomId=%s'
         % (request.GET['page'], request.GET['status'],
            request.GET['buildingId'], request.GET['campusId'],
            request.GET['date'], request.GET['lessonNo'],
            request.GET['personNum'], request.GET['roomId']),
         headers={
             'Content-Type': 'application/x-www-form-urlencoded'
         }).json()
     if data['code'] == '0':
         return get_json_response(data)
     else:
         return get_json_response('查询出错', 3501)
Esempio n. 30
0
 def get(self, request, stu, user):
     data = stu.request(
         'https://one.hfut.edu.cn/api/operation/newsDetails/getPageData?type=notification&size=%s&current=%s'
         % (request.GET['size'], request.GET['page'])).json()
     response = []
     for item in data['data']['records']:
         response.append({'url': item['url'], 'title': item['title']})
     return get_json_response(response)