diff options
Diffstat (limited to 'frontend/db')
-rw-r--r-- | frontend/db/__init__.py | 0 | ||||
-rw-r--r-- | frontend/db/backends/__init__.py | 0 | ||||
-rw-r--r-- | frontend/db/backends/afe/__init__.py | 0 | ||||
-rw-r--r-- | frontend/db/backends/afe/base.py | 22 | ||||
-rw-r--r-- | frontend/db/backends/afe/compiler.py | 32 | ||||
-rw-r--r-- | frontend/db/backends/afe/creation.py | 1 | ||||
-rw-r--r-- | frontend/db/backends/afe/introspection.py | 1 | ||||
-rw-r--r-- | frontend/db/backends/afe/validation.py | 1 |
8 files changed, 57 insertions, 0 deletions
diff --git a/frontend/db/__init__.py b/frontend/db/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/frontend/db/__init__.py diff --git a/frontend/db/backends/__init__.py b/frontend/db/backends/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/frontend/db/backends/__init__.py diff --git a/frontend/db/backends/afe/__init__.py b/frontend/db/backends/afe/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/frontend/db/backends/afe/__init__.py diff --git a/frontend/db/backends/afe/base.py b/frontend/db/backends/afe/base.py new file mode 100644 index 00000000..6d617d20 --- /dev/null +++ b/frontend/db/backends/afe/base.py @@ -0,0 +1,22 @@ +from django.db.backends.mysql.base import DatabaseCreation as MySQLCreation +from django.db.backends.mysql.base import DatabaseOperations as MySQLOperations +from django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper +from django.db.backends.mysql.base import DatabaseIntrospection as MySQLIntrospection + +try: + import MySQLdb as Database +except ImportError, e: + from django.core.exceptions import ImproperlyConfigured + raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) + + +class DatabaseOperations(MySQLOperations): + compiler_module = "autotest_lib.frontend.db.backends.afe.compiler" + + +class DatabaseWrapper(MySQLDatabaseWrapper): + def __init__(self, *args, **kwargs): + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.creation = MySQLCreation(self) + self.ops = DatabaseOperations() + self.introspection = MySQLIntrospection(self) diff --git a/frontend/db/backends/afe/compiler.py b/frontend/db/backends/afe/compiler.py new file mode 100644 index 00000000..99714155 --- /dev/null +++ b/frontend/db/backends/afe/compiler.py @@ -0,0 +1,32 @@ +from django.db.backends.mysql import compiler as mysql_compiler +from autotest_lib.frontend.afe.model_logic import _quote_name + +class SQLCompiler(mysql_compiler.SQLCompiler): + def get_from_clause(self): + from_, params = super(SQLCompiler, self).get_from_clause() + + if hasattr(self.query, "_custom_joins"): + for join_dict in self.query._custom_joins: + from_.append('%s %s AS %s ON (%s)' + % (join_dict['join_type'], + _quote_name(join_dict['table']), + _quote_name(join_dict['alias']), + join_dict['condition'])) + params.extend(join_dict['condition_values']) + + return from_, params + +class SQLInsertCompiler(mysql_compiler.SQLInsertCompiler, SQLCompiler): + pass + +class SQLDeleteCompiler(mysql_compiler.SQLDeleteCompiler, SQLCompiler): + pass + +class SQLUpdateCompiler(mysql_compiler.SQLUpdateCompiler, SQLCompiler): + pass + +class SQLAggregateCompiler(mysql_compiler.SQLAggregateCompiler, SQLCompiler): + pass + +class SQLDateCompiler(mysql_compiler.SQLDateCompiler, SQLCompiler): + pass diff --git a/frontend/db/backends/afe/creation.py b/frontend/db/backends/afe/creation.py new file mode 100644 index 00000000..955a11ed --- /dev/null +++ b/frontend/db/backends/afe/creation.py @@ -0,0 +1 @@ +from django.db.backends.mysql.creation import * diff --git a/frontend/db/backends/afe/introspection.py b/frontend/db/backends/afe/introspection.py new file mode 100644 index 00000000..222bc9b8 --- /dev/null +++ b/frontend/db/backends/afe/introspection.py @@ -0,0 +1 @@ +from django.db.backends.mysql.introspection import * diff --git a/frontend/db/backends/afe/validation.py b/frontend/db/backends/afe/validation.py new file mode 100644 index 00000000..818b34ad --- /dev/null +++ b/frontend/db/backends/afe/validation.py @@ -0,0 +1 @@ +from django.db.backends.mysql.validation import * |