def render(self, request):
        cb = request.GET.get("callback", None)
        try:
            per_page = int(request.GET.get("per_page", 10))
        except ValueError:
            per_page = 10
        try:
            page_number = int(request.GET.get("page_number", 1))
        except ValueError:
            page_number = 1

        pages = Paginator(self.construct(), per_page)

        try:
            page = pages.page(page_number)
        except EmptyPage:
            page = pages.page(1)

        data = {"num_pages": pages.num_pages, "page_number": page_number, "data": page.object_list}

        serial = json.dumps(data, cls=DateTimeAwareJSONEncoder, ensure_ascii=False, indent=4)

        # Callback
        if cb and is_valid_jsonp_callback_value(cb):
            return "%s(%s)" % (cb, serial)

        return serial
Example #2
0
    def render(self, request):
        cb = request.GET.get('callback', None)
        seria = simplejson.dumps(self.construct(), cls=DateTimeAwareJSONEncoder, ensure_ascii=False, indent=4)

        # Callback
        if cb and is_valid_jsonp_callback_value(cb):
            return '%s(%s)' % (cb, seria)

        return seria
Example #3
0
    def render(self, request):
        cb = request.GET.get('callback', None)
        seria = simplejson.dumps(self.construct(),
                                 cls=DateTimeAwareJSONEncoder,
                                 ensure_ascii=False,
                                 indent=4)

        # Callback
        if cb and is_valid_jsonp_callback_value(cb):
            return '%s(%s)' % (cb, seria)

        return seria
Example #4
0
    def render(self, request):
        cb = request.GET.get("callback", None)
        indent = None
        if settings.DEBUG:
            indent = 4
        seria = json.dumps(
            self.construct(),
            cls=DateTimeAwareJSONEncoder,
            ensure_ascii=False,
            indent=indent,
        )

        # Callback
        if cb and is_valid_jsonp_callback_value(cb):
            return "%s(%s)" % (cb, seria)

        return seria
Example #5
0
    def render(self, request):
        """
        Renders dojo.data compatible JSON if self.data is a QuerySet, falls
        back to standard JSON.
        """
        callback = request.GET.get('callback', None)
        try:
            indent = int(request.GET['indent'])
        except (KeyError, ValueError):
            indent = None

        data = self.construct()

        if isinstance(self.data, QuerySet):
            unicode_lookup_table = dict()

            [unicode_lookup_table.__setitem__(item.pk, unicode(item)) \
                for item in self.data]

            for dict_item in data:
                try:
                    id = dict_item['id']
                except KeyError:
                    raise KeyError('The handler of the model that you want '\
                        'to emit as DojoData needs to expose the `id` field!')
                else:
                    dict_item.setdefault('_unicode', unicode_lookup_table[id])

            data = {
                'identifier': 'id',
                'items': data,
                'label': '_unicode',
                'numRows': self.data.count(),
            }

        serialized_data = json.dumps(data,
                                     ensure_ascii=False,
                                     cls=DateTimeAwareJSONEncoder,
                                     indent=indent)

        if callback and is_valid_jsonp_callback_value(callback):
            return '%s(%s)' % (callback, serialized_data)

        return serialized_data
Example #6
0
    def render(self, request):
        """
        Renders dojo.data compatible JSON if self.data is a QuerySet, falls
        back to standard JSON.
        """
        callback = request.GET.get('callback', None)
        try:
            indent = int(request.GET['indent'])
        except (KeyError, ValueError):
            indent = None

        data = self.construct()

        if isinstance(self.data, QuerySet):
            unicode_lookup_table = dict()

            [unicode_lookup_table.__setitem__(item.pk, unicode(item)) \
                for item in self.data]

            for dict_item in data:
                try:
                    id = dict_item['id']
                except KeyError:
                    raise KeyError('The handler of the model that you want '\
                        'to emit as DojoData needs to expose the `id` field!')
                else:
                    dict_item.setdefault('_unicode', unicode_lookup_table[id])

            data = {
                'identifier': 'id',
                'items': data,
                'label': '_unicode',
                'numRows': self.data.count(),
            }

        serialized_data = json.dumps(data, ensure_ascii=False,
            cls=DateTimeAwareJSONEncoder, indent=indent)

        if callback and is_valid_jsonp_callback_value(callback):
            return '%s(%s)' % (callback, serialized_data)

        return serialized_data
    def render(self, request):
        cb = request.GET.get('callback', None)
        try:
            per_page = int(request.GET.get('per_page', 20))
        except ValueError:
            per_page = 20

        try:
            page_number = int(request.GET.get('page_number', 1))
        except ValueError:
            page_number = 1

        try:
            #Checks whether self.construct() supports count() and __len__(); if it doesn't (i.e. it cannot be paginated),
            #returns it unchanged
            getattr(self.construct(), 'count'); getattr(self.construct(), '__len__')

            pages = Paginator(self.construct(), per_page)
            
            try:
                page = pages.page(page_number)
            except EmptyPage:
                page = pages.page(1)
                
            resp = {'num_pages': pages.num_pages,
                    'page_number': page_number,
                    'objects': page.object_list
                    }

        except AttributeError:
            resp = self.construct()

        serial = json.dumps(resp, cls=DateTimeAwareJSONEncoder, ensure_ascii=False, indent=4)

        # Callback
        if cb and is_valid_jsonp_callback_value(cb):
            return '%s(%s)' % (cb, serial)

        return serial
Example #8
0
    def render(self, request):
        """
        Renders dojo.data compatible JSON if self.data is a QuerySet, falls
        back to standard JSON.
        """
        callback = request.GET.get("callback", None)
        try:
            indent = int(request.GET["indent"])
        except (KeyError, ValueError):
            indent = None

        data = self.construct()

        if isinstance(self.data, QuerySet):
            unicode_lookup_table = dict()

            [unicode_lookup_table.__setitem__(item.pk, unicode(item)) for item in self.data]

            for dict_item in data:
                try:
                    id = dict_item["id"]
                except KeyError:
                    raise KeyError(
                        "The handler of the model that you want " "to emit as DojoData needs to expose the `id` field!"
                    )
                else:
                    dict_item.setdefault("_unicode", unicode_lookup_table[id])

            data = {"identifier": "id", "items": data, "label": "_unicode", "numRows": self.data.count()}

        serialized_data = json.dumps(data, ensure_ascii=False, cls=DateTimeAwareJSONEncoder, indent=indent)

        if callback and is_valid_jsonp_callback_value(callback):
            return "%s(%s)" % (callback, serialized_data)

        return serialized_data