diff options
Diffstat (limited to 'archaeological_operations/admin.py')
-rw-r--r-- | archaeological_operations/admin.py | 138 |
1 files changed, 111 insertions, 27 deletions
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index 3abf22eae..f1deac188 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -17,9 +17,17 @@ # See the file COPYING for details. +from ajax_select import make_ajax_form +from ajax_select.fields import AutoCompleteSelectField, \ + AutoCompleteSelectMultipleField + +from django import forms from django.conf import settings from django.contrib import admin +from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget +from django.utils.translation import ugettext_lazy as _ +from ishtar_common.apps import admin_site from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin import models @@ -30,13 +38,15 @@ class AdministrativeActAdmin(HistorizedObjectAdmin): 'act_type') list_filter = ('act_type',) search_fields = ('year', 'index') - readonly_fields = ('in_charge', 'operator', 'scientist', 'signatory', - 'associated_file', 'imports', - 'departments_label', 'towns_label', - 'history_modifier', 'history_creator') + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'in_charge', 'operator', 'scientist', 'signatory', 'associated_file', + 'imports', 'departments_label', 'towns_label'] model = models.AdministrativeAct + form = make_ajax_form( + models.AdministrativeAct, {'operation': 'operation'} + ) -admin.site.register(models.AdministrativeAct, AdministrativeActAdmin) +admin_site.register(models.AdministrativeAct, AdministrativeActAdmin) class PeriodAdmin(admin.ModelAdmin): @@ -45,29 +55,68 @@ class PeriodAdmin(admin.ModelAdmin): list_filter = ('parent',) model = models.Period -admin.site.register(models.Period, PeriodAdmin) +admin_site.register(models.Period, PeriodAdmin) + + +class OperationInline(admin.TabularInline): + model = models.Operation.archaeological_sites.through + form = make_ajax_form( + model, {'operation': 'operation'}) + extra = 1 class ArchaeologicalSiteAdmin(HistorizedObjectAdmin): list_display = ('name', 'reference') search_fields = ('name', 'reference') model = models.ArchaeologicalSite - -admin.site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin) + readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports'] + inlines = [OperationInline] + +admin_site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin) + + +class ArchaeologicalSiteInline(admin.TabularInline): + model = models.Operation.archaeological_sites.through + form = make_ajax_form( + model, {'archaeologicalsite': 'archaeological_site'}) + extra = 1 + + +class AdminOperationForm(forms.ModelForm): + class Meta: + model = models.Operation + exclude = [] + point = PointField(label=_(u"Point"), required=False, + widget=OSMWidget) + multi_polygon = MultiPolygonField(label=_(u"Multi polygon"), required=False, + widget=OSMWidget) + in_charge = AutoCompleteSelectField('person', required=False) + scientist = AutoCompleteSelectField('person', required=False) + associated_file = AutoCompleteSelectField('file', required=False) + operator = AutoCompleteSelectField('organization', required=False) + collaborators = AutoCompleteSelectMultipleField('person', required=False) + towns = AutoCompleteSelectMultipleField('town', required=False) + archaeological_sites = AutoCompleteSelectMultipleField( + 'archaeological_site', required=False) + if settings.COUNTRY == 'fr': + cira_rapporteur = AutoCompleteSelectField('person', required=False) class OperationAdmin(HistorizedObjectAdmin): - list_display = ['year', 'operation_code', 'start_date', - 'excavation_end_date', 'end_date', - 'operation_type'] - list_filter = ("year", "operation_type",) - search_fields = ['towns__name', 'operation_code'] + list_display = ['year', 'operation_code', + 'operation_type', 'common_name'] + list_filter = ("operation_type", "year",) + search_fields = ['towns__name', 'cached_label'] if settings.COUNTRY == 'fr': - list_display += ['code_patriarche'] + list_display.insert(2, 'code_patriarche') search_fields += ['code_patriarche'] model = models.Operation + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'imports', 'cached_label'] + form = AdminOperationForm + inlines = [ArchaeologicalSiteInline] -admin.site.register(models.Operation, OperationAdmin) +admin_site.register(models.Operation, OperationAdmin) class OperationSourceAdmin(admin.ModelAdmin): @@ -75,49 +124,84 @@ class OperationSourceAdmin(admin.ModelAdmin): list_filter = ('source_type',) search_fields = ('title', 'operation__common_name') model = models.OperationSource + form = make_ajax_form( + model, {'operation': 'operation', + 'authors': 'author'} + ) -admin.site.register(models.OperationSource, OperationSourceAdmin) +admin_site.register(models.OperationSource, OperationSourceAdmin) class ParcelAdmin(HistorizedObjectAdmin): list_display = ['section', 'parcel_number', 'operation', 'associated_file'] - search_fields = ('operation__name',) + search_fields = ('operation__cached_label', + 'associated_file__cached_label', + 'year', 'section', 'parcel_number') model = models.Parcel + form = make_ajax_form( + model, {'associated_file': 'file', + 'operation': 'operation', + 'town': 'town'} + ) + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'imports', 'history_date' + ] -admin.site.register(models.Parcel, ParcelAdmin) +admin_site.register(models.Parcel, ParcelAdmin) class RecordRelationsAdmin(admin.ModelAdmin): list_display = ('left_record', 'relation_type', 'right_record') list_filter = ('relation_type',) + model = models.RecordRelations + search_fields = ['left_record__cached_label', + 'right_record__cached_label'] + form = make_ajax_form( + model, {'left_record': 'operation', + 'right_record': 'operation'}) -admin.site.register(models.RecordRelations, RecordRelationsAdmin) +admin_site.register(models.RecordRelations, RecordRelationsAdmin) class RelationTypeAdmin(admin.ModelAdmin): list_display = ('label', 'txt_idx', 'tiny_label', 'available', 'symmetrical', 'inverse_relation', 'comment') -admin.site.register(models.RelationType, RelationTypeAdmin) +admin_site.register(models.RelationType, RelationTypeAdmin) class ActTypeAdmin(GeneralTypeAdmin): list_filter = ('intented_to',) list_display = ['label', 'txt_idx', 'available', 'intented_to'] -admin.site.register(models.ActType, ActTypeAdmin) +admin_site.register(models.ActType, ActTypeAdmin) class ReportStateAdmin(GeneralTypeAdmin): list_display = ['label', 'txt_idx', 'available', 'order', 'comment'] -admin.site.register(models.ReportState, ReportStateAdmin) +admin_site.register(models.ReportState, ReportStateAdmin) + + +class ParcelOwnerAdmin(HistorizedObjectAdmin): + list_display = ['parcel', 'operation', 'associated_file', + 'owner'] + search_fields = ('parcel__operation__cached_label', + 'parcel__associated_file__cached_label', + 'owner__name', 'owner__surname', 'parcel__section', + 'parcel__parcel_number') + model = models.ParcelOwner + form = make_ajax_form( + model, {'owner': 'person', + 'parcel': 'parcel'} + ) + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'imports', 'history_date' + ] + +admin_site.register(models.ParcelOwner, ParcelOwnerAdmin) general_models = [models.RemainType] for model in general_models: - admin.site.register(model, GeneralTypeAdmin) - -basic_models = [models.ParcelOwner] -for model in basic_models: - admin.site.register(model) + admin_site.register(model, GeneralTypeAdmin) |