import shutil
import subprocess
from sqlalchemy.orm.exc import NoResultFound
+import sqlalchemy.exc
import tempfile
import traceback
Will not give an error when the file is already present.
@rtype: L{daklib.dbconn.PoolFile}
- @return: batabase object for the new file
+ @return: database object for the new file
"""
session = self.session
continue
fs.copy(src, dst, mode=0o640)
- source = self.changes.source
+ source = None
+ try:
+ source = self.changes.source
+ except Exception:
+ # Do not raise an exception here if the .dsc is invalid.
+ pass
+
if source is not None:
for f in source.files.itervalues():
src = os.path.join(self.original_directory, f.filename)
db_changes.changelog_id = changelog_id
db_changes.closes = self.changes.closed_bugs
- self.transaction.session.add(db_changes)
- self.transaction.session.flush()
+ try:
+ self.transaction.session.add(db_changes)
+ self.transaction.session.flush()
+ except sqlalchemy.exc.IntegrityError:
+ raise ArchiveException('{0} is already known.'.format(self.changes.filename))
return db_changes