#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2012-2015 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # See the file COPYING for details. from ajax_select import make_ajax_form from ajax_select.fields import AutoCompleteSelectField from django import forms from django.contrib import admin from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget from ishtar_common.utils import ugettext_lazy as _ from ishtar_common.apps import admin_site from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin from . import models class DatingAdmin(admin.ModelAdmin): list_display = ("period", "context_records_lbl", "finds_lbl") list_filter = ("period", "dating_type", "quality") model = models.Dating search_fields = [ "context_records__cached_label", "period__label", "find__cached_label", ] readonly_fields = ["context_records_lbl", "finds_lbl"] admin_site.register(models.Dating, DatingAdmin) class AdminContextRecordForm(forms.ModelForm): class Meta: model = models.ContextRecord exclude = [] point_2d = PointField(label=_("Point"), required=False, widget=OSMWidget) multi_polygon = MultiPolygonField( label=_("Multi polygon"), required=False, widget=OSMWidget ) operation = AutoCompleteSelectField("operation") parcel = AutoCompleteSelectField("parcel", required=False) town = AutoCompleteSelectField("town", required=False) archaeological_site = AutoCompleteSelectField("archaeological_site", required=False) lock_user = AutoCompleteSelectField("user", required=False) class ContextRecordAdmin(HistorizedObjectAdmin): list_display = ("label", "operation", "parcel") list_filter = ("unit",) search_fields = ( "label", "parcel__operation__cached_label", "parcel__section", "parcel__parcel_number", ) model = models.ContextRecord form = AdminContextRecordForm readonly_fields = HistorizedObjectAdmin.readonly_fields + [ "cached_label", "datings", ] exclude = ["documents", "main_image"] admin_site.register(models.ContextRecord, ContextRecordAdmin) class RecordRelationsAdmin(admin.ModelAdmin): list_display = ("left_record", "relation_type", "right_record") list_filter = ("relation_type",) model = models.RecordRelations form = make_ajax_form( model, { "left_record": "context_record", "right_record": "context_record", }, ) admin_site.register(models.RecordRelations, RecordRelationsAdmin) class RelationTypeAdmin(GeneralTypeAdmin): list_display = ( "label", "txt_idx", "tiny_label", "available", "symmetrical", "logical_relation", "inverse_relation", "order", "comment", ) admin_site.register(models.RelationType, RelationTypeAdmin) class UnitAdmin(GeneralTypeAdmin): list_display = ["label", "txt_idx", "parent", "available", "order", "comment"] admin_site.register(models.Unit, UnitAdmin) class IdentificationTypeAdmin(GeneralTypeAdmin): list_display = ["label", "txt_idx", "available", "order", "comment"] admin_site.register(models.IdentificationType, IdentificationTypeAdmin) general_models = [ models.DatingType, models.DatingQuality, models.DocumentationType, models.ActivityType, models.ExcavationTechnicType, ] for model in general_models: admin_site.register(model, GeneralTypeAdmin)