Пример #1
0
    def test_serializer(self):

        class SomeValue:
            pass

        some_value = SomeValue()

        class SomeField(models.Field):
            def get_prep_value(self, value):
                return 'somevalue'

            def from_db_value(self, value, expression, connection, context):
                return some_value

        class SomeModel(models.Model):
            dt = models.DateTimeField()
            t = models.TimeField()
            d = models.DateField()
            img1 = models.ImageField()
            img2 = models.ImageField()
            img3 = models.ImageField()
            something = SomeField()

        def method(self):
            pass

        instance = SomeModel(dt=datetime.now(),
                             d=date.today(),
                             something=some_value,
                             t=datetime.now().time())
        content_file = ContentFile(b'%PDF')
        content_file.name = 'foo.pdf'
        instance.img1 = content_file
        instance.img2 = 'foo.png'
        # make sure serializer doesn't fail if a method is attached to
        # the instance
        instance.method = method
        instance.nonfield = 'hello'
        data = utils.serialize_instance(instance)
        instance2 = utils.deserialize_instance(SomeModel, data)
        self.assertEqual(getattr(instance, 'method', None), method)
        self.assertEqual(getattr(instance2, 'method', None), None)
        self.assertEqual(instance2.something, some_value)
        self.assertEqual(instance2.img1.name, 'foo.pdf')
        self.assertEqual(instance2.img2.name, 'foo.png')
        self.assertEqual(instance2.img3.name, '')
        self.assertEqual(instance.nonfield, instance2.nonfield)
        self.assertEqual(instance.d, instance2.d)
        self.assertEqual(instance.dt.date(), instance2.dt.date())
        for t1, t2 in [(instance.t, instance2.t),
                       (instance.dt.time(), instance2.dt.time())]:
            self.assertEqual(t1.hour, t2.hour)
            self.assertEqual(t1.minute, t2.minute)
            self.assertEqual(t1.second, t2.second)
            # AssertionError: datetime.time(10, 6, 28, 705776)
            #     != datetime.time(10, 6, 28, 705000)
            self.assertEqual(int(t1.microsecond / 1000),
                             int(t2.microsecond / 1000))
Пример #2
0
 def deserialize(cls, data):
     account = deserialize_instance(SocialAccount, data['account'])
     user = deserialize_instance(get_user_model(), data['user'])
     if 'token' in data:
         token = deserialize_instance(SocialToken, data['token'])
     else:
         token = None
     email_addresses = []
     for ea in data['email_addresses']:
         email_address = deserialize_instance(EmailAddress, ea)
         email_addresses.append(email_address)
     ret = SocialLogin()
     ret.token = token
     ret.account = account
     ret.user = user
     ret.email_addresses = email_addresses
     ret.state = data['state']
     return ret
Пример #3
0
 def deserialize(cls, data):
     account = deserialize_instance(SocialAccount, data["account"])
     user = deserialize_instance(get_user_model(), data["user"])
     account.user = user
     if "token" in data:
         token = deserialize_instance(SocialToken, data["token"])
     else:
         token = None
     email_addresses = []
     for ea in data["email_addresses"]:
         email_address = deserialize_instance(EmailAddress, ea)
         email_addresses.append(email_address)
     ret = SocialLogin()
     ret.token = token
     ret.account = account
     ret.user = user
     ret.email_addresses = email_addresses
     ret.state = data["state"]
     return ret
Пример #4
0
    def test_serializer_binary_field(self):
        class SomeBinaryModel(models.Model):
            bb = models.BinaryField()
            bb_empty = models.BinaryField()

        instance = SomeBinaryModel(bb=b'some binary data')

        serialized = utils.serialize_instance(instance)
        deserialized = utils.deserialize_instance(SomeBinaryModel, serialized)

        self.assertEqual(serialized['bb'], 'c29tZSBiaW5hcnkgZGF0YQ==')
        self.assertEqual(serialized['bb_empty'], '')
        self.assertEqual(deserialized.bb, b'some binary data')
        self.assertEqual(deserialized.bb_empty, b'')
Пример #5
0
 def deserialize_instance(self, model, data):
     return deserialize_instance(model, data)