From ac0b1d3178b5c7cbc4cc3baf225c093f63d7f72c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 12 Feb 2020 13:52:38 +0100 Subject: Admin: fix and improve performances --- archaeological_context_records/admin.py | 2 ++ archaeological_files/admin.py | 26 ++++++++++++--------- archaeological_finds/admin.py | 40 +++++++++++++++++++++++---------- archaeological_operations/admin.py | 11 ++++++++- archaeological_warehouse/admin.py | 11 +++++++-- ishtar_common/admin.py | 7 +++++- 6 files changed, 70 insertions(+), 27 deletions(-) diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py index 3c980d550..9bd2f5c05 100644 --- a/archaeological_context_records/admin.py +++ b/archaeological_context_records/admin.py @@ -56,6 +56,7 @@ class AdminContextRecordForm(forms.ModelForm): town = AutoCompleteSelectField('town', required=False) archaeological_site = AutoCompleteSelectField('archaeological_site', required=False) + lock_user = AutoCompleteSelectField('user', required=False) class ContextRecordAdmin(HistorizedObjectAdmin): @@ -68,6 +69,7 @@ class ContextRecordAdmin(HistorizedObjectAdmin): readonly_fields = HistorizedObjectAdmin.readonly_fields + [ 'cached_label', 'datings' ] + exclude = ["documents", "main_image"] admin_site.register(models.ContextRecord, ContextRecordAdmin) diff --git a/archaeological_files/admin.py b/archaeological_files/admin.py index 58c1791c0..b5709bd65 100644 --- a/archaeological_files/admin.py +++ b/archaeological_files/admin.py @@ -35,22 +35,26 @@ class FileAdmin(HistorizedObjectAdmin): if settings.COUNTRY == 'fr': list_filter += ['saisine_type'] search_fields = ('name', 'towns__name', 'permit_reference') + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ + 'in_charge': 'person', + 'general_contractor': 'person', + 'corporation_general_contractor': 'organization', + 'responsible_town_planning_service': 'person', + 'planning_service': 'organization', + 'organization': 'organization', + 'scientist': 'person', + 'main_town': 'town', + 'towns': 'town', + 'related_file': 'file' + }) form = make_ajax_form( - models.File, {'in_charge': 'person', - 'general_contractor': 'person', - 'corporation_general_contractor': 'organization', - 'responsible_town_planning_service': 'person', - 'planning_service': 'organization', - 'organization': 'organization', - 'scientist': 'person', - 'main_town': 'town', - 'towns': 'town', - 'related_file': 'file' - }) + models.File, ajax_form_dict) readonly_fields = HistorizedObjectAdmin.readonly_fields + [ 'raw_general_contractor', 'raw_town_planning_service', 'cached_label', 'imported_line' ] + exclude = ["documents", "main_image"] model = models.File diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index f129881e8..1da39ed82 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -18,7 +18,8 @@ # See the file COPYING for details. from ajax_select import make_ajax_form -from ajax_select.fields import AutoCompleteSelectField +from ajax_select.fields import AutoCompleteSelectField, \ + AutoCompleteSelectMultipleField from django import forms from django.contrib import admin @@ -84,7 +85,8 @@ class FindAdmin(HistorizedObjectAdmin): search_fields = ('label', "base_finds__cache_complete_id", "base_finds__context_record__operation__cached_label") model = models.Find - form = make_ajax_form(model, { + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ 'base_finds': 'base_find', 'container': 'container', 'container_ref': 'container', @@ -95,6 +97,7 @@ class FindAdmin(HistorizedObjectAdmin): 'main_image': 'document', 'documents': 'document', }) + form = make_ajax_form(model, ajax_form_dict) readonly_fields = HistorizedObjectAdmin.readonly_fields + [ 'datings', 'cached_label' ] @@ -121,21 +124,31 @@ class PropertyAdmin(HistorizedObjectAdmin): admin_site.register(models.Property, PropertyAdmin) +class AdminTreatmentForm(forms.ModelForm): + class Meta: + model = models.Treatment + exclude = [] + person = AutoCompleteSelectField('person', required=False) + organization = AutoCompleteSelectField('organization', required=False) + file = AutoCompleteSelectField('treatment_file', required=False) + location = AutoCompleteSelectField("warehouse", required=False) + container = AutoCompleteSelectField("container", required=False) + scientific_monitoring_manager = AutoCompleteSelectField("person", + required=False) + # finds = AutoCompleteSelectMultipleField("find", required=False) + lock_user = AutoCompleteSelectField("user", required=False) + + class TreatmentAdmin(HistorizedObjectAdmin): - list_display = ('year', 'index', 'label','treatment_types_lbl', 'location', + list_display = ('year', 'index', 'label', 'treatment_types_lbl', 'location', 'downstream_lbl', 'upstream_lbl', 'container', 'person') list_filter = ('treatment_types', 'treatment_state', 'year') model = models.Treatment - form = make_ajax_form(model, { - 'person': 'person', - 'organization': 'organization', - 'file': 'treatment_file', - 'location': 'warehouse', - 'container': 'container', - }) + form = AdminTreatmentForm readonly_fields = HistorizedObjectAdmin.readonly_fields + [ - 'cached_label', 'downstream_lbl', 'upstream_lbl' + 'cached_label', 'downstream_lbl', 'upstream_lbl', ] + exclude = ["documents", "main_image"] def has_add_permission(self, request): return False @@ -152,14 +165,17 @@ class TreatmentFileAdmin(HistorizedObjectAdmin): 'applicant__raw_name', 'applicant_organisation__name', 'cached_label') model = models.TreatmentFile - form = make_ajax_form(model, { + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ 'in_charge': 'person', 'applicant': 'person', 'applicant_organisation': 'organization', }) + form = make_ajax_form(model, ajax_form_dict) readonly_fields = HistorizedObjectAdmin.readonly_fields + [ 'cached_label', ] + exclude = ["documents", "main_image"] admin_site.register(models.TreatmentFile, TreatmentFileAdmin) diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index 7d32f6039..057936fc8 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -73,6 +73,13 @@ class ArchaeologicalSiteAdmin(HistorizedObjectAdmin): search_fields = ('name', 'reference') model = models.ArchaeologicalSite inlines = [OperationInline] + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ + 'towns': 'town', + }) + form = make_ajax_form( + models.ArchaeologicalSite, ajax_form_dict) + exclude = ["documents", "main_image"] admin_site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin) @@ -103,6 +110,7 @@ class AdminOperationForm(forms.ModelForm): 'archaeological_site', required=False) if settings.COUNTRY == 'fr': cira_rapporteur = AutoCompleteSelectField('person', required=False) + lock_user = AutoCompleteSelectField('user', required=False) class OperationAdmin(HistorizedObjectAdmin): @@ -115,9 +123,10 @@ class OperationAdmin(HistorizedObjectAdmin): search_fields += ['code_patriarche'] model = models.Operation readonly_fields = HistorizedObjectAdmin.readonly_fields + [ - 'cached_label'] + 'cached_label', 'top_sites'] form = AdminOperationForm inlines = [ArchaeologicalSiteInline] + exclude = ["documents", "main_image"] admin_site.register(models.Operation, OperationAdmin) diff --git a/archaeological_warehouse/admin.py b/archaeological_warehouse/admin.py index 1284fe676..22e53490b 100644 --- a/archaeological_warehouse/admin.py +++ b/archaeological_warehouse/admin.py @@ -37,11 +37,15 @@ class WarehouseAdmin(HistorizedObjectAdmin): list_filter = ('warehouse_type',) search_fields = ('name', 'town') model = models.Warehouse - form = make_ajax_form(model, { + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ 'town': 'town', + 'precise_town': 'town', 'person_in_charge': 'person' }) + form = make_ajax_form(model, ajax_form_dict) inlines = [DivisionInline] + exclude = ["documents", "main_image"] admin_site.register(models.Warehouse, WarehouseAdmin) @@ -63,10 +67,13 @@ class ContainerAdmin(HistorizedObjectAdmin): readonly_fields = HistorizedObjectAdmin.readonly_fields + [ 'history_date' ] - form = make_ajax_form(model, { + ajax_form_dict = HistorizedObjectAdmin.AJAX_FORM_DICT.copy() + ajax_form_dict.update({ 'location': 'warehouse', 'responsible': 'warehouse' }) + form = make_ajax_form(model, ajax_form_dict) + exclude = ["documents", "main_image"] admin_site.register(models.Container, ContainerAdmin) diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 2cf189d2d..71dc2cbdc 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -211,7 +211,12 @@ admin_site.register(Token, TokenAdmin) class HistorizedObjectAdmin(admin.ModelAdmin): - readonly_fields = ['history_creator', 'history_modifier', 'search_vector'] + readonly_fields = ['history_creator', 'history_modifier', 'search_vector', + 'history_m2m'] + + AJAX_FORM_DICT = { + 'lock_user': 'user', + } def save_model(self, request, obj, form, change): obj.history_modifier = request.user -- cgit v1.2.3