def test_api_create_copr_ok_all(self, f_users, f_mock_chroots, f_db): self.db.session.add_all([self.u1, self.mc1]) self.tc.post("/api/new/") content = { "name": self.copr_name, self.mc1.name: "y", "repos": self.repos, "initial_pkgs": self.initial_pkgs, "description": self.description, "instructions": self.instructions } content_encoded = json.dumps(content) with pytest.raises(sqlalchemy.orm.exc.NoResultFound): CoprsLogic.get(self.u1.name, self.copr_name).one() r = self.post_api_with_auth( "/api/coprs/{}/new/".format(self.u1.name), content_encoded ) response = json.loads(r.data.decode("utf-8")) assert "New project was successfully created" in response["message"] copr = self.models.Copr.query.filter(self.models.Copr.name == self.copr_name).one() assert copr.name == self.copr_name assert [self.mc1.name] == [c.name for c in copr.active_chroots] assert copr.repos == self.repos assert copr.owner.id == self.u1.id assert copr.description == self.description assert copr.instructions == self.instructions
def test_api_create_copr_ok_all(self, f_users, f_mock_chroots, f_db): self.db.session.add_all([self.u1, self.mc1]) self.tc.post("/api/new/") content = { "name": self.copr_name, self.mc1.name: "y", "repos": self.repos, "initial_pkgs": self.initial_pkgs, "description": self.description, "instructions": self.instructions } content_encoded = json.dumps(content) with pytest.raises(sqlalchemy.orm.exc.NoResultFound): CoprsLogic.get(None, self.u1.name, self.copr_name).one() r = self.post_api_with_auth("/api/coprs/{}/new/".format(self.u1.name), content_encoded) response = json.loads(r.data) assert "New project was successfully created" in response["message"] copr = self.models.Copr.query.filter( self.models.Copr.name == self.copr_name).one() assert copr.name == self.copr_name assert [self.mc1.name] == [c.name for c in copr.active_chroots] assert copr.repos == self.repos assert copr.owner.id == self.u1.id assert copr.description == self.description assert copr.instructions == self.instructions
def test_re_enable_auto_createrepo_produce_action(self, f_users, f_coprs, f_mock_chroots, f_db): self.db.session.add_all( [self.u1, self.c1, self.mc1, self.mc2, self.mc3]) username = self.u1.name coprname = self.c1.name copr_id = self.c1.id chroot = self.mc1.name # 1.ensure ACR enabled self.db.session.commit() c1_actual = CoprsLogic.get(self.u1.name, self.c1.name).one() assert c1_actual.auto_createrepo # 1. disabling ACR self.test_client.post("/coprs/{0}/{1}/update/".format( username, coprname), data={ "name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": True }, follow_redirects=True) self.db.session.commit() # check current status c1_actual = CoprsLogic.get(username, coprname).one() assert not c1_actual.auto_createrepo # no actions issued before assert len(ActionsLogic.get_many().all()) == 0 # 2. enabling ACR self.test_client.post("/coprs/{0}/{1}/update/".format( username, coprname), data={ "name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": "false" }, follow_redirects=True) self.db.session.commit() c1_actual = CoprsLogic.get(username, coprname).one() # ACR enabled assert c1_actual.auto_createrepo # added action assert len(ActionsLogic.get_many().all()) > 0 action = ActionsLogic.get_many( action_type=ActionTypeEnum("createrepo")).one() data_dict = json.loads(action.data) assert data_dict["username"] == username assert data_dict["projectname"] == coprname
def test_re_enable_auto_createrepo_produce_action( self, f_users, f_coprs, f_mock_chroots, f_db): self.db.session.add_all( [self.u1, self.c1, self.mc1, self.mc2, self.mc3]) username = self.u1.name coprname = self.c1.name copr_id = self.c1.id chroot = self.mc1.name # 1.ensure ACR enabled self.db.session.commit() c1_actual = CoprsLogic.get(self.u1.name, self.c1.name).one() assert c1_actual.auto_createrepo # 1. disabling ACR self.test_client.post( "/coprs/{0}/{1}/update/".format(username, coprname), data={"name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": True}, follow_redirects=True ) self.db.session.commit() # check current status c1_actual = CoprsLogic.get(username, coprname).one() assert not c1_actual.auto_createrepo # no actions issued before assert len(ActionsLogic.get_many().all()) == 0 # 2. enabling ACR self.test_client.post( "/coprs/{0}/{1}/update/".format(username, coprname), data={"name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": "false"}, follow_redirects=True ) self.db.session.commit() c1_actual = CoprsLogic.get(username, coprname).one() # ACR enabled assert c1_actual.auto_createrepo # added action assert len(ActionsLogic.get_many().all()) > 0 action = ActionsLogic.get_many(action_type=ActionTypeEnum("createrepo")).one() data_dict = json.loads(action.data) assert data_dict["username"] == username assert data_dict["projectname"] == coprname
def copr_fork_post(copr): form = forms.CoprForkFormFactory.create_form_cls(copr=copr, user=flask.g.user, groups=flask.g.user.user_groups)() if form.validate_on_submit(): dstgroup = ([g for g in flask.g.user.user_groups if g.at_name == form.owner.data] or [None])[0] if flask.g.user.name != form.owner.data and not dstgroup: return generic_error("There is no such group: {}".format(form.owner.data)) fcopr = CoprsLogic.get_by_group_id(dstgroup.id, form.name.data).first() if dstgroup \ else CoprsLogic.filter_without_group_projects(CoprsLogic.get(flask.g.user.name, form.name.data)).first() if not fcopr: fcopr = ComplexLogic.fork_copr(copr, flask.g.user, dstname=form.name.data, dstgroup=dstgroup) db.session.commit() flask.flash("Forking project {} for you into {}. Please be aware that it may take a few minutes " "to duplicate a backend data.".format(copr.full_name, fcopr.full_name)) return flask.redirect(url_for_copr_details(fcopr)) return render_copr_fork(copr, form)
#!/usr/bin/python import sys sys.path.append("/usr/share/copr/coprs_frontend") from coprs.logic.actions_logic import ActionsLogic from coprs.logic.coprs_logic import CoprsLogic from coprs import db USER = "******" PROJECT = "someproject" fcopr = CoprsLogic.get(USER, PROJECT).first() ActionsLogic.send_create_gpg_key(fcopr) db.session.commit() print("Done")