123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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)
|