1 # Copyright (C) 2010 Oregon State University et al.
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
18 from django
.conf
import settings
19 from ganeti_web
.models
import Cluster
24 Add common site information to the context.
28 'SITE_DOMAIN': settings
.SITE_DOMAIN
,
29 'SITE_NAME': settings
.SITE_NAME
,
33 ANONYMOUS_PERMISSIONS
= dict(cluster_admin
=False,
37 CLUSTER_ADMIN_PERMISSIONS
= dict(cluster_admin
=True,
41 CLUSTER_VIEW_PERMS
= ['migrate', 'export', 'replace_disks', 'tags']
44 def common_permissions(request
):
46 Add common cluster permission information to the context.
48 Information added by this processor:
50 * "cluster_admin" indicates whether the current user is an
51 administrator of any clusters.
52 * "create_vm" indicates whether the current user is allowed to create
54 * "view_cluster" indicates whether the current user has any other
55 permissions that would allow them to view clusters.
58 user
= getattr(request
, "user", None)
60 if user
and user
.is_authenticated():
62 return CLUSTER_ADMIN_PERMISSIONS
64 perms
= user
.get_perms_any(Cluster
)
67 return CLUSTER_ADMIN_PERMISSIONS
70 create_vm
= 'create_vm' in perms
71 view_cluster
= any(p
in perms
for p
in CLUSTER_VIEW_PERMS
)
74 'cluster_admin': False,
75 'create_vm': create_vm
,
76 'view_cluster': view_cluster
,
79 return ANONYMOUS_PERMISSIONS