diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-08-04 20:03:40 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-08-04 20:03:40 +0200 |
commit | 871f45bac5b1f7ccbdb167fe96c67bc16db4420b (patch) | |
tree | 8c7cc809273250ba9e2c06389cf05add162edd61 /archaeological_finds/admin.py | |
parent | 70f0ee9c5d7e5250ba5af7469158a8ff04dd4830 (diff) | |
download | Ishtar-871f45bac5b1f7ccbdb167fe96c67bc16db4420b.tar.bz2 Ishtar-871f45bac5b1f7ccbdb167fe96c67bc16db4420b.zip |
Admin: improve forms, lists for finds, base finds, treatements, treatment requests, etc.
Diffstat (limited to 'archaeological_finds/admin.py')
-rw-r--r-- | archaeological_finds/admin.py | 99 |
1 files changed, 89 insertions, 10 deletions
diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index 9727e9d0e..733d5ba5f 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -17,7 +17,15 @@ # 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.contrib import admin +from django.contrib.gis.forms import PointField, PolygonField, \ + LineStringField, OSMWidget +from django.utils.translation import ugettext_lazy as _ from ishtar_common.apps import admin_site from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin @@ -25,19 +33,45 @@ from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin import models +class AdminBaseFindForm(forms.ModelForm): + class Meta: + model = models.BaseFind + exclude = [] + point_2d = PointField(label=_(u"Point (2D)"), required=False, + widget=OSMWidget) + line = LineStringField(label=_(u"Line"), required=False, + widget=OSMWidget) + polygon = PolygonField(label=_(u"Polygon"), required=False, + widget=OSMWidget) + context_record = AutoCompleteSelectField('context_record') + + class BaseFindAdmin(HistorizedObjectAdmin): - list_display = ('label', 'context_record', 'batch') + list_display = ('label', 'context_record', 'index') search_fields = ('label', 'context_record__parcel__operation__name',) model = models.BaseFind + form = AdminBaseFindForm + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'cache_short_id', 'cache_complete_id', 'imports' + ] admin_site.register(models.BaseFind, BaseFindAdmin) class FindAdmin(HistorizedObjectAdmin): - list_display = ('label', 'dating', 'volume', 'weight', - 'find_number',) - search_fields = ('label', "datings__period__label") + list_display = ('label', 'operations_lbl', 'context_records_lbl', 'index', + 'dating', 'materials') + list_filter = ('datings__period', 'material_types') + search_fields = ('label', "base_finds__cache_complete_id", + "base_finds__context_record__operation__cached_label") model = models.Find + form = make_ajax_form(model, { + 'base_finds': 'base_find', + 'container': 'container' + }) + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'imports', 'datings', 'cached_label' + ] admin_site.register(models.Find, FindAdmin) @@ -47,38 +81,83 @@ class FindSourceAdmin(admin.ModelAdmin): list_filter = ('source_type',) search_fields = ('title', ) model = models.FindSource + form = make_ajax_form(model, { + 'authors': 'author', + 'find': 'find' + }) admin_site.register(models.FindSource, FindSourceAdmin) -class PropertyAdmin(admin.ModelAdmin): +class PropertyAdmin(HistorizedObjectAdmin): list_display = ['find', 'person', 'start_date', 'end_date'] search_fields = ('find__label', 'person__name') model = models.Property + form = make_ajax_form(model, { + 'find': 'find', + 'person': 'person', + }) + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'administrative_act', 'imports', ] + + def has_add_permission(self, request): + return False admin_site.register(models.Property, PropertyAdmin) class TreatmentAdmin(HistorizedObjectAdmin): - list_display = ('location', 'treatment_types_lbl', 'container', 'person') + 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', + }) + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'imports', 'cached_label', 'downstream_lbl', 'upstream_lbl' + ] + + def has_add_permission(self, request): + return False admin_site.register(models.Treatment, TreatmentAdmin) class TreatmentFileAdmin(HistorizedObjectAdmin): - list_display = ('year', 'index', 'name', 'internal_reference') - search_fields = ('cached_label',) + list_display = ('type', 'year', 'index', 'name', + 'applicant', 'in_charge', 'internal_reference') + list_filter = ('type', 'year') + search_fields = ('name', 'applicant__name', 'applicant__surname', + 'applicant__raw_name', 'applicant_organisation__name', + 'cached_label') model = models.TreatmentFile + form = make_ajax_form(model,{ + 'in_charge': 'person', + 'applicant': 'person', + 'applicant_organisation': 'organization', + }) + exclude = ['imports'] + readonly_fields = HistorizedObjectAdmin.readonly_fields + [ + 'cached_label', + ] admin_site.register(models.TreatmentFile, TreatmentFileAdmin) class TreatmentSourceAdmin(admin.ModelAdmin): - list_display = ('treatment', 'title', 'source_type',) + list_display = ('title', 'treatment', 'source_type',) list_filter = ('source_type',) - search_fields = ('title',) + search_fields = ('title', 'treatment__cached_label') model = models.TreatmentSource + form = make_ajax_form(model, { + 'treatment': 'treatment', + 'authors': 'author' + }) admin_site.register(models.TreatmentSource, TreatmentSourceAdmin) |