def convert_packagelistingacl(pkg1_sess, pkg2_sess): ''' Convert the PackageListingAcl from pkgdb1 to pkgdb2. ''' cnt = 0 total = pkg1_sess.query(P1PersonPackagelistingAcl).count() done = set() widgets = [ 'ACLs: ', Percentage(), ' ', Bar(marker=RotatingMarker()), ' ', ETA() ] pbar = ProgressBar(widgets=widgets, maxval=total).start() for pkg in pkg1_sess.query(P1PersonPackagelistingAcl).all(): if pkg.acl in ('build', 'checkout'): continue person = pkg1_sess.query(P1PersonPackagelisting).filter( P1PersonPackagelisting.id == pkg.personpackagelistingid).one() new_pkglistacl = model.PackageListingAcl( fas_name=person.username, packagelisting_id=person.packagelistingid, acl=pkg.acl, status=STATUS[pkg.statuscode]) try: pkg2_sess.add(new_pkglistacl) pkg2_sess.commit() except sqlalchemy.exc.IntegrityError, err: # print err pkg2_sess.rollback() cnt += 1 pbar.update(cnt)
def convert_packagelisting(pkg1_sess, pkg2_sess): ''' Convert the PackageListing from pkgdb1 to pkgdb2. ''' cnt = 0 failed_pkg = set() failed_pkglist = set() for pkg in pkg1_sess.query(P1Packagelisting).all(): poc = pkg.owner if poc == 'perl-sig': poc = 'group::perl-sig' new_pkglist = model.PackageListing(point_of_contact=poc, status=STATUS[pkg.statuscode], package_id=pkg.packageid, collection_id=pkg.collectionid, critpath=pkg.critpath) new_pkglist.id = pkg.id pkg2_sess.add(new_pkglist) if new_pkglist.point_of_contact != 'orphan': acls = ['watchcommits', 'watchbugzilla', 'commit', 'approveacls'] if new_pkglist.point_of_contact == 'group::perl-sig': acls = ['watchcommits', 'watchbugzilla', 'commit'] for acl in acls: new_pkglistacl = model.PackageListingAcl( fas_name=new_pkglist.point_of_contact, packagelisting_id=new_pkglist.id, acl=acl, status='Approved') pkg2_sess.add(new_pkglistacl) try: pkg2_sess.commit() except Exception, err: pkg2_sess.rollback() failed_pkg.add(str(pkg.packageid)) failed_pkglist.add(str(new_pkglist.id)) cnt += 1
def set_group_acls(self): ''' Create some Group ACLs. ''' fedocal_pkg = model.Package.by_name(self.session, 'rpms', 'fedocal') devel_collec = model.Collection.by_name(self.session, 'master') f18_collec = model.Collection.by_name(self.session, 'f18') pklist_fedocal_f18 = model.PackageListing.by_pkgid_collectionid( self.session, fedocal_pkg.id, f18_collec.id) pklist_fedocal_devel = model.PackageListing.by_pkgid_collectionid( self.session, fedocal_pkg.id, devel_collec.id) packager = model.PackageListingAcl( fas_name='group::infra-sig', packagelisting_id=pklist_fedocal_f18.id, acl='commit', status='Approved', ) self.session.add(packager) packager = model.PackageListingAcl( fas_name='group::infra-sig', packagelisting_id=pklist_fedocal_devel.id, acl='commit', status='Approved', ) self.session.add(packager) packager = model.PackageListingAcl( fas_name='group::infra-sig', packagelisting_id=pklist_fedocal_f18.id, acl='watchbugzilla', status='Approved', ) self.session.add(packager) packager = model.PackageListingAcl( fas_name='group::infra-sig', packagelisting_id=pklist_fedocal_devel.id, acl='watchbugzilla', status='Approved', ) self.session.add(packager) self.session.commit()
def test_unwatch_package(self, bz_mail_func, login_func, mock_func): """ Test the unwatch_package function. """ login_func.return_value = None bz_mail_func.return_value = 1 create_package_acl(self.session) user = FakeFasUser() mock_func.return_value = ['pingou', 'ralph', 'kevin'] with user_set(pkgdb2.APP, user): output = self.app.get('/acl/rpms/guake/unwatch/', follow_redirects=True) self.assertEqual(output.status_code, 405) with user_set(pkgdb2.APP, user): output = self.app.get('/package/rpms/guake/') csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} output = self.app.post('/acl/rpms/guake/unwatch/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertTrue( '<li class="error">You cannot remove `Watch*` ACLs from ' 'the Point of Contact.</li>' in output.data) output = self.app.post('/acl/rpms/random/unwatch/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertTrue( '<li class="error">No package found by this name</li>' in output.data) # Give watchbugzilla to ralph on guake/master guake_pkg = model.Package.by_name(self.session, 'rpms', 'guake') devel_collec = model.Collection.by_name(self.session, 'master') pklist_guake_devel = model.PackageListing.by_pkgid_collectionid( self.session, guake_pkg.id, devel_collec.id) packager = model.PackageListingAcl( fas_name='ralph', packagelisting_id=pklist_guake_devel.id, acl='watchbugzilla', status='Approved', ) self.session.add(packager) self.session.commit() # Drop watch* for ralph user.username = '******' with user_set(pkgdb2.APP, user): output = self.app.get('/package/rpms/guake/') csrf_token = output.data.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} output = self.app.post('/acl/rpms/guake/unwatch/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertTrue( '<li class="message">ACLs updated</li>' in output.data) output = self.app.post('/acl/rpms/random/unwatch/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertTrue( '<li class="error">No package found by this name</li>' in output.data)
def create_package_acl2(session): """ Add packagers to packages. """ create_package_listing(session) guake_pkg = model.Package.by_name(session, 'guake') fedocal_pkg = model.Package.by_name(session, 'fedocal') geany_pkg = model.Package.by_name(session, 'geany') f17_collec = model.Collection.by_name(session, 'f17') f18_collec = model.Collection.by_name(session, 'f18') devel_collec = model.Collection.by_name(session, 'master') pklist_guake_f18 = model.PackageListing.by_pkgid_collectionid( session, guake_pkg.id, f18_collec.id) pklist_guake_devel = model.PackageListing.by_pkgid_collectionid( session, guake_pkg.id, devel_collec.id) pkglist_geany_devel = model.PackageListing.by_pkgid_collectionid( session, geany_pkg.id, devel_collec.id) pkglist_fedocal_devel = model.PackageListing.by_pkgid_collectionid( session, fedocal_pkg.id, devel_collec.id) pkglist_fedocal_f18 = model.PackageListing.by_pkgid_collectionid( session, fedocal_pkg.id, f18_collec.id) pkglist_fedocal_f17 = model.PackageListing.by_pkgid_collectionid( session, fedocal_pkg.id, f17_collec.id) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_f18.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_f18.id, acl='watchcommits', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='watchcommits', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='toshio', packagelisting_id=pklist_guake_devel.id, acl='commit', status='Awaiting Review', ) session.add(packager) packager = model.PackageListingAcl( fas_name='spot', packagelisting_id=pklist_guake_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='spot', packagelisting_id=pklist_guake_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='group::gtk-sig', packagelisting_id=pkglist_geany_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='group::gtk-sig', packagelisting_id=pkglist_geany_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_geany_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_fedocal_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='toshio', packagelisting_id=pkglist_fedocal_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_fedocal_f18.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_fedocal_f18.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_fedocal_f17.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pkglist_fedocal_f17.id, acl='watchbugzilla', status='Approved', ) session.add(packager) session.commit()
def create_package_acl(session): """ Add packagers to packages. """ create_package_listing(session) guake_pkg = model.Package.by_name(session, 'guake') geany_pkg = model.Package.by_name(session, 'geany') offlineimap_pkg = model.Package.by_name(session, 'offlineimap') el4_collec = model.Collection.by_name(session, 'el4') f18_collec = model.Collection.by_name(session, 'f18') devel_collec = model.Collection.by_name(session, 'master') pklist_guake_f18 = model.PackageListing.by_pkgid_collectionid( session, guake_pkg.id, f18_collec.id) pklist_guake_devel = model.PackageListing.by_pkgid_collectionid( session, guake_pkg.id, devel_collec.id) pkglist_geany_devel = model.PackageListing.by_pkgid_collectionid( session, geany_pkg.id, devel_collec.id) pkglist_offlineimap_el4 = model.PackageListing.by_pkgid_collectionid( session, offlineimap_pkg.id, el4_collec.id) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_f18.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_f18.id, acl='watchcommits', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='approveacls', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=pklist_guake_devel.id, acl='watchcommits', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='toshio', packagelisting_id=pklist_guake_devel.id, acl='commit', status='Awaiting Review', ) session.add(packager) packager = model.PackageListingAcl( fas_name='ralph', packagelisting_id=pklist_guake_devel.id, acl='approveacls', status='Awaiting Review', ) session.add(packager) packager = model.PackageListingAcl( fas_name='group::gtk-sig', packagelisting_id=pkglist_geany_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='josef', packagelisting_id=pkglist_geany_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='josef', packagelisting_id=pkglist_geany_devel.id, acl='approveacls', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='josef', packagelisting_id=pkglist_geany_devel.id, acl='watchcommits', status='Approved', ) session.add(packager) # offlineimap packager = model.PackageListingAcl( fas_name='dodji', packagelisting_id=pkglist_offlineimap_el4.id, status='Approved', acl='commit', ) session.add(packager) packager = model.PackageListingAcl( fas_name='dodji', packagelisting_id=pkglist_offlineimap_el4.id, acl='approveacls', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='dodji', packagelisting_id=pkglist_offlineimap_el4.id, acl='watchcommits', status='Approved', ) session.add(packager) session.commit()
def create_docker_packages(session): """ Add packagers to packages. """ # Add packages cockpit_pkg = model.Package( name='cockpit', namespace='docker', summary='Server Management GUI', description='Server Management...', status='Approved', review_url='https://bugzilla.redhat.com/450189', upstream_url='http://cockpit.io', monitor=False, ) session.add(cockpit_pkg) fedocal_pkg = model.Package( name='fedocal', namespace='docker', summary='A web-based calendar for Fedora', description='Web calendar ...', status='Approved', review_url='https://bugzilla.redhat.com/915074', upstream_url='http://fedorahosted.org/fedocal', monitor=False, ) session.add(fedocal_pkg) session.commit() devel_collec = model.Collection.by_name(session, 'master') # Add PackageListing # Pkg: cockpit - Collection: devel - Approved pkgltg = model.PackageListing( point_of_contact='puiterwijk', status='Approved', package_id=cockpit_pkg.id, collection_id=devel_collec.id, ) session.add(pkgltg) # Pkg: guake - Collection: devel - Approved pkgltg = model.PackageListing( point_of_contact='pingou', status='Approved', package_id=fedocal_pkg.id, collection_id=devel_collec.id, ) session.add(pkgltg) session.commit() # Add PackageListingAcl cockpit_devel = model.PackageListing.by_pkgid_collectionid( session, cockpit_pkg.id, devel_collec.id) fedocal_devel = model.PackageListing.by_pkgid_collectionid( session, fedocal_pkg.id, devel_collec.id) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=cockpit_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=cockpit_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=fedocal_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=fedocal_devel.id, acl='watchcommits', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='pingou', packagelisting_id=fedocal_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='toshio', packagelisting_id=fedocal_devel.id, acl='commit', status='Awaiting Review', ) session.add(packager) packager = model.PackageListingAcl( fas_name='spot', packagelisting_id=fedocal_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='group::gtk-sig', packagelisting_id=cockpit_devel.id, acl='commit', status='Approved', ) session.add(packager) packager = model.PackageListingAcl( fas_name='group::gtk-sig', packagelisting_id=cockpit_devel.id, acl='watchbugzilla', status='Approved', ) session.add(packager) session.commit()