X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;h=c091aa94a82c9de8f312e20066f7f9ee8e1682b8;hb=1d9d7dcb730f6f7cda560fce20dcee26ce1ed638;hp=113c38aa5fef3bf2d7a31015fa7622440ad73be4;hpb=4258a4e33218d4b6c271bd19b0a0723dba1fbed5;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 113c38aa..c091aa94 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -317,6 +317,59 @@ def get_or_set_contents_file_id(filename, session=None): __all__.append('get_or_set_contents_file_id') +def get_contents(suite, overridetype, section=None, session=None): + """ + Returns contents for a suite / overridetype combination, limiting + to a section if not None. + + @type suite: Suite + @param suite: Suite object + + @type overridetype: OverrideType + @param overridetype: OverrideType object + + @type section: Section + @param section: Optional section object to limit results to + + @type session: SQLAlchemy + @param session: Optional SQL session object (a temporary one will be + generated if not supplied) + + @rtype: ResultsProxy + @return: ResultsProxy object set up to return tuples of (filename, section, + package, arch_id) + """ + + if session is None: + session = DBConn().session() + + # find me all of the contents for a given suite + contents_q = """SELECT (p.path||'/'||n.file) AS fn, + s.section, + b.package, + b.architecture + FROM content_associations c join content_file_paths p ON (c.filepath=p.id) + JOIN content_file_names n ON (c.filename=n.id) + JOIN binaries b ON (b.id=c.binary_pkg) + JOIN override o ON (o.package=b.package) + JOIN section s ON (s.id=o.section) + WHERE o.suite = :suiteid AND o.type = :overridetypeid + AND b.type=:overridetypename""" + + vals = {'suiteid': suite.suite_id, + 'overridetypeid': overridetype.overridetype_id, + 'overridetypename': overridetype.overridetype} + + if section is not None: + contents_q += " AND s.id = :sectionid" + vals['sectionid'] = section.section_id + + contents_q += " ORDER BY fn" + + return session.execute(contents_q, vals) + +__all__.append('get_contents') + ################################################################################ class ContentFilepath(object): @@ -597,7 +650,7 @@ def get_override_type(override_type, session=None): """ if session is None: session = DBConn().session() - q = session.query(Priority).filter_by(priority=priority) + q = session.query(OverrideType).filter_by(overridetype=override_type) if q.count() == 0: return None return q.one()