import os
import psycopg2
-import psycopg2.extras
import traceback
from singleton import Singleton
return self.db_con.commit()
## Get functions
- def __get_single_row(self, query, values):
- c = self.db_con.cursor(cursor_factory=psycopg2.extras.DictCursor)
- c.execute(query, values)
-
- if c.rowcount < 1:
- return None
-
- res = c.fetchone()
-
- return res
-
def __get_single_id(self, query, values, cachename=None):
# This is a bit of a hack but it's an internal function only
if cachename is not None:
return self.__get_single_id("SELECT id FROM source s WHERE s.source=%(source)s AND s.version=%(version)s",
{'source': source, 'version': version}, cachename='source')
- def get_suite(self, suite):
- if isinstance(suite, str):
- suite_id = self.get_suite_id(suite.lower())
- elif type(suite) == int:
- suite_id = suite
-
- return self.__get_single_row("SELECT * FROM suite WHERE id = %(id)s",
- {'id': suite_id})
-
def get_suite_version(self, source, suite):
"""
Returns database id for a combination of C{source} and C{suite}.
traceback.print_exc()
c.execute("ROLLBACK")
return False
-
-################################################################################
-
-class Suite(object):
- # This should be kept in sync with the suites table;
- # we should probably just do introspection on the table
- # (or maybe use an ORM)
- _fieldnames = ['announce', 'changelogbase', 'codename', 'commentsdir',
- 'copychanges', 'copydotdak', 'description', 'id',
- 'label', 'notautomatic', 'origin', 'overridecodename',
- 'overridesuite', 'policy_engine', 'priority', 'suite_name',
- 'untouchable', 'validtime', 'version']
-
- def __init_fields(self):
- for k in self._fieldnames:
- setattr(self, k, None)
-
- def __init__(self, suite):
- self.__init_fields()
- if suite is not None:
- db_conn = DBConn()
- suite_data = db_conn.get_suite(suite)
- if suite_data is not None:
- for k in suite_data.keys():
- setattr(self, k, suite_data[k])
-
-
-