def edit_project(ownername, projectname): copr = get_copr(ownername, projectname) data = rename_fields(get_form_compatible_data()) form = forms.CoprModifyForm(data, meta={'csrf': False}) if not form.validate_on_submit(): raise BadRequest(form.errors) validate_chroots(get_input_dict(), MockChrootsLogic.get_multiple()) for field in form: if field.data is None or field.name in ["csrf_token", "chroots"]: continue if field.name not in data.keys(): continue setattr(copr, field.name, field.data) if form.chroots.data: CoprChrootsLogic.update_from_names(flask.g.user, copr, form.chroots.data) try: CoprsLogic.update(flask.g.user, copr) if copr.group: # load group.id _ = copr.group.id db.session.commit() except (ActionInProgressException, InsufficientRightsException, NonAdminCannotDisableAutoPrunning) as ex: db.session.rollback() raise ex return flask.jsonify(to_dict(copr))
def test_update_from_names(self, f_users, f_coprs, f_mock_chroots, f_db): chroot_names = ["fedora-17-x86_64", "fedora-17-i386"] assert [ch.name for ch in self.c2.copr_chroots] == chroot_names CoprChrootsLogic.update_from_names(self.c2.user, self.c2, chroot_names) assert [ch.name for ch in self.c2.copr_chroots] == chroot_names chroot_names = ["fedora-17-x86_64"] CoprChrootsLogic.update_from_names(self.c2.user, self.c2, chroot_names) assert [ch.name for ch in self.c2.copr_chroots] == chroot_names
def test_update_from_names_disabled(self, f_users, f_coprs, f_mock_chroots, f_db): # Say, that fedora-17-x86_64 is outdated self.mc2.is_active = False # The fedora-17-x86_64 is not a part of the copr edit form, # because it is outdated. See #712, PR#719 CoprChrootsLogic.update_from_names(self.c2.user, self.c2, ["fedora-17-i386"]) # However, it should not be removed from the Copr assert [ch.name for ch in self.c2.copr_chroots ] == ["fedora-17-x86_64", "fedora-17-i386"]
def test_platform_chroots(self, f_users, f_coprs, f_mock_chroots_many, f_builds, f_modules, f_db): fedora_chroots = [chroot.name for chroot in self.c1.mock_chroots if chroot.name.startswith("fedora")] # Test excluding platform chroots CoprChrootsLogic.update_from_names(self.u1, self.c1, fedora_chroots) generator = ModulemdGenerator(name="testmodule", stream="master", version=123, summary="some summary") generator.mmd.set_buildrequires({"platform": "-f22"}) facade = ModuleBuildFacade(self.u1, self.c1, generator.generate(), "testmodule.yaml") assert {chroot.name for chroot in self.c1.active_chroots} == set(fedora_chroots) assert ("fedora-22-i386" not in facade.platform_chroots) and ("fedora-22-x86_64" in fedora_chroots) assert ("fedora-22-x86_64" not in facade.platform_chroots) and ("fedora-22-x86_64" in fedora_chroots) # Test setting platform chroots from scratch CoprChrootsLogic.update_from_names(self.u1, self.c1, fedora_chroots) generator = ModulemdGenerator(name="testmodule", stream="master", version=123, summary="some summary") generator.mmd.set_buildrequires({"platform": "f22"}) facade = ModuleBuildFacade(self.u1, self.c1, generator.generate(), "testmodule.yaml") assert {chroot.name for chroot in self.c1.active_chroots} == set(fedora_chroots) assert set(facade.platform_chroots) == {"fedora-22-i386", "fedora-22-x86_64"}