X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=bd6560be2494378d79016eceded04693bf014dd8;hb=707183e8538ece020a741fee60e56c73ae3a61c6;hp=58a8783442f70a87281dc96ffabdadae6d4e05ae;hpb=2df61788f6e50073ec24d54fa17cb11a48d172cf;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index 58a87834..bd6560be 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -929,7 +929,7 @@ class Upload(object): # Parse the .dsc file try: - self.pkg.dsc.update(utils.parse_changes(dsc_filename, signing_rules=1)) + self.pkg.dsc.update(utils.parse_changes(dsc_filename, signing_rules=1, dsc_file=1)) except CantOpenError: # if not -n copy_to_holding() will have done this for us... if not action: @@ -1899,6 +1899,9 @@ distribution.""" # Make sure that our source object is up-to-date session.expire(source) + # Add changelog information to the database + self.store_changelog() + # Install the files into the pool for newfile, entry in self.pkg.files.items(): destination = os.path.join(cnf["Dir::Pool"], entry["pool name"], newfile) @@ -2672,3 +2675,26 @@ distribution.""" os.chdir(cwd) return too_new + + def store_changelog(self): + + # Skip binary-only upload if it is not a bin-NMU + if not self.pkg.changes['architecture'].has_key('source'): + from daklib.regexes import re_bin_only_nmu + if not re_bin_only_nmu.search(self.pkg.changes['version']): + return + + session = DBConn().session() + + # Add current changelog text into changelogs_text table, return created ID + query = "INSERT INTO changelogs_text (changelog) VALUES (:changelog) RETURNING id" + ID = session.execute(query, {'changelog': self.pkg.changes['changes']}).fetchone()[0] + + # Link ID to the upload available in changes table + query = """UPDATE changes SET changelog_id = :id WHERE source = :source + AND version = :version AND architecture = :architecture""" + session.execute(query, {'id': ID, 'source': self.pkg.changes['source'], \ + 'version': self.pkg.changes['version'], \ + 'architecture': " ".join(self.pkg.changes['architecture'].keys())}) + + session.commit()