summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-18 17:49:57 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-18 17:51:30 +0200
commitade7bd4b74d9ae42c54648cc7390d8c067b5c5e3 (patch)
tree4136673563f802d6de992512e3c4adde86ef2a4e /ishtar_common/admin.py
parent9a3d3dcbca9395c00e55d6ee4909ba9b9a4752f8 (diff)
downloadIshtar-ade7bd4b74d9ae42c54648cc7390d8c067b5c5e3.tar.bz2
Ishtar-ade7bd4b74d9ae42c54648cc7390d8c067b5c5e3.zip
Djangoization - Major refactoring (step 1)
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py240
1 files changed, 240 insertions, 0 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
new file mode 100644
index 000000000..6d22fbcfa
--- /dev/null
+++ b/ishtar_common/admin.py
@@ -0,0 +1,240 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2010-2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# 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 <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+"""
+Admin description
+"""
+
+from django import forms
+from django.conf import settings
+from django.contrib import admin
+from django.core.exceptions import ObjectDoesNotExist
+from django.utils.translation import ugettext_lazy as _
+
+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)