79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
from django.shortcuts import render
|
|
from requests.api import request
|
|
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
|
|
from crm.models import Consumer
|
|
from examtest.models import ExamTest
|
|
from question.models import Question
|
|
|
|
import pickle
|
|
import requests
|
|
from lxml import etree
|
|
# Create your views here.
|
|
|
|
class BasicCount(APIView):
|
|
'''
|
|
获取基本统计数据
|
|
'''
|
|
def get(self, request, format=None):
|
|
ret={}
|
|
ret['consumer1_count'] = Consumer.objects.filter(is_delete=False).count()
|
|
ret['consumer2_count'] = Consumer.objects.filter(is_delete=False).exclude(create_admin=None).count()
|
|
ret['test_count'] = ExamTest.objects.filter(is_delete=False).count()
|
|
ret['question_count'] = Question.objects.filter(is_delete=False).count()
|
|
return Response(ret)
|
|
|
|
class Quota(APIView):
|
|
'''
|
|
获取考试名额
|
|
'''
|
|
def get(self, request, format=None):
|
|
with open('quota.dat','rb') as f:
|
|
data = pickle.load(f)
|
|
return Response(data)
|
|
|
|
class SearchCandidates(APIView):
|
|
perms_map = [
|
|
{'post': 'candidate_search'}]
|
|
def post(self, request, *args, **kwargs):
|
|
names = request.data['names']
|
|
numbers = request.data['numbers']
|
|
names_ = names.split('\n')
|
|
numbers_ = numbers.split('\n')
|
|
names_l = [i.replace(' ', '') for i in names_ if i!='']
|
|
numbers_l = [i.replace(' ', '') for i in numbers_ if i!='']
|
|
candidates = []
|
|
if len(names_l)>60:
|
|
return Response({'error':'单次批量查询不允许超过60'})
|
|
if len(names_l) == len(numbers_l):
|
|
for i in range(len(names_l)):
|
|
payload = {'IndexModel[name]': names_l[i], 'IndexModel[identityNumber]': numbers_l[i], 'IndexModel[certNumber]':'', 'IndexModel[candidateNumber]':''}
|
|
try:
|
|
r = requests.post('https://fushe.chinansc.cn/open/candidate-list',data=payload, timeout=5)
|
|
r.raise_for_status()
|
|
r.close()
|
|
html = etree.HTML(r.text)
|
|
results = html.xpath("//table[@class='cert-table']")
|
|
try:
|
|
for i in results:
|
|
url = i.xpath('tr/td/a/@href')
|
|
name = i.xpath('tr[1]/td[1]/text()')
|
|
ID_number = i.xpath('tr[1]/td[2]/text()')
|
|
report_number = i.xpath('tr[2]/td[1]/text()')
|
|
issue_date = i.xpath('tr[2]/td[2]/text()')
|
|
jsondata = {
|
|
'name':name[0],
|
|
'ID_number':ID_number[0],
|
|
'report_number':report_number[0],
|
|
'issue_date':issue_date[0],
|
|
'url':'https://fushe.chinansc.cn'+ url[0]
|
|
}
|
|
candidates.append(jsondata)
|
|
except:
|
|
pass
|
|
except:
|
|
pass
|
|
return Response(candidates)
|
|
else:
|
|
return Response({'error':'姓名列和身份证列不匹配!'}) |