def move_file_to_clipboard(self, request): #print "move file" if request.method=='POST': file_id = request.POST.get("file_id", None) clipboard = tools.get_user_clipboard(request.user) if file_id: file = File.objects.get(id=file_id) if file.has_edit_permission(request): tools.move_file_to_clipboard([file], clipboard) else: raise PermissionDenied return HttpResponseRedirect( '%s%s' % (request.POST.get('redirect_to', ''), popup_param(request) ) )
def directory_listing(self, request, folder_id=None, viewtype=None): clipboard = tools.get_user_clipboard(request.user) if viewtype=='images_with_missing_data': folder = ImagesWithMissingData() elif viewtype=='unfiled_images': folder = UnfiledImages() elif folder_id == None: folder = FolderRoot() else: try: folder = Folder.objects.get(id=folder_id) except Folder.DoesNotExist: raise Http404 # search def filter_folder(qs, terms=[]): for term in terms: qs = qs.filter(Q(name__icontains=term) | Q(owner__username__icontains=term) | Q(owner__first_name__icontains=term) | Q(owner__last_name__icontains=term) ) return qs def filter_file(qs, terms=[]): for term in terms: qs = qs.filter( Q(name__icontains=term) | Q(original_filename__icontains=term ) | Q(owner__username__icontains=term) | Q(owner__first_name__icontains=term) | Q(owner__last_name__icontains=term) ) return qs q = request.GET.get('q', None) if q: search_terms = q.split(" ") else: search_terms = [] limit_search_to_folder = request.GET.get('limit_search_to_folder', False) in (True, 'on') if len(search_terms)>0: if folder and limit_search_to_folder and not folder.is_root: folder_qs = folder.get_descendants() file_qs = File.objects.filter(folder__in=folder.get_descendants()) else: folder_qs = Folder.objects.all() file_qs = File.objects.all() folder_qs = filter_folder(folder_qs, search_terms) file_qs = filter_file(file_qs, search_terms) show_result_count = True else: folder_qs = folder.children.all() file_qs = folder.files.all() show_result_count = False folder_qs = folder_qs.order_by('name') file_qs = file_qs.order_by('name') folder_children = [] folder_files = [] if folder.is_root: folder_children += folder.virtual_folders for f in folder_qs: f.perms = userperms_for_request(f, request) if hasattr(f, 'has_read_permission'): if f.has_read_permission(request): #print "%s has read permission for %s" % (request.user, f) folder_children.append(f) else: pass#print "%s has NO read permission for %s" % (request.user, f) else: folder_children.append(f) for f in file_qs: f.perms = userperms_for_request(f, request) if hasattr(f, 'has_read_permission'): if f.has_read_permission(request): #print "%s has read permission for %s" % (request.user, f) folder_files.append(f) else: pass#print "%s has NO read permission for %s" % (request.user, f) else: folder_files.append(f) try: permissions = { 'has_edit_permission': folder.has_edit_permission(request), 'has_read_permission': folder.has_read_permission(request), 'has_add_children_permission': folder.has_add_children_permission(request), } except: permissions = {} #print admin.site.root_path return render_to_response('admin/filer/folder/directory_listing.html', { 'folder':folder, 'folder_children':folder_children, 'folder_files':folder_files, 'permissions': permissions, 'permstest': userperms_for_request(folder, request), 'current_url': request.path, 'title': u'Directory listing for %s' % folder.name, 'search_string': ' '.join(search_terms), 'show_result_count': show_result_count, 'limit_search_to_folder': limit_search_to_folder, 'is_popup': popup_status(request), 'select_folder': selectfolder_status(request), 'root_path': "/%s" % admin.site.root_path, # needed in the admin/base.html template for logout links and stuff }, context_instance=RequestContext(request))