#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2010-2011 É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. """ Admin description """ from django import forms from django.contrib import admin from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ from ishtar import settings import models class HistorizedObjectAdmin(admin.ModelAdmin): readonly_fields = ('history_modifier',) def save_model(self, request, obj, form, change): obj.history_modifier = request.user obj.save() class DepartementAdmin(admin.ModelAdmin): list_display = ('number', 'label',) model = models.Departement admin.site.register(models.Departement, DepartementAdmin) class OrganizationAdmin(HistorizedObjectAdmin): list_display = ('name', 'organization_type') list_filter = ("organization_type",) search_fields = ('name',) model = models.Organization admin.site.register(models.Organization, OrganizationAdmin) class PersonAdmin(HistorizedObjectAdmin): list_display = ('name', 'surname', 'email', 'person_type') list_filter = ("person_type",) search_fields = ('name', 'surname', 'email',) model = models.Person admin.site.register(models.Person, PersonAdmin) class FileAdmin(HistorizedObjectAdmin): list_display = ['year', 'numeric_reference', 'internal_reference', 'end_date', 'file_type', 'general_contractor',] if settings.COUNTRY == 'fr': list_display += ['saisine_type', 'reference_number'] list_filter = ("file_type", "year",) search_fields = ('towns__name',) model = models.File admin.site.register(models.File, FileAdmin) 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'] if settings.COUNTRY == 'fr': list_display += ['code_patriarche'] search_fields += ['code_patriarche'] model = models.Operation admin.site.register(models.Operation, OperationAdmin) class OperationSourceAdmin(admin.ModelAdmin): list_display = ('operation', 'title', 'source_type',) list_filter = ('source_type',) search_fields = ('title', 'operation__name') model = models.OperationSource admin.site.register(models.OperationSource, OperationSourceAdmin) class ParcelAdmin(HistorizedObjectAdmin): list_display = ('section', 'parcel_number', 'operation', 'associated_file') search_fields = ('operation__name',) model = models.Parcel admin.site.register(models.Parcel, ParcelAdmin) class PeriodAdmin(admin.ModelAdmin): list_display = ('label', 'start_date', 'end_date', 'parent') model = models.Period admin.site.register(models.Period, PeriodAdmin) class DatingAdmin(admin.ModelAdmin): list_display = ('period', 'start_date', 'end_date', 'dating_type', 'quality') list_filter = ("period", 'dating_type', 'quality') model = models.Dating admin.site.register(models.Dating, DatingAdmin) class ContextRecordAdmin(HistorizedObjectAdmin): list_display = ('label', 'length', 'width', 'thickness', 'depth') list_filter = ('has_furniture',) search_fields = ('parcel__operation__name', "datings__period__label") model = models.ContextRecord admin.site.register(models.ContextRecord, ContextRecordAdmin) class ContextRecordSourceAdmin(admin.ModelAdmin): list_display = ('context_record', 'title', 'source_type',) list_filter = ('source_type',) search_fields = ('title', ) model = models.ContextRecordSource admin.site.register(models.ContextRecordSource, ContextRecordSourceAdmin) class BaseItemAdmin(HistorizedObjectAdmin): list_display = ('label', 'context_record', 'is_isolated') search_fields = ('label', 'context_record__parcel__operation__name',) model = models.BaseItem admin.site.register(models.BaseItem, BaseItemAdmin) class ItemAdmin(HistorizedObjectAdmin): list_display = ('label', 'material_type', 'dating', 'volume', 'weight', 'item_number',) list_filter = ('material_type',) search_fields = ('label', "dating__period__label") model = models.Item admin.site.register(models.Item, ItemAdmin) class ItemSourceAdmin(admin.ModelAdmin): list_display = ('item', 'title', 'source_type',) list_filter = ('source_type',) search_fields = ('title', ) model = models.ItemSource admin.site.register(models.ItemSource, ItemSourceAdmin) class WarehouseAdmin(HistorizedObjectAdmin): list_display = ('name', 'warehouse_type', 'town') list_filter = ('warehouse_type',) search_fields = ('name', 'town') model = models.Warehouse admin.site.register(models.Warehouse, WarehouseAdmin) class AdministrativeActAdmin(HistorizedObjectAdmin): list_display = ('operation', 'act_type', 'signature_date') list_filter = ('act_type',) search_fields = ('operation__name',) model = models.AdministrativeAct admin.site.register(models.AdministrativeAct, AdministrativeActAdmin) class ContainerTypeAdmin(admin.ModelAdmin): list_display = ('label', 'reference', 'length', 'width', 'height', 'volume') model = models.ContainerType admin.site.register(models.ContainerType, ContainerTypeAdmin) class ContainerAdmin(admin.ModelAdmin): list_display = ('reference', 'location', 'container_type',) list_filter = ("container_type",) model = models.Container admin.site.register(models.Container, ContainerAdmin) class TownAdmin(admin.ModelAdmin): list_display = ['name',] search_fields = ['name'] if settings.COUNTRY == 'fr': list_display += ['numero_insee', 'departement', ] search_fields += ['numero_insee', 'departement__label', ] list_filter = ("departement",) model = models.Town admin.site.register(models.Town, TownAdmin) class AuthorAdmin(admin.ModelAdmin): list_display = ['person', 'author_type'] list_filter = ("author_type",) model = models.Author admin.site.register(models.Author, AuthorAdmin) class PropertyAdmin(admin.ModelAdmin): list_display = ['item', 'person', 'start_date', 'end_date'] search_fields = ('item__label', 'person__name') model = models.Property admin.site.register(models.Property, PropertyAdmin) class TreatmentAdmin(HistorizedObjectAdmin): list_display = ('location', 'treatment_type', 'container', 'person') list_filter = ('treatment_type',) model = models.Treatment admin.site.register(models.Treatment, TreatmentAdmin) class TreatmentSourceAdmin(admin.ModelAdmin): list_display = ('treatment', 'title', 'source_type',) list_filter = ('source_type',) search_fields = ('title',) model = models.TreatmentSource admin.site.register(models.TreatmentSource, TreatmentSourceAdmin) class PersonTypeAdmin(admin.ModelAdmin): model = models.PersonType filter_vertical = ('rights',) admin.site.register(models.PersonType, PersonTypeAdmin) basic_models = [models.IshtarUser, models.FileType, models.OperationType, models.DatingType, models.DatingQuality, models.SourceType, models.MaterialType, models.ParcelOwner, models.WarehouseType, models.ActType, models.AuthorType, models.OrganizationType, models.TreatmentType, models.RemainType, models.PermitType, models.Unit, models.ActivityType, models.IdentificationType] if settings.COUNTRY == 'fr': basic_models += [models.Arrondissement, models.Canton, models.SaisineType] for model in basic_models: admin.site.register(model)