forked from django-cms/django-filer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
views.py
executable file
·136 lines (117 loc) · 4.91 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#-*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import PermissionDenied
from models import Folder, Image, Clipboard
from models import tools
from django import forms
class NewFolderForm(forms.ModelForm):
class Meta:
model = Folder
fields = ('name', )
def popup_status(request):
return request.REQUEST.has_key('_popup') or request.REQUEST.has_key('pop')
def selectfolder_status(request):
return request.REQUEST.has_key('select_folder')
def popup_param(request):
if popup_status(request):
return "?_popup=1"
else:
return ""
def _userperms(item, request):
r = []
ps = ['read', 'edit', 'add_children']
for p in ps:
attr = "has_%s_permission" % p
if hasattr(item, attr):
x = getattr(item, attr)(request)
if x:
r.append( p )
return r
@login_required
def edit_folder(request, folder_id):
# TODO: implement edit_folder view
folder = None
return render_to_response('admin/filer/folder/folder_edit.html', {
'folder':folder,
'is_popup': request.REQUEST.has_key('_popup') or request.REQUEST.has_key('pop'),
}, context_instance=RequestContext(request))
@login_required
def edit_image(request, folder_id):
# TODO: implement edit_image view
folder = None
return render_to_response('filer/image_edit.html', {
'folder':folder,
'is_popup': request.REQUEST.has_key('_popup') or request.REQUEST.has_key('pop'),
}, context_instance=RequestContext(request))
@login_required
def make_folder(request, folder_id=None):
if not folder_id:
folder_id = request.REQUEST.get('parent_id', None)
if folder_id:
folder = Folder.objects.get(id=folder_id)
else:
folder = None
if request.user.is_superuser:
pass
elif folder == None:
# regular users may not add root folders
raise PermissionDenied
elif not folder.has_add_children_permission(request):
# the user does not have the permission to add subfolders
raise PermissionDenied
if request.method == 'POST':
new_folder_form = NewFolderForm(request.POST)
if new_folder_form.is_valid():
new_folder = new_folder_form.save(commit=False)
new_folder.parent = folder
new_folder.owner = request.user
new_folder.save()
return HttpResponse('<script type="text/javascript">opener.dismissPopupAndReload(window);</script>')
else:
new_folder_form = NewFolderForm()
return render_to_response('admin/filer/folder/new_folder_form.html', {
'new_folder_form': new_folder_form,
'is_popup': request.REQUEST.has_key('_popup') or request.REQUEST.has_key('pop'),
}, context_instance=RequestContext(request))
class UploadFileForm(forms.ModelForm):
class Meta:
model = Image
@login_required
def upload(request):
return render_to_response('filer/upload.html', {
'title': u'Upload files',
'is_popup': popup_status(request),
}, context_instance=RequestContext(request))
@login_required
def paste_clipboard_to_folder(request):
if request.method == 'POST':
folder = Folder.objects.get( id=request.POST.get('folder_id') )
clipboard = Clipboard.objects.get( id=request.POST.get('clipboard_id') )
if folder.has_add_children_permission(request):
tools.move_files_from_clipboard_to_folder(clipboard, folder)
tools.discard_clipboard(clipboard)
else:
raise PermissionDenied
return HttpResponseRedirect( '%s%s' % (request.REQUEST.get('redirect_to', ''), popup_param(request) ) )
@login_required
def discard_clipboard(request):
if request.method == 'POST':
clipboard = Clipboard.objects.get( id=request.POST.get('clipboard_id') )
tools.discard_clipboard(clipboard)
return HttpResponseRedirect( '%s%s' % (request.POST.get('redirect_to', ''), popup_param(request) ) )
@login_required
def delete_clipboard(request):
if request.method == 'POST':
clipboard = Clipboard.objects.get( id=request.POST.get('clipboard_id') )
tools.delete_clipboard(clipboard)
return HttpResponseRedirect( '%s%s' % (request.POST.get('redirect_to', ''), popup_param(request) ) )
@login_required
def clone_files_from_clipboard_to_folder(request):
if request.method == 'POST':
clipboard = Clipboard.objects.get( id=request.POST.get('clipboard_id') )
folder = Folder.objects.get( id=request.POST.get('folder_id') )
tools.clone_files_from_clipboard_to_folder(clipboard, folder)
return HttpResponseRedirect( '%s%s' % (request.POST.get('redirect_to', ''), popup_param(request) ) )