def _get_fk_handler_class(self, model_field): related_field = model_field.field related_model = related_field.model if related_model._meta.auto_created: # NB: we avoid the "internal" table of ManyToManyFields # TODO: better way ? (problem with custom 'through' table ?) return None # NB: we use the django's migration tool to get a string pattern # of the attribute "on_delete". delete_signature = serializer_factory( related_field.remote_field.on_delete).serialize()[0] for handler_pattern, handler_cls in self.fk_handler_classes.items(): if fnmatch(delete_signature, handler_pattern): return handler_cls raise ValueError( gettext('The field "{}.{}" cannot be deleted because its ' '"on_delete" constraint is not managed. ' 'Please contact your administrator.'.format( related_field.model.__name__, related_field.name, )))
def serialize(self): enum_class = self.value.__class__ module = enum_class.__module__ v_string, v_imports = migration_serializer.serializer_factory( self.value.value).serialize() imports = {'import %s' % module, *v_imports} return '%s.%s(%s)' % (module, enum_class.__qualname__, v_string), imports
def test_not_implemented_deconstructible(self): storage = dsn_configured_storage("UNDEFINED_DSN") arg_string, arg_imports = serializer_factory(storage).serialize() self.assertEqual( arg_string, "django_storage_url.base.dsn_configured_storage('UNDEFINED_DSN')", ) self.assertEqual(arg_imports, {"import django_storage_url.base"})
def test_defined_deconstructible(self): storage = dsn_configured_storage("STORAGE_DSN") arg_string, arg_imports = serializer_factory(storage).serialize() self.assertEqual( arg_string, "django_storage_url.base.dsn_configured_storage('STORAGE_DSN')", ) self.assertEqual(arg_imports, {"import django_storage_url.base"})
def serialize(cls, value): return serializer_factory(value).serialize()
def serialize(self, value): return serializer_factory(value).serialize()[0]
def serialize(self, value): return serializer_factory(value).serialize()[0]
def serialize(cls, value): return serializer_factory(value).serialize()
def serialize(self): return serializer_factory(self.value.value).serialize()