Пример #1
0
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)
Пример #2
0
def get_all_colleges_with_paginator(page, size):
    """
    返回可以分页的所有院校信息
    :param page:  第几页
    :param size:  每页多少条
    :return:
    """
    colleges = College.objects.all()
    return common.with_paginator(colleges, page, size)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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))