def retrieve_rankings(request, ranking_id=""): """ 获取所有信息 :return: json """ if ranking_id == "": batches = BatchOfTable.objects.filter(table_type=1).order_by("id") elif "search_by_college" in request.GET: # 此时的ranking_id为college id relations = RankingAndCollegeRelation.objects.filter( college_id=int(ranking_id)) batches = [] no_repeat = {} for r in relations: if r.ranking.batch.id not in no_repeat: no_repeat[r.ranking.batch.id] = 1 batches.append(r.ranking.batch) else: _ranking = Table.get_table_by_id(int(ranking_id)) batches = BatchOfTable.objects.filter(table=_ranking).order_by("id") page = request.GET.get("page", 1) size = request.GET.get("size", 200) content, num_pages = common.with_paginator(batches, int(page), int(size)) return_dict = format_rankings(content, int(page), int(size)) # 格式化院校信息 return_dict["num_pages"] = num_pages return JsonResponse(return_dict)
def get_all_colleges_with_paginator(page, size): """ 返回可以分页的所有院校信息 :param page: 第几页 :param size: 每页多少条 :return: """ colleges = College.objects.all() return common.with_paginator(colleges, page, size)
def retrieve_ranking(request): """ 获取所有信息 :return: json """ _ranking = Table.get_tables_by_type_id(1) # 1为榜单 page = request.GET.get("page", 1) size = request.GET.get("size", 200) content, num_pages = common.with_paginator(_ranking.order_by("id"), int(page), int(size)) return_dict = format_ranking(content, int(page), int(size)) # 格式化院校信息 return_dict["num_pages"] = num_pages return JsonResponse(return_dict)
def retrieve_colleges(request, param="", digit=""): """ 获取所有院校信息 :return: json """ colleges = College.get_all_colleges() # 全部院校 bool_switch = { "": colleges, "211": colleges.filter(is_211=True), # 参数为211,则筛选出211院校 "985": colleges.filter(is_985=True), # 参数为985,则筛选出985院校 "985p": colleges.filter(is_985_platform=True), # 参数为985p,则筛选出985平台院校 "vice_ministry": colleges.filter(is_vice_ministry=True), # 参数为...,则筛选出副部级院校 "double_first": colleges.filter(is_double_first_class=True), # 参数为...,则筛选出双一流院校 "cancelled": colleges.filter(is_cancelled=True) } # 参数为...,则筛选出已撤销院校 try: if digit == "": colleges = bool_switch[param] # 选择 else: area = "" if param == "area": area = Area.objects.get(id=int(digit)).name_cn foreign_switch = { "department": colleges.filter(department_id=int(digit)), "level": colleges.filter(edu_level_id=int(digit)), # 参数为211,则筛选出211院校 "class": colleges.filter(edu_class_id=int(digit)), # 参数为985,则筛选出985院校 "nation": colleges.filter( nation_code__startswith=str(digit)), # 参数为985p,则筛选出985平台院校 "area": colleges.filter(area=area) } colleges = foreign_switch[param] # 选择 except KeyError: logger.warning("Error request: " + request.path) colleges = [] page = request.GET.get("page", 1) size = request.GET.get("size", 200) content, num_pages = common.with_paginator(colleges.order_by("id"), int(page), int(size)) return_dict = format_colleges(content, int(page), int(size)) # 格式化院校信息 return_dict["num_pages"] = num_pages return JsonResponse(return_dict)
def retrieve_news(request, param="", digit=""): """ 获取所有院校信息 :return: json """ _news = get_all_news() try: if digit != "": if param == "tag": _news = NewsTag.objects.get(id=int(digit)).news_set.all() elif param == "college": _news = College.objects.get(id=int(digit)).news_set.all() except KeyError: logger.warning("Error request: " + request.path) _news = [] page = request.GET.get("page", 1) size = request.GET.get("size", 200) content, num_pages = common.with_paginator(_news.order_by("id"), int(page), int(size)) return_dict = format_news(content, int(page), int(size)) # 格式化院校信息 return_dict["num_pages"] = num_pages return HttpResponse(json.dumps(return_dict))