|
6 | 6 | from django.utils.html import strip_spaces_between_tags |
7 | 7 | from django.utils.safestring import mark_safe |
8 | 8 | from django.views import View |
| 9 | +from django.views.decorators.http import last_modified |
9 | 10 |
|
10 | 11 | from finder.lookups import annotate_unified_queryset, lookup_by_label, sort_by_attribute |
11 | 12 | from finder.models.file import FileModel |
@@ -100,24 +101,26 @@ def structure(self, request, slug): |
100 | 101 | **self.list(request, request.session['finder.last_folder']), |
101 | 102 | } |
102 | 103 |
|
103 | | - def fetch(self, request, folder_id): |
| 104 | + def fetch(self, request, inode_id): |
104 | 105 | """ |
105 | 106 | Open the given folder and fetch children data for the folder. |
106 | 107 | """ |
107 | | - folder = FolderModel.objects.get(id=folder_id) |
108 | | - folder_id = str(folder_id) |
109 | | - request.session.setdefault('finder.open_folders', []) |
110 | | - if folder_id not in request.session['finder.open_folders']: |
111 | | - request.session['finder.open_folders'].append(folder_id) |
112 | | - request.session.modified = True |
113 | | - |
114 | | - return { |
115 | | - 'id': folder_id, |
116 | | - 'name': folder.name, |
117 | | - 'children': self._get_children(request.session['finder.open_folders'], folder), |
118 | | - 'is_open': True, |
119 | | - 'has_subfolders': folder.subfolders.exists(), |
120 | | - } |
| 108 | + inode = FileModel.objects.get_inode(id=inode_id) |
| 109 | + inode_id = str(inode_id) |
| 110 | + if inode.is_folder: |
| 111 | + request.session.setdefault('finder.open_folders', []) |
| 112 | + if inode_id not in request.session['finder.open_folders']: |
| 113 | + request.session['finder.open_folders'].append(inode_id) |
| 114 | + request.session.modified = True |
| 115 | + return { |
| 116 | + 'id': inode_id, |
| 117 | + 'name': inode.name, |
| 118 | + 'children': self._get_children(request.session['finder.open_folders'], inode), |
| 119 | + 'is_open': True, |
| 120 | + 'has_subfolders': inode.subfolders.exists(), |
| 121 | + } |
| 122 | + else: |
| 123 | + return inode.as_dict |
121 | 124 |
|
122 | 125 | def open(self, request, folder_id): |
123 | 126 | """ |
|
0 commit comments