| Trees | Indices | Help |
|---|
|
|
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"])
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
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
| Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 | http://epydoc.sourceforge.net |