Exemplo n.º 1
0
 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) ) )
Exemplo n.º 2
0
 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))