def create_patchset(cls, patching_data, name=None): """ patching_data is a dict filename-> (old,new)""" if name == None: name = 'Unamed' print 'Building Patchset' patchset = PatchSet(name=name, release_date=datetime.datetime.now()) for (filename, (original, modified)) in patching_data.items(): try: diffs = list(difflib.unified_diff(original.splitlines(True), modified.splitlines(True))) patch = ''.join(diffs) print ' - (%d) %s' % (len(diffs), filename) patch = Patch(target_filename=filename, patch_data=patch) patchset.patches.append(patch) session.add(patchset) session.commit() except sqlalchemy.exc.ProgrammingError: print("Error Adding patchset for: %s"%filename) session.rollback() session.add(patchset) session.commit() return patchset
def clear_empty_patchsets(cls): for ps in session.query(PatchSet).all(): if len(ps.patches) == 0: session.delete(ps) session.commit()