Пример #1
0
    def test_parse(self):
        """ Make sure the `QueryDict` works OK """
        parser = FormParser()

        stream = StringIO(self.string)
        data = parser.parse(stream)

        self.assertEqual(Form(data).is_valid(), True)
Пример #2
0
    def test_parse(self):
        """ Make sure the `QueryDict` works OK """
        parser = FormParser()

        stream = StringIO(self.string)
        data = parser.parse(stream)

        self.assertEqual(Form(data).is_valid(), True)
Пример #3
0
    def test_parse(self):
        """ Make sure the `QueryDict` works OK """
        parser = FormParser()

        stream = io.StringIO(self.string)
        data = parser.parse(stream)

        assert Form(data).is_valid() is True
Пример #4
0
 def post(self, request, *kwargs):
     parser = FormParser()
     query_dict = parser.parse(request)
     contact = Contact.objects.filter(number=query_dict["From"]).first()
     if not contact:
         contact = Contact(number=query_dict["From"])
         contact.save()
     if contact.number != os.environ["TWILIO_NUMBER"]:
         sender = "them"
     else:
         sender = "you"
     text = Text(sender=sender, contact=contact, body=query_dict["Body"])
     text.save()
     return HttpResponse()
Пример #5
0
    def check_request_body_for_id(self, request):
        """
        An Update (PUT/PATCH) request must contain the ID of the object
        to be updated. Later, we can allow Update of multiple objects, or the
        entire queryset.
        """
        id = None
        try:
            data = request.data
            id = data[self.lookup_field]
        except (AttributeError, MultiValueDictKeyError):
            try:
                if "application/json" in request.META['CONTENT_TYPE']:
                    str_data = request.body.decode('utf-8')
                    # Make this into a properly-formatted JSON string.
                    id = self.id_from_json(str_data)

                elif "multipart/form-data" in request.META['CONTENT_TYPE']:
                    if self.lookup_field is 'id' or self.lookup_field is 'pk':
                        lookup_field_string = "(?:id|pk)"
                    else:
                        lookup_field_string = self.lookup_field
                    expression = re.compile('name="{lookup_field}"\r\n\r\n([^\r]+)\r\n'.format(lookup_field=lookup_field_string))

                    id_set = False
                    iterator = expression.finditer(request.body.decode('utf-8'))
                    for match in iterator:
                        id = match.groups()[0]
                        id_set = True

                    if not id_set:
                        id = self.id_from_json(request.body.decode('utf-8'))
                elif "application/x-www-form-urlencoded" in request.META['CONTENT_TYPE']:
                    parser = FormParser()
                    stream = StringIO(request.body.decode('utf-8'))
                    data = parser.parse(stream)

                    if self.lookup_field is 'id' or self.lookup_field is 'pk':
                        if 'id' in data:
                            id = data['id']
                        elif 'pk' in data:
                            id = data['pk']
                    else:
                        id = data[self.lookup_field]

            except AttributeError:
                return False
            except KeyError:
                logger.exception("Missing lookup field {} on view {} ".format(self.lookup_field, self))
                raise CRUDException("Missing {lookup_field}".format(lookup_field=self.lookup_field), 400)
            except ValueError:
                logger.exception("CRUDFilters received improper json.")
                raise CRUDException("Improper json", 400)
        try:
            if id is None:
                logger.exception("Missing lookup field {} on view {} ".format(self.lookup_field, self))
                raise CRUDException("Missing {lookup_field}".format(lookup_field=self.lookup_field), 400)

            self.obj_id = id

            return self.obj_id
        except KeyError:
            logger.exception("Update Operations must include {} in the request body.".format(self.lookup_field))
            raise CRUDException("Update operations must include " + self.lookup_field + " in the request body.", status_code=400)
Пример #6
0
    def check_request_body_for_id(self, request):
        """
        An Update (PUT/PATCH) request must contain the ID of the object
        to be updated. Later, we can allow Update of multiple objects, or the
        entire queryset.
        """
        id = None
        try:
            data = request.data
            id = data[self.lookup_field]
        except (AttributeError, MultiValueDictKeyError):
            try:
                if "application/json" in request.META['CONTENT_TYPE']:
                    str_data = request.body.decode('utf-8')
                    # Make this into a properly-formatted JSON string.
                    id = self.id_from_json(str_data)

                elif "multipart/form-data" in request.META['CONTENT_TYPE']:
                    if self.lookup_field is 'id' or self.lookup_field is 'pk':
                        lookup_field_string = "(?:id|pk)"
                    else:
                        lookup_field_string = self.lookup_field
                    expression = re.compile(
                        'name="{lookup_field}"\r\n\r\n([^\r]+)\r\n'.format(
                            lookup_field=lookup_field_string))

                    id_set = False
                    iterator = expression.finditer(
                        request.body.decode('utf-8'))
                    for match in iterator:
                        id = match.groups()[0]
                        id_set = True

                    if not id_set:
                        id = self.id_from_json(request.body.decode('utf-8'))
                elif "application/x-www-form-urlencoded" in request.META[
                        'CONTENT_TYPE']:
                    parser = FormParser()
                    stream = StringIO(request.body.decode('utf-8'))
                    data = parser.parse(stream)

                    if self.lookup_field is 'id' or self.lookup_field is 'pk':
                        if 'id' in data:
                            id = data['id']
                        elif 'pk' in data:
                            id = data['pk']
                    else:
                        id = data[self.lookup_field]

            except AttributeError:
                return False
            except KeyError:
                logger.exception("Missing lookup field {} on view {} ".format(
                    self.lookup_field, self))
                raise CRUDException(
                    "Missing {lookup_field}".format(
                        lookup_field=self.lookup_field), 400)
            except ValueError:
                logger.exception("CRUDFilters received improper json.")
                raise CRUDException("Improper json", 400)
        try:
            if id is None:
                logger.exception("Missing lookup field {} on view {} ".format(
                    self.lookup_field, self))
                raise CRUDException(
                    "Missing {lookup_field}".format(
                        lookup_field=self.lookup_field), 400)

            self.obj_id = id

            return self.obj_id
        except KeyError:
            logger.exception(
                "Update Operations must include {} in the request body.".
                format(self.lookup_field))
            raise CRUDException("Update operations must include " +
                                self.lookup_field + " in the request body.",
                                status_code=400)