Statistics
| Branch: | Tag: | Revision:

root / admin / views.py @ 3f94a1ae

History | View | Annotate | Download (5.1 kB)

1
from functools import wraps
2

    
3
from django.core.urlresolvers import reverse
4
from django.http import HttpResponse
5
from django.shortcuts import redirect
6
from django.template.loader import render_to_string
7

    
8
from synnefo.db import models
9
from synnefo.invitations.invitations import add_invitation, send_invitation
10

    
11

    
12
def render(template, tab, **kwargs):
13
    kwargs.setdefault('tab', tab)
14
    return render_to_string(template, kwargs)
15

    
16

    
17
def index(request):
18
    html = render('index.html', 'home')
19
    return HttpResponse(html)
20

    
21

    
22
def flavors_list(request):
23
    flavors = models.Flavor.objects.order_by('id')
24
    html = render('flavors_list.html', 'flavors', flavors=flavors)
25
    return HttpResponse(html)
26

    
27
def flavors_create(request):
28
    if request.method == 'GET':
29
        html = render('flavors_create.html', 'flavors')
30
        return HttpResponse(html)
31
    if request.method == 'POST':
32
        flavor = models.Flavor()
33
        flavor.cpu = request.POST.get('cpu')
34
        flavor.ram = request.POST.get('ram')
35
        flavor.disk = request.POST.get('disk')
36
        flavor.save()
37
        return redirect(flavors_info, flavor.id)
38

    
39
def flavors_info(request, flavor_id):
40
    flavor = models.Flavor.objects.get(id=flavor_id)
41
    html = render('flavors_info.html', 'flavors', flavor=flavor)
42
    return HttpResponse(html)
43

    
44
def flavors_modify(request, flavor_id):
45
    flavor = models.Flavor.objects.get(id=flavor_id)
46
    flavor.cpu = request.POST.get('cpu')
47
    flavor.ram = request.POST.get('ram')
48
    flavor.disk = request.POST.get('disk')
49
    flavor.save()
50
    return redirect(flavors_info, flavor.id)
51

    
52
def flavors_delete(request, flavor_id):
53
    flavor = models.Flavor.objects.get(id=flavor_id)
54
    flavor.delete()
55
    return redirect(flavors_list)
56

    
57

    
58
def images_list(request):
59
    images = models.Image.objects.order_by('id')
60
    html = render('images_list.html', 'images', images=images)
61
    return HttpResponse(html)
62

    
63
def images_register(request):
64
    if request.method == 'GET':
65
        html = render('images_register.html', 'images')
66
        return HttpResponse(html)
67
    elif request.method == 'POST':
68
        image = models.Image()
69
        image.state = 'ACTIVE'
70
        image.name = request.POST.get('name')
71
        owner_id = request.POST.get('owner') or None
72
        image.owner = owner_id and models.SynnefoUser.objects.get(id=owner_id)
73
        image.backend_id = request.POST.get('backend')
74
        image.public = True if request.POST.get('public') else False
75
        image.save()
76
        return redirect(images_info, image.id)
77

    
78
def images_info(request, image_id):
79
    image = models.Image.objects.get(id=image_id)
80
    states = [x[0] for x in models.Image.IMAGE_STATES]
81
    if not image.state:
82
        states = [''] + states
83
    formats = [x[0] for x in models.Image.FORMATS]
84
    if not image.format:
85
        formats = [''] + formats
86
    html = render('images_info.html', 'images',
87
                    image=image, states=states, formats=formats)
88
    return HttpResponse(html)
89

    
90
def images_modify(request, image_id):
91
    image = models.Image.objects.get(id=image_id)
92
    image.name = request.POST.get('name')
93
    image.state = request.POST.get('state')
94
    owner_id = request.POST.get('owner') or None
95
    image.owner = owner_id and models.SynnefoUser.objects.get(id=owner_id)
96
    vm_id = request.POST.get('sourcevm') or None
97
    image.sourcevm = vm_id and models.VirtualMachine.objects.get(id=vm_id)
98
    image.backend_id = request.POST.get('backend')
99
    image.format = request.POST.get('format')
100
    image.public = True if request.POST.get('public') else False
101
    image.save()
102
    return redirect(images_info, image.id)
103

    
104

    
105
def servers_list(request):
106
    vms = models.VirtualMachine.objects.order_by('id')
107
    html = render('servers_list.html', 'servers', vms=vms)
108
    return HttpResponse(html)
109

    
110

    
111
def users_list(request):
112
    users = models.SynnefoUser.objects.order_by('id')
113
    html = render('users_list.html', 'users', users=users)
114
    return HttpResponse(html)
115

    
116
def users_invite(request):
117
    if request.method == 'GET':
118
        html = render('users_invite.html', 'users')
119
        return HttpResponse(html)
120
    elif request.method == 'POST':
121
        inviter_id = request.POST.get('inviter')
122
        realname = request.POST.get('realname')
123
        uniq = request.POST.get('uniq')
124
        inviter = models.SynnefoUser.objects.get(id=inviter_id)
125
        inv = add_invitation(inviter, realname, uniq)
126
        send_invitation(inv)
127
        return redirect(users_list)
128

    
129
def users_info(request, user_id):
130
    user = models.SynnefoUser.objects.get(id=user_id)
131
    types = [x[0] for x in models.SynnefoUser.ACCOUNT_TYPE]
132
    if not user.type:
133
        types = [''] + types
134
    html = render('users_info.html', 'users', user=user, types=types)
135
    return HttpResponse(html)
136

    
137
def users_modify(request, user_id):
138
    user = models.SynnefoUser.objects.get(id=user_id)
139
    user.name = request.POST.get('name')
140
    user.realname = request.POST.get('realname')
141
    user.uniq = request.POST.get('uniq')
142
    user.credit = int(request.POST.get('credit'))
143
    user.type = request.POST.get('type')
144
    invitations = request.POST.get('invitations')
145
    user.max_invitations = int(invitations) if invitations else None
146
    user.save()
147
    return redirect(users_info, user.id)