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