コード例 #1
0
    def retrieve(self, request, pk = None):
        try:
            pk = int(pk)
        except ValueError:
            raise Http404("Pk not valid")

        try:
            edition = Edition.objects.get(pk = pk)
        except Edition.DoesNotExist:
            raise Http404("Not found.")

        return_json = serialize_edition(edition)

        return Response(return_json, 200)
コード例 #2
0
    def list(self, request):
        
        # Sorted by -created date
        editions = Edition.objects.all()

        return_json = OrderedDict([('href', request.build_absolute_uri('')),
                                   ('count', len(editions)),
                                   ('next', None),
                                   ('previous', None),
                                   ('template', {}),
                                   ('results', [])])

        request_page = request.GET.get('page', 1)

        try:
            page = Paginator(editions, 16, allow_empty_first_page=False).page(request_page)
        except InvalidPage:
            raise Http404("Invalid page")
        except PageNotAnInteger:
            raise Http404("Page not a number")
        except EmptyPage:
            raise Http404("Empty page") 


        for ed in page.object_list:
            return_json['results'].append( serialize_edition(ed) )

        if page.has_next():
            parseResult = urlparse.urlparse(request.build_absolute_uri(''))
            qd = QueryDict(parseResult.query).copy()
            qd['page'] = int(request_page) + 1
            query = qd.urlencode()
            return_json['next'] = urlparse.urlunsplit((parseResult.scheme, parseResult.netloc, parseResult.path, query, parseResult.fragment))
        else:
            return_json['next'] = None

        if page.has_previous():
            parseResult = urlparse.urlparse(request.build_absolute_uri(''))
            qd = QueryDict(parseResult.query).copy()
            qd['page'] = int(request_page) - 1
            query = qd.urlencode()
            return_json['previous'] = urlparse.urlunsplit((parseResult.scheme, parseResult.netloc, parseResult.path, query, parseResult.fragment))
        else:
            return_json['previous'] = None


        return Response(return_json)