mirror of
https://github.com/django/django.git
synced 2024-12-01 15:42:04 +01:00
6789ded0a6
Thanks to Adam Johnson, Carlton Gibson, Mariusz Felisiak, and Raphael Michel for mentoring this Google Summer of Code 2019 project and everyone else who helped with the patch. Special thanks to Mads Jensen, Nick Pope, and Simon Charette for extensive reviews. Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""
|
|
Indirection layer for PostgreSQL-specific fields, so the tests don't fail when
|
|
run with a backend other than PostgreSQL.
|
|
"""
|
|
import enum
|
|
|
|
from django.db import models
|
|
|
|
try:
|
|
from django.contrib.postgres.fields import (
|
|
ArrayField, BigIntegerRangeField, CICharField, CIEmailField,
|
|
CITextField, DateRangeField, DateTimeRangeField, DecimalRangeField,
|
|
HStoreField, IntegerRangeField,
|
|
)
|
|
from django.contrib.postgres.search import SearchVectorField
|
|
except ImportError:
|
|
class DummyArrayField(models.Field):
|
|
def __init__(self, base_field, size=None, **kwargs):
|
|
super().__init__(**kwargs)
|
|
|
|
def deconstruct(self):
|
|
name, path, args, kwargs = super().deconstruct()
|
|
kwargs.update({
|
|
'base_field': '',
|
|
'size': 1,
|
|
})
|
|
return name, path, args, kwargs
|
|
|
|
ArrayField = DummyArrayField
|
|
BigIntegerRangeField = models.Field
|
|
CICharField = models.Field
|
|
CIEmailField = models.Field
|
|
CITextField = models.Field
|
|
DateRangeField = models.Field
|
|
DateTimeRangeField = models.Field
|
|
DecimalRangeField = models.Field
|
|
HStoreField = models.Field
|
|
IntegerRangeField = models.Field
|
|
SearchVectorField = models.Field
|
|
|
|
|
|
class EnumField(models.CharField):
|
|
def get_prep_value(self, value):
|
|
return value.value if isinstance(value, enum.Enum) else value
|