filer.views: 99 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/filer/views.py

Stats: 0 executed, 89 missed, 10 excluded, 82 ignored

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