Skip to content

Commit 2f79fec

Browse files
committed
MVP on browser detail view
1 parent 7f07015 commit 2f79fec

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

finder/api/views.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
1+
from django.apps import apps
12
from django.contrib.sites.shortcuts import get_current_site
23
from django.core.exceptions import BadRequest, ObjectDoesNotExist
34
from django.db.models import QuerySet, Subquery
5+
from django.forms.renderers import DjangoTemplates
46
from django.http import JsonResponse, HttpResponseBadRequest
7+
from django.utils.html import strip_spaces_between_tags
8+
from django.utils.safestring import mark_safe
59
from django.views import View
610

711
from finder.lookups import annotate_unified_queryset, lookup_by_label, sort_by_attribute
812
from finder.models.file import FileModel
913
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()
1123

1224

1325
class BrowserView(View):
@@ -162,4 +174,16 @@ def upload(self, request, folder_id):
162174
folder=folder,
163175
owner=request.user,
164176
)
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
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{{ errors }}
2+
{% if errors and not fields %}
3+
<div>{% for field in hidden_fields %}{{ field }}{% endfor %}</div>
4+
{% endif %}
5+
{% for field, errors in fields %}
6+
<div class="form-row">
7+
{{ field.as_field_group }}
8+
{% if forloop.last %}
9+
{% for field in hidden_fields %}{{ field }}{% endfor %}
10+
{% endif %}
11+
</div>
12+
{% endfor %}
13+
{% if not fields and not errors %}
14+
{% for field in hidden_fields %}{{ field }}{% endfor %}
15+
{% endif %}

0 commit comments

Comments
 (0)