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) | 
