Package coprs :: Package views :: Package groups_ns :: Module groups_general
[hide private]
[frames] | no frames]

Source Code for Module coprs.views.groups_ns.groups_general

  1  # coding: utf-8 
  2   
  3  import flask 
  4  from flask import render_template, url_for 
  5  from coprs.exceptions import InsufficientRightsException 
  6  from coprs.forms import ActivateFasGroupForm 
  7  from coprs.helpers import Paginator 
  8  from coprs.logic import builds_logic 
  9  from coprs.logic.complex_logic import ComplexLogic 
 10  from coprs.logic.coprs_logic import CoprsLogic 
 11  from coprs.logic.users_logic import UsersLogic 
 12  from coprs import app 
 13   
 14  from ... import db 
 15  from ..misc import login_required 
 16   
 17  from . import groups_ns 
18 19 20 @groups_ns.route("/activate/<fas_group>", methods=["GET", "POST"]) 21 @login_required 22 -def activate_group(fas_group):
23 form = ActivateFasGroupForm() 24 25 if form.validate_on_submit(): 26 if UsersLogic.is_blacklisted_group(fas_group): 27 flask.flash("This group is blacklisted and cannot be added.") 28 return flask.redirect(url_for( 29 "groups_ns.list_user_groups")) 30 31 if fas_group not in flask.g.user.user_teams: 32 raise InsufficientRightsException( 33 "User '{}' doesn't have access to fas group {}" 34 .format(flask.g.user.username, fas_group)) 35 36 alias = form.name.data 37 group = UsersLogic.get_group_by_fas_name_or_create( 38 fas_group, alias) 39 40 db.session.add(group) 41 db.session.commit() 42 43 flask.flash( 44 "FAS group {} is activated in the Copr under the alias {} " 45 .format(fas_group, alias) 46 ) 47 return flask.redirect(url_for( 48 "groups_ns.list_projects_by_group", group_name=alias)) 49 50 else: 51 return flask.render_template( 52 "groups/activate_fas_group.html", 53 fas_group=fas_group, 54 form=form, 55 user=flask.g.user, 56 )
57
58 59 @groups_ns.route("/g/<group_name>/coprs/", defaults={"page": 1}) 60 @groups_ns.route("/g/<group_name>/coprs/<int:page>") 61 -def list_projects_by_group(group_name, page=1):
62 group = ComplexLogic.get_group_by_name_safe(group_name) 63 query = CoprsLogic.get_multiple_by_group_id(group.id) 64 65 paginator = Paginator(query, query.count(), page) 66 67 coprs = paginator.sliced_query 68 69 data = builds_logic.BuildsLogic.get_tasks_from_last_day() 70 71 return render_template( 72 "coprs/show/group.html", 73 user=flask.g.user, 74 coprs=coprs, 75 paginator=paginator, 76 tasks_info=ComplexLogic.get_queue_sizes(), 77 group=group, 78 graph=data 79 )
80
81 82 @groups_ns.route("/list/my") 83 @login_required 84 -def list_user_groups():
85 if not app.config['FAS_LOGIN']: 86 return flask.render_template("404.html"), 404 87 88 teams = flask.g.user.user_teams 89 active_map = { 90 group.fas_name: group.name for group in 91 UsersLogic.get_groups_by_fas_names_list(teams).all() 92 } 93 94 teams = UsersLogic.filter_blacklisted_teams(teams) 95 copr_groups = { 96 fas_name: active_map.get(fas_name) 97 for fas_name in teams 98 } 99 return render_template( 100 "groups/user_fas_groups.html", 101 user=flask.g.user, 102 teams=teams, 103 copr_groups=copr_groups)
104