~devcamcar/horizon/trunk

« back to all changes in this revision

Viewing changes to django-openstack/src/django_openstack/nova/views/projects.py

  • Committer: Devin Carlen
  • Date: 2011-06-18 05:59:37 UTC
  • Revision ID: devin.carlen@gmail.com-20110618055937-aobwm0buvviijz3o
Moved codebase to GitHub

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
 
 
3
 
# Copyright 2010 United States Government as represented by the
4
 
# Administrator of the National Aeronautics and Space Administration.
5
 
# All Rights Reserved.
6
 
#
7
 
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
8
 
#    not use this file except in compliance with the License. You may obtain
9
 
#    a copy of the License at
10
 
#
11
 
#         http://www.apache.org/licenses/LICENSE-2.0
12
 
#
13
 
#    Unless required by applicable law or agreed to in writing, software
14
 
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
 
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
 
#    License for the specific language governing permissions and limitations
17
 
#    under the License.
18
 
 
19
 
"""
20
 
Views for managing Nova projects.
21
 
"""
22
 
 
23
 
from django import http
24
 
from django import template
25
 
from django.conf import settings
26
 
from django.contrib.auth.decorators import login_required
27
 
from django.shortcuts import redirect, render_to_response
28
 
from django_openstack.core.connection import get_nova_admin_connection
29
 
from django_openstack import log as logging
30
 
from django_openstack.nova import forms as nova_forms
31
 
from django_openstack.nova.exceptions import handle_nova_error
32
 
from django_openstack.nova.shortcuts import get_project_or_404
33
 
 
34
 
 
35
 
LOG = logging.getLogger('django_openstack.nova')
36
 
 
37
 
 
38
 
@login_required
39
 
@handle_nova_error
40
 
def detail(request, project_id):
41
 
    project = get_project_or_404(request, project_id)
42
 
 
43
 
    return render_to_response(
44
 
        'django_openstack/nova/projects/index.html',
45
 
        {'project': project,
46
 
         'instance_count': project.get_instance_count()},
47
 
        context_instance=template.RequestContext(request))
48
 
 
49
 
 
50
 
@login_required
51
 
@handle_nova_error
52
 
def manage(request, project_id):
53
 
    project = get_project_or_404(request, project_id)
54
 
 
55
 
    if project.projectManagerId != request.user.username:
56
 
        return redirect('login')
57
 
 
58
 
    nova = get_nova_admin_connection()
59
 
    members = nova.get_project_members(project_id)
60
 
 
61
 
    for member in members:
62
 
        project_role = [str(role.role) for role in
63
 
                        nova.get_user_roles(member.memberId, project_id)]
64
 
        global_role = [str(role.role) for role in
65
 
                       nova.get_user_roles(member.memberId, project=False)]
66
 
 
67
 
        member.project_roles = ", ".join(project_role)
68
 
        member.global_roles = ", ".join(global_role)
69
 
 
70
 
    return render_to_response(
71
 
        'django_openstack/nova/projects/manage.html',
72
 
        {'project': project,
73
 
         'members': members},
74
 
        context_instance=template.RequestContext(request))
75
 
 
76
 
 
77
 
@login_required
78
 
@handle_nova_error
79
 
def edit_user(request, project_id, username):
80
 
    nova = get_nova_admin_connection()
81
 
    project = get_project_or_404(request, project_id)
82
 
    user = nova.get_user(username)
83
 
    userroles = nova.get_user_roles(username, project_id)
84
 
 
85
 
    if project.projectManagerId != request.user.username:
86
 
        return redirect('login')
87
 
 
88
 
    if request.method == 'POST':
89
 
        form = nova_forms.ProjectUserForm(project, user, request.POST)
90
 
        if form.is_valid():
91
 
            form.save()
92
 
            LOG.info('Roles for user "%s" on project "%s" changed to "%s' %
93
 
                     (str(user), project_id,
94
 
                      ",".join(form.cleaned_data['role'])))
95
 
 
96
 
            return redirect('nova_project_manage',  project_id)
97
 
    else:
98
 
        roles = [str(role.role) for role in userroles]
99
 
        form = nova_forms.ProjectUserForm(project,
100
 
                                          user,
101
 
                                          {'role': roles,
102
 
                                           'user': user})
103
 
 
104
 
    return render_to_response(
105
 
        'django_openstack/nova/projects/edit_user.html',
106
 
        {'form': form,
107
 
         'project': project,
108
 
         'user': user},
109
 
        context_instance=template.RequestContext(request))
110
 
 
111
 
 
112
 
@login_required
113
 
@handle_nova_error
114
 
def download_credentials(request, project_id):
115
 
    project = get_project_or_404(request, project_id)
116
 
 
117
 
    response = http.HttpResponse(mimetype='application/zip')
118
 
    response['Content-Disposition'] = \
119
 
        'attachment; filename=%s-%s-%s-x509.zip' % \
120
 
        (settings.SITE_NAME, project.projectname, request.user)
121
 
    response.write(project.get_zip())
122
 
 
123
 
    return response