views.py 6.96 KB
Newer Older
x committed
1
# Create your views here.
2
from django.core.context_processors import csrf
x committed
3 4 5
from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
6
from store.api import StoreApi
x committed
7 8
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
9
from django.views.decorators.csrf import csrf_exempt
x committed
10
import os
Dányi Bence committed
11
import json
12
import base64
x committed
13

x committed
14
def estabilish_store_user(request, user):
x committed
15
    try:
Őry Máté committed
16
        details = request.user.cloud_details
x committed
17
        password = details.smb_password
x committed
18
        quota = details.disk_quota * 1024
x committed
19 20 21 22
        key_list = []
        for key in request.user.sshkey_set.all():
            key_list.append(key.key)
    except:
23
        return HttpResponse('Can not acces to django database!', status=404)
x committed
24
        #Create user
x committed
25 26
    if not StoreApi.createuser(user, password, key_list, str(quota)):
        return HttpResponse('User does not exist on store! And could not create!')
27 28 29 30 31

@login_required
def index(request):
    user = request.user.username
    if StoreApi.userexist(user) != True:
x committed
32
        estabilish_store_user(request, user)
x committed
33 34 35
    #UpdateAuthorizationInfo
    try:
        auth=request.POST['auth']
36
        try:
Őry Máté committed
37
            details = request.user.cloud_details
38 39 40 41 42
            password = details.smb_password
            key_list = []
            for key in request.user.sshkey_set.all():
                key_list.append(key.key)
        except:
43
            return HttpResponse('Can not acces to django database!', status=404)
x committed
44
        if not StoreApi.updateauthorizationinfo(user, password, key_list):
x committed
45
           return HttpResponse('Can not update authorization information!')
x committed
46
    except:
x committed
47
        pass
x committed
48 49 50
    #Download handler
    try:
        dl = request.POST['dl']
x committed
51
        return redirect(StoreApi.requestdownload(user, dl))
x committed
52 53 54 55 56
    except:
        pass
    #Upload handler
    try:
        ul = request.POST['ul']
57
        url = StoreApi.requestupload(user,ul)
x committed
58 59 60 61 62 63
        return render_to_response('store/upload.html', RequestContext(request,{'URL' : url}))
    except:
        pass
    #Remove handler
    try:
        rm = request.POST['rm']
64
        succes = StoreApi.requestremove(user,rm)
x committed
65 66 67 68 69 70
    except:
        pass
    #Remove handler
    try:
        path = request.POST['path']
        new = request.POST['new']
71
        succes = StoreApi.requestnewfolder(user,path+'/'+new)
x committed
72 73 74 75 76 77 78 79 80 81
    except:
        pass
    #Simple file list
    path = '/'
    try:
        path = request.POST['path']
    except:
        pass
    #Normalize path (Need double dirname /folder/ -> /folder -> /
    backpath = os.path.normpath(os.path.dirname(os.path.dirname(path)))
82
    file_list = StoreApi.listfolder(user,path)
x committed
83 84
    quota = StoreApi.requestquota(user)
    return render_to_response('store/list.html', RequestContext(request, {'file_list': file_list, 'path' : path, 'backpath' : backpath, 'username' : user, 'quota' : quota}))
x committed
85

86 87 88 89
@login_required
def ajax_listfolder(request):
    user = request.user.username
    if StoreApi.userexist(user) != True:
x committed
90
        estabilish_store_user(request, user)
91 92 93 94 95 96 97 98 99 100
    path = '/'
    try:
        path = request.POST['path']
    except:
        pass
    #Normalize path (Need double dirname /folder/ -> /folder -> /
    backpath = os.path.normpath(os.path.dirname(os.path.dirname(path)))
    file_list = StoreApi.listfolder(user,path)
    return HttpResponse(json.dumps(file_list))

101
@login_required
Dányi Bence committed
102 103 104
def ajax_quota(request):
    user = request.user.username
    if StoreApi.userexist(user) != True:
x committed
105
        estabilish_store_user(request, user)
Dányi Bence committed
106 107
    return HttpResponse(json.dumps(StoreApi.requestquota(user)))
    #return HttpResponse(json.dumps({'Used':20,'Soft':160,'Hard':200}))
Dányi Bence committed
108 109

@login_required
Dányi Bence committed
110 111 112 113 114 115 116
def ajax_download(request):
    user = request.user.username
    try:
        dl = request.POST['dl']
        return HttpResponse(json.dumps({'url':StoreApi.requestdownload(user,dl)}))
    except:
        pass
117
    return HttpResponse('File not found!', status=404)
Dányi Bence committed
118 119

@login_required
Dányi Bence committed
120 121 122 123 124 125 126 127
def ajax_upload(request):
    user = request.user.username
    try:
        ul = request.POST['ul']
        url = StoreApi.requestupload(user,ul)
        return HttpResponse(json.dumps({'url':url}))
    except:
        pass
128
    return HttpResponse('Error!', status=404)
Dányi Bence committed
129 130

@login_required
Dányi Bence committed
131 132 133 134 135 136 137
def ajax_delete(request):
    user = request.user.username
    try:
        rm = request.POST['rm']
        return HttpResponse(json.dumps({'success':StoreApi.requestremove(user,rm)}))
    except:
        pass
138
    return HttpResponse('File not found!', status=404)
Dányi Bence committed
139 140

@login_required
Dányi Bence committed
141 142 143 144 145 146 147 148 149
def ajax_new_folder(request):
    user = request.user.username
    try:
        path = request.POST['path']
        new = request.POST['new']
        success = StoreApi.requestnewfolder(user,path+'/'+new)
        return HttpResponse(json.dumps({'success':success}))
    except:
        pass
150
    return HttpResponse('Error!', status=404)
Dányi Bence committed
151 152

@login_required
Dányi Bence committed
153 154 155 156 157 158 159 160 161
def ajax_rename(request):
    user = request.user.username
    try:
        path = request.POST['path']
        new = request.POST['new']
        success = StoreApi.requestrename(user,path,new)
        return HttpResponse(json.dumps({'success':success}))
    except:
        pass
162
    return HttpResponse('Error!', status=404)
Dányi Bence committed
163 164

@login_required
165 166 167 168 169 170
def toplist(request):
    user = request.user.username
    path = backpath = '/'
    file_list = StoreApi.toplist(user)
    return render_to_response('store/list.html', RequestContext(request, {'file_list': file_list, 'path' : path, 'backpath' : backpath, 'username' : user}))

171
@login_required
172 173 174 175 176 177 178
def ajax_toplist(request):
    user = request.user.username
    path = backpath = '/'
    file_list = StoreApi.toplist(user)
    return HttpResponse(json.dumps(file_list))

@login_required
179 180 181
def gui(request):
    user = request.user.username
    if request.method == 'GET':
182
        return render_to_response('store/gui.html',  RequestContext(request, {'username' : user, 'host' : StoreApi.get_host()}))
183 184
    elif request.method == 'POST':
        try:
Őry Máté committed
185
            details = request.user.cloud_details
186 187 188 189 190
            password = details.smb_password
            key_list = []
            for key in request.user.sshkey_set.all():
                key_list.append(key.key)
        except:
191
            return HttpResponse('Can not acces to django database!', status=404)
192 193 194 195
        try:
            lab_key_decoded = base64.b64decode(request.POST['KEY'])
            key_list.append(lab_key_decoded)
        except:
x committed
196 197 198 199 200
            if StoreApi.updateauthorizationinfo(user, password, key_list):
                return HttpResponse('Keys resetted succesfully!')
            else:
                return HttpResponse('Can not update authorization information!')
        if StoreApi.updateauthorizationinfo(user, password, key_list):
Bence Dányi committed
201
            return HttpResponse('https://cloud.ik.bme.hu/home/'+'?neptun='+user+'&'+'host='+StoreApi.get_host())
202
        else:
x committed
203
            return HttpResponse('Can not update authorization information!')
204
    else:
205
        return HttpResponse('Method not found!', status=404)
206

x committed
207 208 209
def logout(request):
        auth.logout(request)
        return redirect('/')