def _load_getdata(self):
     if 'getdata_in_qrystring' in self.request.GET or self.use_extjshacks: # NOTE: For easier ExtJS integration
         return True, self.request.GET
     else:
         try:
             return False, serializers.deserialize(self.comformat, self.request.raw_post_data)
         except ValueError, e:
             raise ValueError(('Bad request data: {0}. Perhaps you ment to'
                               'send GET data as a querystring? In that case, add '
                               'getdata_in_qrystring=1 to your querystring.'.format(e)))
Example #2
0
    def _create_or_replace(self, instance=None):
        data = serializers.deserialize(self.comformat, self.request.raw_post_data)
        form = self.__class__.EditForm(data, instance=instance)
        if form.is_valid():
            try:
                if instance == None:
                    id = self._meta.simplified.create(self.request.user, **form.cleaned_data)
                else:
                    id = self._meta.simplified.update(self.request.user, instance.pk, **form.cleaned_data)
            except PermissionDenied:
                return ForbiddenSerializableResult()

            data['id'] = id
            result = self._extjswrapshortcut(data)
            if instance == None:
                return SerializableResult(result, httpresponsecls=HttpResponseCreated)
            else:
                return SerializableResult(result)
        else:
            return FormErrorSerializableResult(form, self.use_extjshacks)
 def _deserialize_create_or_replace_request(self):
     data = serializers.deserialize(self.comformat, self.request.raw_post_data)
     if isinstance(data, list):
         return data, False
     else:
         return data, True
                return ForbiddenSerializableResult(e)
            return self._create_or_replace_single(data, instance)
        else:
            return self._create_or_replace_many(data, update=True)


    def _delete_many(self):
        if 'deletedata_in_qrystring' in self.request.GET:
            try:
                raw_data = self.request.GET['pks']
            except KeyError, e:
                return ErrorMsgSerializableResult('The querystring must contain a JSON encoded array of primary-keys in the "pks" attribute.',
                                                  httpresponsecls=HttpResponseBadRequest)
        else:
            raw_data = self.request.raw_post_data
        list_of_pks = serializers.deserialize(self.comformat, raw_data)
        if not isinstance(list_of_pks, list):
            return ErrorMsgSerializableResult('Requires "pks" as a JSON encoded array.',
                                              httpresponsecls=HttpResponseBadRequest)
        pks = self._meta.simplified.deletemany(self.request.user, *list_of_pks)
        result = self.extjswrapshortcut(pks, total=len(pks))
        return SerializableResult(result)


    def crud_delete(self, request, id=None):
        """ Maps to the ``delete`` method of the simplified class. """
        is_single = id != None
        if is_single:
            try:
                self._meta.simplified.delete(request.user, id)
            except PermissionDenied, e: