diff options
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r-- | ishtar_common/admin.py | 81 |
1 files changed, 37 insertions, 44 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 69f8ec92c..5953896bd 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -29,9 +29,6 @@ import zipfile from rest_framework.authtoken.admin import TokenAdmin from rest_framework.authtoken.models import Token -from ajax_select import make_ajax_form -from ajax_select.fields import AutoCompleteSelectField, AutoCompleteSelectMultipleField - from django.conf import settings from django.conf.urls import url from django.contrib import admin, messages @@ -449,9 +446,7 @@ class HistorizedObjectAdmin(admin.ModelAdmin): "history_m2m", ] - AJAX_FORM_DICT = { - "lock_user": "user", - } + autocomplete_fields = ["lock_user"] def save_model(self, request, obj, form, change): obj.history_modifier = request.user @@ -526,7 +521,7 @@ class OrganizationAdmin(HistorizedObjectAdmin): "merge_candidate", ) model = models.Organization - form = make_ajax_form(model, {"precise_town": "town"}) + autocomplete_fields = ["precise_town"] admin_site.register(models.Organization, OrganizationAdmin) @@ -542,13 +537,13 @@ class ProfileInline(admin.TabularInline): class PersonAdmin(HistorizedObjectAdmin): list_display = ("pk", "name", "surname", "raw_name", "email") list_filter = ("person_types",) - search_fields = ("name", "surname", "email", "raw_name") + search_fields = ("name", "surname", "email", "raw_name", "attached_to__name") exclude = ( "merge_key", "merge_exclusion", "merge_candidate", ) - form = make_ajax_form(models.Person, {"attached_to": "organization"}) + autocomplete_fields = ["attached_to"] model = models.Person inlines = [ProfileInline] @@ -559,9 +554,10 @@ admin_site.register(models.Person, PersonAdmin) class AuthorAdmin(admin.ModelAdmin): list_display = ["person", "author_type"] list_filter = ("author_type",) - search_fields = ("person__name", "person__surname", "person__attached_to__name") + search_fields = ("person__name", "person__surname", "person__attached_to__name", + "author_type__label") model = models.Author - form = make_ajax_form(models.Author, {"person": "person"}) + autocomplete_fields = ["person"] admin_site.register(models.Author, AuthorAdmin) @@ -992,14 +988,6 @@ class ImportJSONActionAdmin(admin.ModelAdmin): ) -class AdminRelatedTownForm(forms.ModelForm): - class Meta: - model = models_common.Town.children.through - exclude = [] - - from_town = AutoCompleteSelectField("town", required=True, label=_("Parent")) - - class AdminTownForm(forms.ModelForm): class Meta: model = models_common.Town @@ -1007,15 +995,12 @@ class AdminTownForm(forms.ModelForm): center = PointField(label=_("Center"), required=False, widget=OSMWidget) limit = MultiPolygonField(label=_("Limit"), required=False, widget=OSMWidget) - children = AutoCompleteSelectMultipleField( - "town", required=False, label=_("Town children") - ) class TownParentInline(admin.TabularInline): model = models_common.Town.children.through fk_name = "to_town" - form = AdminRelatedTownForm + autocomplete_fields = ["from_town"] verbose_name = _("Parent") verbose_name_plural = _("Parents") extra = 1 @@ -1030,9 +1015,10 @@ class TownAdmin(ImportGEOJSONActionAdmin, ImportActionAdmin): readonly_fields = ["cached_label"] if settings.COUNTRY == "fr": list_display += ["numero_insee"] - search_fields += ["numero_insee", "areas__label"] + search_fields += ["numero_insee"] list_filter = ("areas",) form = AdminTownForm + autocomplete_fields = ["children"] inlines = [TownParentInline] actions = [ export_as_csv_action(exclude=["center", "limit"]), @@ -1092,6 +1078,7 @@ class GeneralTypeAdmin(ChangeParentAdmin, ImportActionAdmin, ImportJSONActionAdm list_filter = self.get_list_filter(request) search_fields = self.get_search_fields(request) list_select_related = self.get_list_select_related(request) + sortable_by = self.get_sortable_by(request) cl = ChangeListForChangeView( request, @@ -1106,6 +1093,7 @@ class GeneralTypeAdmin(ChangeParentAdmin, ImportActionAdmin, ImportJSONActionAdm self.list_max_show_all, self.list_editable, self, + sortable_by, ) return cl.get_queryset(request) @@ -1273,13 +1261,13 @@ class CreateDepartmentActionAdmin(GeneralTypeAdmin): @admin.register(models.SupportType, site=admin_site) class SupportType(GeneralTypeAdmin): model = models.SupportType - form = make_ajax_form(model, {"document_types": "source_type"}) + autocomplete_fields = ["document_types"] @admin.register(models.Format, site=admin_site) class Format(GeneralTypeAdmin): model = models.Format - form = make_ajax_form(model, {"document_types": "source_type"}) + autocomplete_fields = ["document_types"] @admin.register(models.DocumentTag, site=admin_site) @@ -1287,12 +1275,20 @@ class DocumentTag(MergeActionAdmin, GeneralTypeAdmin): pass +class DocumentAdmin(admin.ModelAdmin): + model = models.Document + search_fields = ("title", "reference", "internal_reference") + + +admin_site.register(models.Document, DocumentAdmin) + + class AreaAdmin(CreateDepartmentActionAdmin): list_display = ("label", "reference", "parent", "available") search_fields = ("label", "reference") list_filter = ("parent",) model = models.Area - form = make_ajax_form(model, {"towns": "town"}) + autocomplete_fields = ["towns"] admin_site.register(models.Area, AreaAdmin) @@ -1350,6 +1346,14 @@ class ProfileTypeSummaryAdmin(admin.ModelAdmin): admin_site.register(models.ProfileTypeSummary, ProfileTypeSummaryAdmin) +class IshtarUserAdmin(admin.ModelAdmin): + model = models.IshtarUser + search_fields = ("user_ptr", "person") + + +admin_site.register(models.IshtarUser, IshtarUserAdmin) + + class ImporterDefaultValuesInline(admin.TabularInline): model = models.ImporterDefaultValues @@ -1480,7 +1484,7 @@ class ImporterTypeAdmin(ImportJSONActionAdmin): ] list_filter = ["available"] search_fields = ["name"] - form = make_ajax_form(models.ImporterType, {"users": "ishtaruser"}) + autocomplete_fields = ["users"] prepopulated_fields = {"slug": ("name",)} @@ -1690,7 +1694,7 @@ class ImportAdmin(admin.ModelAdmin): "state", "creation_date", ) - form = make_ajax_form(models.Import, {"user": "ishtaruser"}) + autocomplete_fields = ["user"] admin_site.register(models.Import, ImportAdmin) @@ -1818,17 +1822,6 @@ def get_choices_form(): return forms -class CustomFormForm(forms.ModelForm): - class Meta: - model = models.CustomForm - exclude = [] - - form = forms.ChoiceField(label=_("Form"), choices=get_choices_form) - users = AutoCompleteSelectMultipleField( - "ishtaruser", required=False, label=_("Users") - ) - - class ExcludeFieldFormset(BaseInlineFormSet): def get_form_kwargs(self, index): kwargs = super(ExcludeFieldFormset, self).get_form_kwargs(index) @@ -1909,7 +1902,7 @@ class CustomFormAdmin(admin.ModelAdmin): "user_types", "profile_types", ) - form = CustomFormForm + autocomplete_fields = ["users"] inlines = [ExcludeFieldInline, JsonFieldInline] def get_inline_instances(self, request, obj=None): @@ -2012,7 +2005,7 @@ class ExportTaskAdmin(admin.ModelAdmin): ] list_filter = ["state"] actions = [launch_export_action] - form = make_ajax_form(models.ExportTask, {"lock_user": "user"}) + autocomplete_fields = ["lock_user"] admin_site.register(models.ExportTask, ExportTaskAdmin) @@ -2061,7 +2054,7 @@ class ImportTaskAdmin(admin.ModelAdmin): "finished_date", ] list_filter = ["state"] - form = make_ajax_form(models.ImportTask, {"import_user": "user"}) + autocomplete_fields = ["import_user"] actions = [launch_import_action] class Media: @@ -2076,7 +2069,7 @@ class UserProfileAdmin(admin.ModelAdmin): list_filter = ["profile_type"] search_fields = ["person__raw_name"] model = models.UserProfile - form = make_ajax_form(model, {"areas": "area"}) + autocomplete_fields = ["areas"] admin_site.register(models.UserProfile, UserProfileAdmin) |