summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-20 17:34:56 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-20 17:34:56 +0200
commitf94c8d259834d838bbc84651cb4906a3e3c6b5f2 (patch)
tree0ad4209416bb5b8c920a889d975ab1a0664ae4f4
parent237ed2e28b96640783ae53125731603ca3bb6d2a (diff)
parent581dad7b027cb8d7b4ae97a9e82345f079d18f9a (diff)
downloadIshtar-f94c8d259834d838bbc84651cb4906a3e3c6b5f2.tar.bz2
Ishtar-f94c8d259834d838bbc84651cb4906a3e3c6b5f2.zip
Merge branch 'develop' into develop-bootstrap
-rw-r--r--archaeological_context_records/admin.py2
-rw-r--r--archaeological_files/admin.py4
-rw-r--r--archaeological_finds/admin.py9
-rw-r--r--archaeological_operations/admin.py9
-rw-r--r--archaeological_warehouse/admin.py7
-rw-r--r--ishtar_common/admin.py18
-rw-r--r--ishtar_common/tests.py36
7 files changed, 60 insertions, 25 deletions
diff --git a/archaeological_context_records/admin.py b/archaeological_context_records/admin.py
index 2733fa2ff..d5e4d09b9 100644
--- a/archaeological_context_records/admin.py
+++ b/archaeological_context_records/admin.py
@@ -62,7 +62,7 @@ class ContextRecordAdmin(HistorizedObjectAdmin):
model = models.ContextRecord
form = AdminContextRecordForm
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'cached_label', 'datings'
+ 'cached_label', 'datings'
]
admin_site.register(models.ContextRecord, ContextRecordAdmin)
diff --git a/archaeological_files/admin.py b/archaeological_files/admin.py
index 525f7e840..4dca1afa9 100644
--- a/archaeological_files/admin.py
+++ b/archaeological_files/admin.py
@@ -48,13 +48,15 @@ class FileAdmin(HistorizedObjectAdmin):
'related_file': 'file'
})
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'raw_general_contractor', 'raw_town_planning_service', 'imports',
+ 'raw_general_contractor', 'raw_town_planning_service',
'cached_label', 'imported_line'
]
model = models.File
+
admin_site.register(models.File, FileAdmin)
+
general_models = [models.FileType, models.PermitType]
if settings.COUNTRY == 'fr':
general_models.append(models.SaisineType)
diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py
index 6b925e41c..6f32365b9 100644
--- a/archaeological_finds/admin.py
+++ b/archaeological_finds/admin.py
@@ -51,7 +51,7 @@ class BaseFindAdmin(HistorizedObjectAdmin):
model = models.BaseFind
form = AdminBaseFindForm
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'cache_short_id', 'cache_complete_id', 'imports'
+ 'cache_short_id', 'cache_complete_id',
]
admin_site.register(models.BaseFind, BaseFindAdmin)
@@ -69,7 +69,7 @@ class FindAdmin(HistorizedObjectAdmin):
'container': 'container'
})
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'datings', 'cached_label'
+ 'datings', 'cached_label'
]
admin_site.register(models.Find, FindAdmin)
@@ -97,7 +97,7 @@ class PropertyAdmin(HistorizedObjectAdmin):
'person': 'person',
})
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'administrative_act', 'imports', ]
+ 'administrative_act']
def has_add_permission(self, request):
return False
@@ -118,7 +118,7 @@ class TreatmentAdmin(HistorizedObjectAdmin):
'container': 'container',
})
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'cached_label', 'downstream_lbl', 'upstream_lbl'
+ 'cached_label', 'downstream_lbl', 'upstream_lbl'
]
def has_add_permission(self, request):
@@ -140,7 +140,6 @@ class TreatmentFileAdmin(HistorizedObjectAdmin):
'applicant': 'person',
'applicant_organisation': 'organization',
})
- exclude = ['imports']
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
'cached_label',
]
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py
index f1deac188..bf1415989 100644
--- a/archaeological_operations/admin.py
+++ b/archaeological_operations/admin.py
@@ -40,7 +40,7 @@ class AdministrativeActAdmin(HistorizedObjectAdmin):
search_fields = ('year', 'index')
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
'in_charge', 'operator', 'scientist', 'signatory', 'associated_file',
- 'imports', 'departments_label', 'towns_label']
+ 'departments_label', 'towns_label']
model = models.AdministrativeAct
form = make_ajax_form(
models.AdministrativeAct, {'operation': 'operation'}
@@ -69,7 +69,6 @@ class ArchaeologicalSiteAdmin(HistorizedObjectAdmin):
list_display = ('name', 'reference')
search_fields = ('name', 'reference')
model = models.ArchaeologicalSite
- readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports']
inlines = [OperationInline]
admin_site.register(models.ArchaeologicalSite, ArchaeologicalSiteAdmin)
@@ -112,7 +111,7 @@ class OperationAdmin(HistorizedObjectAdmin):
search_fields += ['code_patriarche']
model = models.Operation
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'cached_label']
+ 'cached_label']
form = AdminOperationForm
inlines = [ArchaeologicalSiteInline]
@@ -144,7 +143,7 @@ class ParcelAdmin(HistorizedObjectAdmin):
'town': 'town'}
)
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'history_date'
+ 'history_date'
]
admin_site.register(models.Parcel, ParcelAdmin)
@@ -196,7 +195,7 @@ class ParcelOwnerAdmin(HistorizedObjectAdmin):
'parcel': 'parcel'}
)
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'history_date'
+ 'history_date'
]
admin_site.register(models.ParcelOwner, ParcelOwnerAdmin)
diff --git a/archaeological_warehouse/admin.py b/archaeological_warehouse/admin.py
index deaffde94..f2b44fcf0 100644
--- a/archaeological_warehouse/admin.py
+++ b/archaeological_warehouse/admin.py
@@ -36,9 +36,7 @@ class WarehouseAdmin(HistorizedObjectAdmin):
'town': 'town',
'person_in_charge': 'person'
})
- readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports'
- ]
+
admin_site.register(models.Warehouse, WarehouseAdmin)
@@ -48,6 +46,7 @@ class ContainerTypeAdmin(admin.ModelAdmin):
'volume')
model = models.ContainerType
+
admin_site.register(models.ContainerType, ContainerTypeAdmin)
@@ -56,7 +55,7 @@ class ContainerAdmin(HistorizedObjectAdmin):
list_filter = ("container_type",)
model = models.Container
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
- 'imports', 'history_date'
+ 'history_date'
]
form = make_ajax_form(model, {
'location': 'warehouse',
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 7cb02e1b3..2df910ffd 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -123,6 +123,16 @@ class HistorizedObjectAdmin(admin.ModelAdmin):
obj.history_modifier = request.user
obj.save()
+ def get_readonly_fields(self, request, obj=None):
+ if obj: # editing an existing object
+ return tuple(self.readonly_fields or []) + tuple(['imports'])
+ return self.readonly_fields
+
+ def get_exclude(self, request, obj=None):
+ if not obj:
+ return tuple(self.exclude or []) + tuple(['imports'])
+ return self.exclude
+
class MyGroupAdmin(GroupAdmin):
class Media:
@@ -156,7 +166,6 @@ class OrganizationAdmin(HistorizedObjectAdmin):
list_filter = ("organization_type",)
search_fields = ('name',)
exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', )
- readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports']
model = models.Organization
admin_site.register(models.Organization, OrganizationAdmin)
@@ -167,7 +176,6 @@ class PersonAdmin(HistorizedObjectAdmin):
list_filter = ("person_types",)
search_fields = ('name', 'surname', 'email', 'raw_name')
exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', )
- readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports']
form = make_ajax_form(models.Person, {'attached_to': 'organization'})
model = models.Person
@@ -185,7 +193,7 @@ class AdminRelatedTownForm(forms.ModelForm):
class AdminTownForm(forms.ModelForm):
class Meta:
model = models.Town
- exclude = []
+ exclude = ['imports']
center = PointField(label=_(u"center"), required=False,
widget=OSMWidget)
children = AutoCompleteSelectMultipleField('town', required=False,
@@ -202,14 +210,14 @@ class TownParentInline(admin.TabularInline):
class TownAdmin(admin.ModelAdmin):
+ model = models.Town
list_display = ['name', ]
search_fields = ['name']
+ readonly_fields = ['cached_label']
if settings.COUNTRY == 'fr':
list_display += ['numero_insee', 'departement', ]
search_fields += ['numero_insee', 'departement__label', ]
list_filter = ("departement",)
- readonly_fields = ['cached_label', 'imports']
- model = models.Town
form = AdminTownForm
inlines = [TownParentInline]
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 8a951b29a..bbb449fe3 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -23,6 +23,8 @@ import os
import shutil
from StringIO import StringIO
+from django.apps import apps
+
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
@@ -38,6 +40,7 @@ from django.test.runner import DiscoverRunner
from ishtar_common import models
from ishtar_common import views
+from ishtar_common.apps import admin_site
from ishtar_common.utils import post_save_point
@@ -347,6 +350,13 @@ class AdminGenTypeTest(TestCase):
models_with_data = gen_models + [models.ImporterModel]
models = models_with_data
module_name = 'ishtar_common'
+ ishtar_apps = [
+ 'ishtar_common', 'archaeological_files', 'archaeological_operations',
+ 'archaeological_context_records', 'archaeological_warehouse',
+ 'archaeological_finds'
+ ]
+ readonly_models = ['archaeological_finds.Property',
+ 'archaeological_finds.Treatment']
def setUp(self):
self.password = 'mypassword'
@@ -359,16 +369,34 @@ class AdminGenTypeTest(TestCase):
self.client.login(username=self.username, password=self.password)
def test_listing_and_detail(self):
- for model in self.models:
+ models = []
+ for app in self.ishtar_apps:
+ app_models = apps.get_app_config(app).get_models()
+ for model in app_models:
+ if model in admin_site._registry:
+ models.append((app, model))
+ for app, model in models:
# quick test to verify basic access to listing
- base_url = '/admin/{}/{}/'.format(self.module_name,
- model.__name__.lower())
+ base_url = '/admin/{}/{}/'.format(app, model.__name__.lower())
url = base_url
response = self.client.get(url)
self.assertEqual(
response.status_code, 200,
msg="Can not access admin list for {}.".format(model))
- if model in self.models_with_data:
+ nb = model.objects.count()
+ url = base_url + "add/"
+ response = self.client.get(url)
+ if app + "." + model.__name__ in self.readonly_models:
+ continue
+ self.assertEqual(
+ response.status_code, 200,
+ msg="Can not access admin add page for {}.".format(model))
+ self.assertEqual(
+ nb, model.objects.count(),
+ msg="A ghost object have been created on access to add page "
+ "for {}.".format(model))
+
+ if nb:
url = base_url + "{}/change/".format(model.objects.all()[0].pk)
response = self.client.get(url)
self.assertEqual(