예제 #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 _get_index_expressions(self, model, schema_editor):
     if not self.expressions:
         return None
     index_expressions = []
     for expression in self.expressions:
         index_expression = IndexExpression(expression)
         index_expression.set_wrapper_classes(schema_editor.connection)
         index_expressions.append(index_expression)
     return ExpressionList(*index_expressions).resolve_expression(
         Query(model, alias_cols=False), )
예제 #3
0
 def setUp(self):
     compiler = Person.objects.all().query.get_compiler(connection.alias)
     self.editor = connection.schema_editor()
     self.expressions = Expressions(
         table=Person._meta.db_table,
         expressions=ExpressionList(
             IndexExpression(F('first_name')),
             IndexExpression(F('last_name').desc()),
             IndexExpression(Upper('last_name')),
         ).resolve_expression(compiler.query),
         compiler=compiler,
         quote_value=self.editor.quote_value,
     )
예제 #4
0
 def test_rename_table_references_without_alias(self):
     compiler = Query(Person,
                      alias_cols=False).get_compiler(connection=connection)
     table = Person._meta.db_table
     expressions = Expressions(
         table=table,
         expressions=ExpressionList(
             IndexExpression(Upper('last_name')),
             IndexExpression(F('first_name')),
         ).resolve_expression(compiler.query),
         compiler=compiler,
         quote_value=self.editor.quote_value,
     )
     expressions.rename_table_references(table, 'other')
     self.assertIs(expressions.references_table(table), False)
     self.assertIs(expressions.references_table('other'), True)
     expected_str = '(UPPER(%s)), %s' % (
         self.editor.quote_name('last_name'),
         self.editor.quote_name('first_name'),
     )
     self.assertEqual(str(expressions), expected_str)