app/django/db/backends/postgresql_psycopg2/introspection.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Sat, 03 Oct 2009 22:17:58 +0530
changeset 3002 2c5e9cd4ba4d
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
Fix the deadline counter to start counting only after Task claim is accepted. Deadline counter used to start when the task was claimed to be requested. This commit fixes that.

from django.db.backends.postgresql.introspection import DatabaseIntrospection as PostgresDatabaseIntrospection

class DatabaseIntrospection(PostgresDatabaseIntrospection):

    def get_relations(self, cursor, table_name):
        """
        Returns a dictionary of {field_index: (field_index_other_table, other_table)}
        representing all relationships to the given table. Indexes are 0-based.
        """
        cursor.execute("""
            SELECT con.conkey, con.confkey, c2.relname
            FROM pg_constraint con, pg_class c1, pg_class c2
            WHERE c1.oid = con.conrelid
                AND c2.oid = con.confrelid
                AND c1.relname = %s
                AND con.contype = 'f'""", [table_name])
        relations = {}
        for row in cursor.fetchall():
            # row[0] and row[1] are single-item lists, so grab the single item.
            relations[row[0][0] - 1] = (row[1][0] - 1, row[2])
        return relations