1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
import warnings
from django.db.models import CharField, EmailField, TextField
from django.test.utils import ignore_warnings
from django.utils.deprecation import RemovedInDjango51Warning
__all__ = ["CICharField", "CIEmailField", "CIText", "CITextField"]
# RemovedInDjango51Warning.
class CIText:
def __init__(self, *args, **kwargs):
warnings.warn(
"django.contrib.postgres.fields.CIText mixin is deprecated.",
RemovedInDjango51Warning,
stacklevel=2,
)
super().__init__(*args, **kwargs)
def get_internal_type(self):
return "CI" + super().get_internal_type()
def db_type(self, connection):
return "citext"
class CICharField(CIText, CharField):
system_check_deprecated_details = {
"msg": (
"django.contrib.postgres.fields.CICharField is deprecated. Support for it "
"(except in historical migrations) will be removed in Django 5.1."
),
"hint": (
'Use CharField(db_collation="…") with a case-insensitive non-deterministic '
"collation instead."
),
"id": "fields.W905",
}
def __init__(self, *args, **kwargs):
with ignore_warnings(category=RemovedInDjango51Warning):
super().__init__(*args, **kwargs)
class CIEmailField(CIText, EmailField):
system_check_deprecated_details = {
"msg": (
"django.contrib.postgres.fields.CIEmailField is deprecated. Support for it "
"(except in historical migrations) will be removed in Django 5.1."
),
"hint": (
'Use EmailField(db_collation="…") with a case-insensitive '
"non-deterministic collation instead."
),
"id": "fields.W906",
}
def __init__(self, *args, **kwargs):
with ignore_warnings(category=RemovedInDjango51Warning):
super().__init__(*args, **kwargs)
class CITextField(CIText, TextField):
system_check_deprecated_details = {
"msg": (
"django.contrib.postgres.fields.CITextField is deprecated. Support for it "
"(except in historical migrations) will be removed in Django 5.1."
),
"hint": (
'Use TextField(db_collation="…") with a case-insensitive non-deterministic '
"collation instead."
),
"id": "fields.W907",
}
def __init__(self, *args, **kwargs):
with ignore_warnings(category=RemovedInDjango51Warning):
super().__init__(*args, **kwargs)
|