Trees | Indices | Help |
---|
|
1 import time 2 3 import flask 4 5 from coprs import db 6 from coprs import exceptions 7 from coprs import forms 8 from coprs import helpers 9 from coprs import models 10 11 from coprs.logic import builds_logic 12 from coprs.logic import coprs_logic 13 14 from coprs.views.misc import login_required, page_not_found 15 from coprs.views.coprs_ns import coprs_ns 16 from coprs.views.coprs_ns import coprs_general17 18 19 @coprs_ns.route('/<username>/<coprname>/builds/', defaults={'page': 1}) 20 @coprs_ns.route('/<username>/<coprname>/builds/<int:page>/') 21 -def copr_builds(username, coprname, page=1):22 copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first() 23 24 if not copr: # hey, this Copr doesn't exist 25 return page_not_found('Copr with name {0} does not exist.'.format(coprname)) 26 27 builds_query = builds_logic.BuildsLogic.get_multiple(flask.g.user, copr=copr) 28 29 paginator = helpers.Paginator(builds_query, copr.build_count, page, per_page_override = 10) 30 return flask.render_template('coprs/detail/builds.html', copr=copr, builds=paginator.sliced_query, paginator=paginator)3132 33 @coprs_ns.route('/<username>/<coprname>/add_build/') 34 @login_required 35 -def copr_add_build(username, coprname, form=None):36 copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first() 37 38 if not copr: # hey, this Copr doesn't exist 39 return page_not_found('Copr with name {0} does not exist.'.format(coprname)) 40 41 if not form: 42 form = forms.BuildForm() 43 44 return flask.render_template('coprs/detail/add_build.html', copr=copr, form=form)4546 47 @coprs_ns.route('/<username>/<coprname>/new_build/', methods = ["POST"]) 48 @login_required 49 -def copr_new_build(username, coprname):50 form = forms.BuildForm() 51 copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first() 52 if not copr: # hey, this Copr doesn't exist 53 return page_not_found('Copr with name {0} does not exist.'.format(coprname)) 54 55 if form.validate_on_submit() and flask.g.user.can_build_in(copr): 56 try: 57 build = builds_logic.BuildsLogic.add(user=flask.g.user, 58 pkgs=form.pkgs.data.replace('\n', ' '), 59 copr=copr) # we're checking authorization above for now 60 if flask.g.user.proven: 61 build.memory_reqs = form.memory_reqs.data 62 build.timeout = form.timeout.data 63 except exceptions.ActionInProgressException as e: 64 flask.flash(e) 65 db.session.rollback() 66 else: 67 flask.flash("Build was added") 68 db.session.commit() 69 70 return flask.redirect(flask.url_for('coprs_ns.copr_builds', username=username, coprname=copr.name)) 71 else: 72 return copr_add_build(username=username, coprname=coprname, form=form)7374 75 @coprs_ns.route('/<username>/<coprname>/cancel_build/<int:build_id>/', methods = ['POST']) 76 @login_required 77 -def copr_cancel_build(username, coprname, build_id):78 # only the user who ran the build can cancel it 79 build = builds_logic.BuildsLogic.get(flask.g.user, build_id).first() 80 if not build: # hey, this Build doesn't exist 81 return page_not_found('Build with id {0} does not exist.'.format(build_id)) 82 try: 83 builds_logic.BuildsLogic.cancel_build(flask.g.user, build) 84 except exceptions.InsufficientRightsException as ex: 85 flask.flash(ex.message) 86 else: 87 db.session.commit() 88 flask.flash('Build was canceled') 89 90 return flask.redirect(flask.url_for('coprs_ns.copr_builds', username = username, coprname = coprname))9192 93 @coprs_ns.route('/<username>/<coprname>/repeat_build/<int:build_id>/', methods = ['POST']) 94 @login_required 95 -def copr_repeat_build(username, coprname, build_id):96 build = builds_logic.BuildsLogic.get(flask.g.user, build_id).first() 97 copr = coprs_logic.CoprsLogic.get(flask.g.user, username=username, coprname=coprname).first() 98 99 if not build: # hey, this Build doesn't exist 100 return page_not_found('Build with id {0} does not exist.'.format(build_id)) 101 102 if not copr: # hey, this Copr doesn't exist 103 return page_not_found('Copr {0}/{1} does not exist.'.format(username, coprname)) 104 105 # TODO: do intersection of chroots with currently active? 106 new_build = models.Build() 107 for a in ['pkgs', 'chroots', 'repos', 'memory_reqs', 'timeout']: 108 setattr(new_build, a, getattr(build, a)) 109 builds_logic.BuildsLogic.new(flask.g.user, new_build, copr) 110 111 db.session.commit() 112 flask.flash('Build was resubmitted') 113 114 return flask.redirect(flask.url_for('coprs_ns.copr_builds', username = username, coprname = coprname))115
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Mon Sep 30 04:05:28 2013 | http://epydoc.sourceforge.net |