|
1 | 1 | from django.contrib import admin |
2 | | -from django.forms.fields import CharField |
3 | | -from django.forms.models import ModelMultipleChoiceField |
4 | | -from django.forms.widgets import Media, TextInput |
| 2 | +from django.forms.widgets import Media |
5 | 3 | from django.http.response import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound |
6 | 4 | from django.templatetags.static import static |
7 | 5 | from django.urls import path, reverse |
8 | 6 | from django.utils.html import format_html |
9 | 7 | from django.utils.translation import gettext_lazy as _ |
10 | 8 |
|
11 | | -from entangled.forms import EntangledModelForm |
12 | | - |
| 9 | +from finder.forms.file import FileForm |
13 | 10 | from finder.models.file import FileModel |
14 | 11 | from finder.models.inode import InodeModel |
15 | | -from finder.models.label import Label |
16 | 12 | from finder.admin.inode import InodeAdmin |
17 | 13 |
|
18 | 14 |
|
19 | | -class LabelsChoiceField(ModelMultipleChoiceField): |
20 | | - def prepare_value(self, values): |
21 | | - values = super().prepare_value(values) |
22 | | - return [v for v in values if v] if hasattr(values, '__iter__') else values |
23 | | - |
24 | | - |
25 | | -class FileModelForm(EntangledModelForm): |
26 | | - name = CharField( |
27 | | - widget=TextInput(attrs={'size': 100}), |
28 | | - ) |
29 | | - labels = LabelsChoiceField( |
30 | | - queryset=Label.objects.all(), |
31 | | - required=False, |
32 | | - ) |
33 | | - |
34 | | - class Meta: |
35 | | - model = FileModel |
36 | | - untangled_fields = ['name', 'labels'] |
37 | | - exclude = ['meta_data'] |
38 | | - |
39 | | - |
40 | 15 | @admin.register(FileModel) |
41 | 16 | class FileAdmin(InodeAdmin): |
42 | | - form = FileModelForm |
| 17 | + form = FileForm |
43 | 18 | form_template = 'finder/admin/change_file_form.html' |
44 | 19 | readonly_fields = ['details', 'owner', 'created_at', 'last_modified_at', 'mime_type', 'sha1'] |
45 | 20 |
|
|
0 commit comments