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