예제 #1
0
 def ready(self):
     setting_changed.connect(uninstall_if_needed)
     # Connections may already exist before we are called.
     for conn in connections.all():
         if conn.vendor == 'postgresql':
             conn.introspection.data_types_reverse.update({
                 3904:
                 'django.contrib.postgres.fields.IntegerRangeField',
                 3906:
                 'django.contrib.postgres.fields.DecimalRangeField',
                 3910:
                 'django.contrib.postgres.fields.DateTimeRangeField',
                 3912:
                 'django.contrib.postgres.fields.DateRangeField',
                 3926:
                 'django.contrib.postgres.fields.BigIntegerRangeField',
             })
             if conn.connection is not None:
                 register_type_handlers(conn)
     connection_created.connect(register_type_handlers)
     CharField.register_lookup(Unaccent)
     TextField.register_lookup(Unaccent)
     CharField.register_lookup(SearchLookup)
     TextField.register_lookup(SearchLookup)
     CharField.register_lookup(TrigramSimilar)
     TextField.register_lookup(TrigramSimilar)
     CharField.register_lookup(TrigramWordSimilar)
     TextField.register_lookup(TrigramWordSimilar)
     MigrationWriter.register_serializer(RANGE_TYPES, RangeSerializer)
     IndexExpression.register_wrappers(OrderBy, OpClass, Collate)
예제 #2
0
    def test_register_serializer(self):
        class ComplexSerializer(BaseSerializer):
            def serialize(self):
                return "complex(%r)" % self.value, {}

        MigrationWriter.register_serializer(complex, ComplexSerializer)
        self.assertSerializedEqual(complex(1, 2))
        MigrationWriter.unregister_serializer(complex)
        with self.assertRaisesMessage(ValueError, "Cannot serialize: (1+2j)"):
            self.assertSerializedEqual(complex(1, 2))
예제 #3
0
    def test_register_serializer(self):
        class ComplexSerializer(BaseSerializer):
            def serialize(self):
                return 'complex(%r)' % self.value, {}

        MigrationWriter.register_serializer(complex, ComplexSerializer)
        self.assertSerializedEqual(complex(1, 2))
        MigrationWriter.unregister_serializer(complex)
        with self.assertRaisesMessage(ValueError, 'Cannot serialize: (1+2j)'):
            self.assertSerializedEqual(complex(1, 2))
예제 #4
0
파일: apps.py 프로젝트: Chrescht/django
 def ready(self):
     setting_changed.connect(uninstall_if_needed)
     # Connections may already exist before we are called.
     for conn in connections.all():
         if conn.vendor == 'postgresql':
             conn.introspection.data_types_reverse.update({
                 3802: 'django.contrib.postgres.fields.JSONField',
                 3904: 'django.contrib.postgres.fields.IntegerRangeField',
                 3906: 'django.contrib.postgres.fields.DecimalRangeField',
                 3910: 'django.contrib.postgres.fields.DateTimeRangeField',
                 3912: 'django.contrib.postgres.fields.DateRangeField',
                 3926: 'django.contrib.postgres.fields.BigIntegerRangeField',
             })
             if conn.connection is not None:
                 register_type_handlers(conn)
     connection_created.connect(register_type_handlers)
     CharField.register_lookup(Unaccent)
     TextField.register_lookup(Unaccent)
     CharField.register_lookup(SearchLookup)
     TextField.register_lookup(SearchLookup)
     CharField.register_lookup(TrigramSimilar)
     TextField.register_lookup(TrigramSimilar)
     MigrationWriter.register_serializer(RANGE_TYPES, RangeSerializer)
예제 #5
0
from django.core.files.storage import FileSystemStorage

from django.db.migrations.serializer import BaseSerializer
from django.db.migrations.writer import MigrationWriter


class FileSystemStorageSerializer(BaseSerializer):
    def serialize(self):
        return self.value.location, {
            'from django.core.files.storage import FileSystemStorage'
        }


MigrationWriter.register_serializer(FileSystemStorage,
                                    FileSystemStorageSerializer)
예제 #6
0
 def test_register_non_serializer(self):
     with self.assertRaisesMessage(
         ValueError, "'TestModel1' must inherit from 'BaseSerializer'."
     ):
         MigrationWriter.register_serializer(complex, TestModel1)
예제 #7
0
    def get_text_for_value(self, value):
        return ', '.join(
            [self.choicelist.get_text_for_value(bc.value) for bc in value])


# from lino.core.choicelists import Choice, ChoiceList, CallableChoice


class ChoiceSerializer(BaseSerializer):
    def serialize(self):
        return ("rt.models.{}.{}.get_by_value('{}')".format(
            self.value.choicelist.app_label, self.value.choicelist.__name__,
            self.value.value), {'from lino.api.shell import rt'})


MigrationWriter.register_serializer(Choice, ChoiceSerializer)


class ChoiceListSerializer(BaseSerializer):
    def serialize(self):
        return ("rt.models.{}.{}".format(self.value.choicelist.app_label,
                                         self.value.choicelist.__name__),
                {'from lino.api.shell import rt'})


MigrationWriter.register_serializer(ChoiceList, ChoiceListSerializer)


class CallableChoiceSerializer(BaseSerializer):
    def serialize(self):
        choice = self.value()
예제 #8
0
                                        "false").lower() == "true")

# Rendre certains warnings silencieux
SILENCED_SYSTEM_CHECKS = [
    # On a remplacé django.contrib.auth.context_processors.auth par un équivalent, agir.authentication.context_processors.auth
    "admin.E402",
    # social_django utilise encore des champs postgres JSON (au lieu du nouveau JSONField de Django)
    "fields.W904",
]

# Django ne sait pas par défaut sérializer les types intervalle de psycopg2
# Cela fait du coup planter `makemigrate` quand il tente de séralizer les valeurs
# par défaut des champs de dates pour les modèles de mandats (dans l'appli élus).
# Il faut enregistrer manuellement le serializer correspondant auprès du générateur
# de migrations.
MigrationWriter.register_serializer(DateRange, RangeSerializer)

# Django < 3.1 not compatible with GDAL 3
if os.environ.get("GDAL_LIBRARY_PATH"):
    GDAL_LIBRARY_PATH = os.environ.get("GDAL_LIBRARY_PATH")

ENABLE_API = os.environ.get("ENABLE_API", "n").lower() in YES_VALUES or DEBUG
ENABLE_ADMIN = os.environ.get("ENABLE_ADMIN",
                              "n").lower() in YES_VALUES or DEBUG
ENABLE_FRONT = os.environ.get("ENABLE_FRONT",
                              "n").lower() in YES_VALUES or DEBUG

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEST_RUNNER = "agir.api.test_runner.TestRunner"
예제 #9
0
 def test_register_non_serializer(self):
     with self.assertRaisesMessage(ValueError, "'TestModel1' must inherit from 'BaseSerializer'."):
         MigrationWriter.register_serializer(complex, TestModel1)