|
| 1 | +from django.apps import apps |
1 | 2 | from django.contrib.sites.shortcuts import get_current_site |
2 | 3 | from django.core.exceptions import BadRequest, ObjectDoesNotExist |
3 | 4 | from django.db.models import QuerySet, Subquery |
| 5 | +from django.forms.renderers import DjangoTemplates |
4 | 6 | from django.http import JsonResponse, HttpResponseBadRequest |
| 7 | +from django.utils.html import strip_spaces_between_tags |
| 8 | +from django.utils.safestring import mark_safe |
5 | 9 | from django.views import View |
6 | 10 |
|
7 | 11 | from finder.lookups import annotate_unified_queryset, lookup_by_label, sort_by_attribute |
8 | 12 | from finder.models.file import FileModel |
9 | 13 | from finder.models.folder import FolderModel, RealmModel |
10 | | -from finder.models.inode import InodeModel |
| 14 | +from finder.models.label import Label |
| 15 | + |
| 16 | + |
| 17 | +class FormRenderer(DjangoTemplates): |
| 18 | + def render(self, template_name, context, request=None): |
| 19 | + if template_name == 'django/forms/div.html': |
| 20 | + template_name = 'finder/forms/div.html' |
| 21 | + template = self.get_template(template_name) |
| 22 | + return template.render(context, request=request).strip() |
11 | 23 |
|
12 | 24 |
|
13 | 25 | class BrowserView(View): |
@@ -162,4 +174,16 @@ def upload(self, request, folder_id): |
162 | 174 | folder=folder, |
163 | 175 | owner=request.user, |
164 | 176 | ) |
165 | | - return {'uploaded_file': file.as_dict} |
| 177 | + app = apps.get_app_config('finder') |
| 178 | + form_class = app.model_forms[file.__class__] |
| 179 | + form = form_class(instance=file, renderer=FormRenderer()) |
| 180 | + response = { |
| 181 | + 'file_info': file.as_dict, |
| 182 | + 'form_html': mark_safe(strip_spaces_between_tags(form.as_div())), |
| 183 | + } |
| 184 | + if Label.objects.exists(): |
| 185 | + response['labels'] = [ |
| 186 | + {'value': id, 'label': name, 'color': color} |
| 187 | + for id, name, color in Label.objects.values_list('id', 'name', 'color') |
| 188 | + ] |
| 189 | + return response |
0 commit comments