本文整理汇总了Python中coprs.logic.complex_logic.ComplexLogic类的典型用法代码示例。如果您正苦于以下问题:Python ComplexLogic类的具体用法?Python ComplexLogic怎么用?Python ComplexLogic使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ComplexLogic类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: wrapper
def wrapper(username, coprname, **kwargs):
if username.startswith("@"):
group_name = username[1:]
copr = ComplexLogic.get_group_copr_safe(group_name, coprname)
else:
copr = ComplexLogic.get_copr_safe(username, coprname)
return f(copr, **kwargs)
示例2: wrapper
def wrapper(**kwargs):
coprname = kwargs.pop("coprname")
if "group_name" in kwargs:
group_name = kwargs.pop("group_name")
copr = ComplexLogic.get_group_copr_safe(group_name, coprname, with_mock_chroots=True)
else:
username = kwargs.pop("username")
copr = ComplexLogic.get_copr_safe(username, coprname, with_mock_chroots=True)
return f(copr, **kwargs)
示例3: build_detail
def build_detail(build_id):
build = ComplexLogic.get_build_safe(build_id)
chroots = {}
results_by_chroot = {}
for chroot in build.build_chroots:
chroots[chroot.name] = chroot.state
results_by_chroot[chroot.name] = chroot.result_dir_url
built_packages = None
if build.built_packages:
built_packages = build.built_packages.split("\n")
output = {
"output": "ok",
"status": build.state,
"project": build.copr.name,
"owner": build.copr.user.name,
"results": build.results,
"built_pkgs": built_packages,
"src_version": build.pkg_version,
"chroots": chroots,
"submitted_on": build.submitted_on,
"started_on": build.min_started_on,
"ended_on": build.max_ended_on,
"src_pkg": build.pkgs,
"submitted_by": build.user.name,
"results_by_chroot": results_by_chroot
}
return flask.jsonify(output)
示例4: factory
def factory(**build_options):
source_build = ComplexLogic.get_build_safe(build_id)
BuildsLogic.create_new_from_other_build(
flask.g.user, copr, source_build,
chroot_names=form.selected_chroots,
**build_options
)
示例5: webhooks_hello
def webhooks_hello(copr_id, uuid):
# For the documentation of the data we receive see:
# https://developer.github.com/v3/activity/events/types/#pushevent
try:
copr = ComplexLogic.get_copr_by_id_safe(copr_id)
except ObjectNotFound:
return page_not_found("Project does not exist")
if copr.webhook_secret != uuid:
return access_restricted("This webhook is not valid")
try:
request_json = flask.request.json
clone_url = request_json["repository"]["clone_url"]
except KeyError:
return "Bad Request", 400
if "commits" in request_json:
commits = request_json["commits"]
else:
commits = []
packages = PackagesLogic.get_for_webhook_rebuild(copr_id, uuid, clone_url, commits)
for package in packages:
BuildsLogic.rebuild_package(package)
db.session.commit()
return "OK", 200
示例6: process_rebuild
def process_rebuild(copr, build_id, view, url_on_success):
source_build = ComplexLogic.get_build_safe(build_id)
form = forms.BuildFormRebuildFactory.create_form_cls(copr.active_chroots)()
if form.validate_on_submit():
try:
build_options = {
"enable_net": form.enable_net.data,
"timeout": form.timeout.data,
}
BuildsLogic.create_new_from_other_build(
flask.g.user, copr, source_build,
chroot_names=form.selected_chroots,
**build_options
)
except (ActionInProgressException, InsufficientRightsException) as e:
flask.flash(str(e), "error")
db.session.rollback()
else:
flask.flash("New build has been created", "success")
db.session.commit()
return flask.redirect(url_on_success)
else:
return render_add_build(copr, form, view)
示例7: process_copr_repeat_build
def process_copr_repeat_build(build_id, copr):
build = ComplexLogic.get_build_safe(build_id)
if not flask.g.user.can_build_in(build.copr):
flask.flash("You are not allowed to repeat this build.")
form = forms.BuildFormRebuildFactory.create_form_cls(build.chroots)(
build_id=build_id, enable_net=build.enable_net,
)
# remove all checkboxes by default
for ch in build.chroots:
field = getattr(form, ch.name)
field.data = False
chroot_to_build = request.args.get("chroot")
app.logger.debug("got param chroot: {}".format(chroot_to_build))
if chroot_to_build:
# set single checkbox if chroot query arg was provided
if hasattr(form, chroot_to_build):
getattr(form, chroot_to_build).data = True
else:
# set checkbox on the failed chroots
chroots_to_select = set(ch.name for ch in build.get_chroots_by_status([
helpers.StatusEnum('failed'), helpers.StatusEnum('canceled'),
]))
for ch in build.chroots:
if ch.name in chroots_to_select:
getattr(form, ch.name).data = True
return flask.render_template(
"coprs/detail/add_build/rebuild.html",
copr=copr, build=build, form=form)
示例8: group_copr_new
def group_copr_new(group_name):
group = ComplexLogic.get_group_by_name_safe(group_name)
form = forms.CoprFormFactory.create_form_cls(group=group)()
if form.validate_on_submit():
copr = coprs_logic.CoprsLogic.add(
flask.g.user,
name=form.name.data,
homepage=form.homepage.data,
contact=form.contact.data,
repos=form.repos.data.replace("\n", " "),
selected_chroots=form.selected_chroots,
description=form.description.data,
instructions=form.instructions.data,
disable_createrepo=form.disable_createrepo.data,
build_enable_net=form.build_enable_net.data,
group=group
)
db.session.add(copr)
db.session.commit()
after_the_project_creation(copr, form)
return flask.redirect(url_for_copr_details(copr))
else:
return flask.render_template("coprs/group_add.html", form=form, group=group)
示例9: copr_edit_package
def copr_edit_package(copr, package_name, source_type=None, **kwargs):
package = ComplexLogic.get_package_safe(copr, package_name)
data = package.source_json_dict
data["webhook_rebuild"] = package.webhook_rebuild
if package.source_type and not source_type:
source_type = package.source_type_text
elif not source_type:
source_type = "git_and_tito"
form_classes = {
"git_and_tito": forms.PackageFormTito,
"mock_scm": forms.PackageFormMock,
"pypi": forms.PackageFormPyPI,
}
form = {k: v(formdata=None) for k, v in form_classes.items()}
if "form" in kwargs:
form[kwargs["form"].source_type.data] = kwargs["form"]
elif package.source_type:
if package.source_type_text == "git_and_tito" and "git_dir" in data:
data["git_directory"] = data["git_dir"] # @FIXME workaround
form[package.source_type_text] = form_classes[package.source_type_text](data=data)
return flask.render_template("coprs/detail/package_edit.html", package=package, copr=copr,
source_type=source_type, view="coprs_ns.copr_edit_package",
form_tito=form["git_and_tito"], form_mock=form["mock_scm"], form_pypi=form["pypi"])
示例10: reschedule_build_chroot
def reschedule_build_chroot():
response = {}
if "build_id" in flask.request.json and "chroot" in flask.request.json:
build = ComplexLogic.get_build_safe(flask.request.json["build_id"])
else:
response["result"] = "bad request"
response["msg"] = "Request missing `build_id` and/or `chroot`"
return flask.jsonify(response)
if build:
if build.canceled:
response["result"] = "noop"
response["msg"] = "build was cancelled, ignoring"
else:
chroot = flask.request.json["chroot"]
build_chroot = build.chroots_dict_by_name.get(chroot)
run_statuses = set([StatusEnum("starting"), StatusEnum("running")])
if build_chroot and build_chroot.status in run_statuses:
log.info("rescheduling build {} chroot: {}".format(build.id, build_chroot.name))
BuildsLogic.update_state_from_dict(build, {
"chroot": chroot,
"status": StatusEnum("pending")
})
db.session.commit()
response["result"] = "done"
else:
response["result"] = "noop"
response["msg"] = "build is not in running states, ignoring"
else:
response["result"] = "noop"
response["msg"] = "Build {} wasn't found".format(flask.request.json["build_id"])
return flask.jsonify(response)
示例11: list_projects_by_group
def list_projects_by_group(group_name, page=1):
group = ComplexLogic.get_group_by_name_safe(group_name)
query = CoprsLogic.get_multiple_by_group_id(group.id)
paginator = Paginator(query, query.count(), page)
coprs = paginator.sliced_query
return render_template(
"coprs/show/group.html",
user=flask.g.user,
coprs=coprs,
paginator=paginator,
tasks_info=ComplexLogic.get_queues_size(),
group=group
)
示例12: process_delete
def process_delete(copr, url_on_error, url_on_success):
form = forms.CoprDeleteForm()
if form.validate_on_submit():
try:
ComplexLogic.delete_copr(copr)
except (exceptions.ActionInProgressException,
exceptions.InsufficientRightsException) as e:
db.session.rollback()
flask.flash(str(e), "error")
return flask.redirect(url_on_error)
else:
db.session.commit()
flask.flash("Project has been deleted successfully.")
return flask.redirect(url_on_success)
else:
return render_template("coprs/detail/settings/delete.html", form=form, copr=copr)
示例13: copr_createrepo
def copr_createrepo(copr_id):
copr = ComplexLogic.get_copr_by_id_safe(copr_id)
chroots = [c.name for c in copr.active_chroots]
actions_logic.ActionsLogic.send_createrepo(
username=('@'+copr.group.name if copr.is_a_group_project else copr.user.name), coprname=copr.name,
chroots=chroots)
db.session.commit()
flask.flash("Repository metadata will be regenerated in a few minutes ...")
return flask.redirect(url_for_copr_details(copr))
示例14: cancel_build
def cancel_build(build_id):
build = ComplexLogic.get_build_safe(build_id)
try:
builds_logic.BuildsLogic.cancel_build(flask.g.user, build)
db.session.commit()
except exceptions.InsufficientRightsException as e:
raise LegacyApiError("Invalid request: {}".format(e))
output = {'output': 'ok', 'status': "Build canceled"}
return flask.jsonify(output)
示例15: copr_delete_build
def copr_delete_build(username, coprname, build_id):
build = ComplexLogic.get_build_safe(build_id)
try:
builds_logic.BuildsLogic.delete_build(flask.g.user, build)
except (InsufficientRightsException, ActionInProgressException) as e:
flask.flash(str(e), "error")
else:
db.session.commit()
flask.flash("Build has been deleted successfully.", "success")
return flask.redirect(url_for_copr_builds(build.copr))