Пример #1
0
class DynamicModel(Model):
    attrs = DynamicField(
        spec={
            "datetimey": datetime,
            "datey": date,
            "floaty": float,
            "inty": int,
            "stry": str,
            "timey": time,
            "nesty": {
                "level2": str
            },
        })

    @classmethod
    def check(cls, **kwargs):
        # Disable the checks on MySQL so that checks tests don't fail
        if not (connection_is_mariadb(connection)
                and connection.mysql_version >= (10, 0, 1)):
            return []
        return super().check(**kwargs)

    def __unicode__(self):
        return ",".join("{}:{}".format(key, value)
                        for key, value in self.attrs.items())
Пример #2
0
class DynamicModel(Model):
    attrs = DynamicField(
        spec={
            'datetimey': datetime,
            'datey': date,
            'floaty': float,
            'inty': int,
            'stry': six.text_type,
            'timey': time,
            'nesty': {
                'level2': six.text_type
            }
        })

    @classmethod
    def check(cls, **kwargs):
        # Disable the checks on MySQL so that checks tests don't fail
        if not (connection.is_mariadb and connection.mysql_version >=
                (10, 0, 1)):
            return []
        return super(DynamicModel, cls).check(**kwargs)

    def __unicode__(self):
        return ",".join('{}:{}'.format(key, value)
                        for key, value in six.iteritems(self.attrs))
Пример #3
0
class SpeclessDynamicModel(Model):
    attrs = DynamicField()

    @classmethod
    def check(cls, **kwargs):
        # Disable the checks on MySQL so that checks tests don't fail
        if not connection.mysql_is_mariadb:
            return []
        return super().check(**kwargs)

    def __str__(self):  # pragma: no cover
        return ",".join(f"{key}:{value}" for key, value in self.attrs.items())
Пример #4
0
class SpeclessDynamicModel(Model):
    attrs = DynamicField()

    @classmethod
    def check(cls, **kwargs):
        # Disable the checks on MySQL so that checks tests don't fail
        if not (connection_is_mariadb(connection)
                and connection.mysql_version >= (10, 0, 1)):
            return []
        return super().check(**kwargs)

    def __unicode__(self):
        return ",".join(f"{key}:{value}" for key, value in self.attrs.items())
Пример #5
0
class DynamicModel(Model):
    attrs = DynamicField(
        spec={
            "datetimey": dt.datetime,
            "datey": dt.date,
            "floaty": float,
            "inty": int,
            "stry": str,
            "timey": dt.time,
            "nesty": {
                "level2": str
            },
        })

    @classmethod
    def check(cls, **kwargs):
        # Disable the checks on MySQL so that checks tests don't fail
        if not connection.mysql_is_mariadb:
            return []
        return super().check(**kwargs)

    def __str__(self):  # pragma: no cover
        return ",".join(f"{key}:{value}" for key, value in self.attrs.items())
Пример #6
0
 class InvalidDynamicModel4(TemporaryModel):
     field = DynamicField(spec={"l1": {"bad": tuple}})
Пример #7
0
 class Invalid(models.Model):
     field = DynamicField(spec={"bad": list})  # type: ignore [dict-item]
Пример #8
0
 class Invalid(models.Model):
     field = DynamicField(spec={2.0: str})  # type: ignore [dict-item]
Пример #9
0
 def test_makemigrations(self):
     field = DynamicField(spec={'a': 'beta'})
     statement, imports = MigrationWriter.serialize(field)
     # 'spec' should not appear since that would trigger needless ALTERs
     assert statement == "django_mysql.models.DynamicField()"
Пример #10
0
 def test_deconstruct(self):
     field = DynamicField()
     name, path, args, kwargs = field.deconstruct()
     DynamicField(*args, **kwargs)
Пример #11
0
 def test_json(self):
     value = six.text_type(json.dumps({'foo': 'bar'}))
     result = DynamicField().to_python(value)
     assert result == {'foo': 'bar'}
Пример #12
0
 class InvalidDynamicModel4(TemporaryModel):
     field = DynamicField(spec={
         'l1': {
             'bad': tuple,
         },
     })
Пример #13
0
 class InvalidDynamicModel2(TemporaryModel):
     field = DynamicField(spec={
         2.0: six.text_type,
     })
Пример #14
0
 class ValidDynamicModel3(TemporaryModel):
     field = DynamicField()
Пример #15
0
 class InvalidDynamicModel1(TemporaryModel):
     field = DynamicField(spec=["woops", "a", "list"])
Пример #16
0
 class Invalid(models.Model):
     field = DynamicField(
         spec={"l1": {"bad": tuple}},  # type: ignore [dict-item]
     )
Пример #17
0
 def test_deconstruct_blank(self):
     field = DynamicField(blank=False)
     name, path, args, kwargs = field.deconstruct()
     assert kwargs["blank"] is False
     DynamicField(*args, **kwargs)
Пример #18
0
 def test_deconstruct_default(self):
     field = DynamicField(default=make_default)
     name, path, args, kwargs = field.deconstruct()
     assert kwargs["default"] is make_default
     DynamicField(*args, **kwargs)
Пример #19
0
 class InvalidDynamicModel1(TemporaryModel):
     field = DynamicField(spec=['woops', 'a', 'list'])
Пример #20
0
 def test_mariadb_dyncol_value(self):
     value = mariadb_dyncol.pack({"foo": "bar"})
     result = DynamicField().to_python(value)
     assert result == {"foo": "bar"}
Пример #21
0
 class InvalidDynamicModel3(TemporaryModel):
     field = DynamicField(spec={'bad': list})
Пример #22
0
 def test_json(self):
     value = str(json.dumps({"foo": "bar"}))
     result = DynamicField().to_python(value)
     assert result == {"foo": "bar"}
Пример #23
0
 def test_mariadb_dyncol_value(self):
     value = mariadb_dyncol.pack({'foo': 'bar'})
     result = DynamicField().to_python(value)
     assert result == {'foo': 'bar'}
Пример #24
0
 def test_pass_through(self):
     value = {"foo": "bar"}
     result = DynamicField().to_python(value)
     assert result == {"foo": "bar"}
Пример #25
0
 def test_pass_through(self):
     value = {'foo': 'bar'}
     result = DynamicField().to_python(value)
     assert result == {'foo': 'bar'}
Пример #26
0
 def test_deconstruct_spec(self):
     field = DynamicField(spec={"this": int, "that": float})
     name, path, args, kwargs = field.deconstruct()
     assert path == "django_mysql.models.DynamicField"
     DynamicField(*args, **kwargs)
Пример #27
0
 def test_deconstruct_spec(self):
     field = DynamicField(spec={'this': int, 'that': float})
     name, path, args, kwargs = field.deconstruct()
     assert path == 'django_mysql.models.DynamicField'
     DynamicField(*args, **kwargs)
Пример #28
0
 class InvalidDynamicModel2(TemporaryModel):
     field = DynamicField(spec={
         2.0: str,
     })
Пример #29
0
 def test_formfield(self):
     model_field = DynamicField()
     form_field = model_field.formfield()
     self.assertIsNone(form_field)
Пример #30
0
 class Invalid(models.Model):
     field = DynamicField(spec=["woops", "a", "list"])  # type: ignore [arg-type]