summaryrefslogtreecommitdiff
path: root/archaeological_operations/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/admin.py')
-rw-r--r--archaeological_operations/admin.py138
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)