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