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()