예제 #1
0
def cafes_list(request, oauth_params):
    r"""
    **/cafes/list**

    검색된 카페 리스트 및 질의 조건을 반환

    method
     * GET
     * oauth required

    parameter
     * q (default=""): 카페를 검색할 검색어

    note
     * q를 입력하지 않으면 모든 카페를 반환한다.

    example
        * request 
            .. parsed-literal::

                GET /cafes/list HTTP/1.1

        * response (검색된 카페가 있는 경우)
            .. parsed-literal::
    
                HTTP/1.0 200 OK
                Content-Type: application/json; charset=utf-8
                
                {
                    "cafes": [
                        {
                            "cafe_name": "기획총무부",
                            "no": 9, 
                            "admin": "hyojeong28",
                            "board_list": [
                                "board_part_plan",
                                "board_part_plan_records",
                                "photo_part_plan"
                            ],
                            "description": "<font face = \"돋움\">\r\n<strong><font color=#FF0000>컴</font>...(생략)",
                            "category": "학생자치",
                            "cafe_id": "cafe_part_plan",
                            "member_list": [
                                "gochi"
                            ]
                        }, 
                        
                        ...       
                
                        {
                            "cafe_name": "선배와의 대화",
                            "no": 62,
                            "admin": "gufrend",
                            "board_list": [
                                "board_cafe_present",
                                "photo_cafe_present"
                            ],
                            "description": "",
                            "category": "인문사회",
                            "cafe_id": "cafe_present",
                            "member_list": [
                                "jeppy"
                            ]
                        }
                    ],
                    "listinfo": {
                        "q": "",
                        "total_cafes": 5,
                        "total_matched_cafes": 5
                    }
                }

        * response (검색된 카페가 없는 경우)
            .. parsed-literal::
    
                {
                    "cafes": [], 
                    "listinfo": {
                        "q": "", 
                        "total_cafes": 5, 
                        "total_matched_cafes": 0
                    }
                }

    """

    q = ""

    # get request parameter
    if request.GET.has_key("q"):
        q = request.GET["q"]

    # get cafe list
    listinfo, cafes = Cafe.get_list(q)

    ret_item = {"listinfo": listinfo, "cafes": cafes}
    ret = dumps(ret_item)

    return HttpResponse(ret, content_type="application/json")
예제 #2
0
def cafes_list(request, oauth_params):
    r"""
    **/cafes/list**

    검색된 카페 리스트 및 질의 조건을 반환

    method
     * GET
     * oauth required

    parameter
     * q (default=""): 카페를 검색할 검색어

    note
     * q를 입력하지 않으면 모든 카페를 반환한다.

    example
        * request 
            .. parsed-literal::

                GET /cafes/list HTTP/1.1

        * response (검색된 카페가 있는 경우)
            .. parsed-literal::
    
                HTTP/1.0 200 OK
                Content-Type: application/json; charset=utf-8
                
                {
                    "cafes": [
                        {
                            "cafe_name": "기획총무부",
                            "no": 9, 
                            "admin": "hyojeong28",
                            "board_list": [
                                "board_part_plan",
                                "board_part_plan_records",
                                "photo_part_plan"
                            ],
                            "description": "<font face = \"돋움\">\r\n<strong><font color=#FF0000>컴</font>...(생략)",
                            "category": "학생자치",
                            "cafe_id": "cafe_part_plan",
                            "member_list": [
                                "gochi"
                            ]
                        }, 
                        
                        ...       
                
                        {
                            "cafe_name": "선배와의 대화",
                            "no": 62,
                            "admin": "gufrend",
                            "board_list": [
                                "board_cafe_present",
                                "photo_cafe_present"
                            ],
                            "description": "",
                            "category": "인문사회",
                            "cafe_id": "cafe_present",
                            "member_list": [
                                "jeppy"
                            ]
                        }
                    ],
                    "listinfo": {
                        "q": "",
                        "total_cafes": 5,
                        "total_matched_cafes": 5
                    }
                }

        * response (검색된 카페가 없는 경우)
            .. parsed-literal::
    
                {
                    "cafes": [], 
                    "listinfo": {
                        "q": "", 
                        "total_cafes": 5, 
                        "total_matched_cafes": 0
                    }
                }

    """

    q = ""

    # get request parameter
    if request.GET.has_key('q'):
        q = request.GET['q']

    # get cafe list
    listinfo, cafes = Cafe.get_list(q)

    ret_item = {'listinfo': listinfo, 'cafes': cafes}
    ret = dumps(ret_item)

    return HttpResponse(ret, content_type='application/json')
예제 #3
0
def boards_favorite(request, oauth_params):
    r"""
    **/boards/favorite**

    즐겨찾는 게시판 리스트 반환

    method
     * GET
     * oauth required

    note
     * 즐겨찾는 게시판은 즐겨찾기 등록된 게시판 및 자유게시판과 가입한 cafe의
       게시판을 포함한다.

    example
     * request (oauth parameter는 예제에서 생략)
        .. parsed-literal::

            GET /boards/favorite HTTP/1.1

     * response
        .. parsed-literal::

            HTTP/1.0 200 OK
            Content-Type: application/json; charset=utf-8

            [
                {
                    "board_id": "board_freeboard",
                    "count": 10147,
                    "description": "",
                    "title": "자유게시판",
                    "admin": "anjae83",
                    "count24h": 0
                },

                ...

                {
                    "board_id": "photo_part_plan",
                    "count": 1670,
                    "description": "",
                    "title": "기획총무부 사진 게시판",
                    "admin": "hyojeong28",
                    "count24h": 0
                }
            ]
    """

    def join_list(list1, list2):
        return list1 + [item for item in list2 if item not in list1]

    oauth_token = oauth_params["oauth_token"]
    user_id = Token.get_user_id(oauth_token)

    # add default
    default_list = ["board_freeboard"]
    # add favorites
    favorites = Favorite.get_by_user(user_id)
    favorite_list = map(lambda x: x.get("board_id"), favorites)
    # add cafe
    cafe_board_list = []
    cafe_boards = [Cafe.get_boards(cafe_id) for cafe_id in User.get_cafe(user_id)]
    if cafe_boards:
        cafe_board_list = reduce(lambda x, y: x + y, cafe_boards)

    # merge default, favorite, cafe list
    board_list = reduce(join_list, (default_list, favorite_list, cafe_board_list))
    # get boards
    boards = filter(None, map(Board.get_or_none, board_list))
    ret = dumps(boards)
    return HttpResponse(ret, content_type="application/json")
예제 #4
0
def boards_favorite(request, oauth_params):
    r"""
    **/boards/favorite**

    즐겨찾는 게시판 리스트 반환

    method
     * GET
     * oauth required

    note
     * 즐겨찾는 게시판은 즐겨찾기 등록된 게시판 및 자유게시판과 가입한 cafe의
       게시판을 포함한다.

    example
     * request (oauth parameter는 예제에서 생략)
        .. parsed-literal::

            GET /boards/favorite HTTP/1.1

     * response
        .. parsed-literal::

            HTTP/1.0 200 OK
            Content-Type: application/json; charset=utf-8

            [
                {
                    "board_id": "board_freeboard",
                    "count": 10147,
                    "description": "",
                    "title": "자유게시판",
                    "admin": "anjae83",
                    "count24h": 0
                },

                ...

                {
                    "board_id": "photo_part_plan",
                    "count": 1670,
                    "description": "",
                    "title": "기획총무부 사진 게시판",
                    "admin": "hyojeong28",
                    "count24h": 0
                }
            ]
    """
    def join_list(list1, list2):
        return list1 + [item for item in list2 if item not in list1]

    oauth_token = oauth_params['oauth_token']
    user_id = Token.get_user_id(oauth_token)

    # add default
    default_list = ['board_freeboard']
    # add favorites
    favorites = Favorite.get_by_user(user_id)
    favorite_list = map(lambda x: x.get('board_id'), favorites)
    # add cafe
    cafe_board_list = []
    cafe_boards = [
        Cafe.get_boards(cafe_id) for cafe_id in User.get_cafe(user_id)
    ]
    if cafe_boards:
        cafe_board_list = reduce(lambda x, y: x + y, cafe_boards)

    # merge default, favorite, cafe list
    board_list = reduce(join_list,
                        (default_list, favorite_list, cafe_board_list))
    # get boards
    boards = filter(None, map(Board.get_or_none, board_list))
    ret = dumps(boards)
    return HttpResponse(ret, content_type='application/json')