summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-04 10:24:48 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-24 19:38:56 +0200
commit7d987d9729dd8e116d9bc04cf034054e2b685960 (patch)
treea4a8a08bb96c94c197894af7891226d457008f52
parent7d5f17055e8bfa004ef45c174b9f767bc561d205 (diff)
downloadIshtar-7d987d9729dd8e116d9bc04cf034054e2b685960.tar.bz2
Ishtar-7d987d9729dd8e116d9bc04cf034054e2b685960.zip
Admin find: add dynamic fields
-rw-r--r--archaeological_finds/admin.py10
-rw-r--r--archaeological_finds/lookups.py8
-rw-r--r--ishtar_common/lookups.py48
3 files changed, 42 insertions, 24 deletions
diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py
index 45050eb2e..3aa64d1dd 100644
--- a/archaeological_finds/admin.py
+++ b/archaeological_finds/admin.py
@@ -54,6 +54,7 @@ class BaseFindAdmin(HistorizedObjectAdmin):
'cache_short_id', 'cache_complete_id',
]
+
admin_site.register(models.BaseFind, BaseFindAdmin)
@@ -66,7 +67,14 @@ class FindAdmin(HistorizedObjectAdmin):
model = models.Find
form = make_ajax_form(model, {
'base_finds': 'base_find',
- 'container': 'container'
+ 'container': 'container',
+ 'container_ref': 'container',
+ 'material_types': 'material_type',
+ 'upstream_treatment': 'treatment',
+ 'downstream_treatment': 'treatment',
+ 'treatments': 'treatment',
+ 'main_image': 'document',
+ 'documents': 'document',
})
readonly_fields = HistorizedObjectAdmin.readonly_fields + [
'datings', 'cached_label'
diff --git a/archaeological_finds/lookups.py b/archaeological_finds/lookups.py
index c1298fb83..df51f3824 100644
--- a/archaeological_finds/lookups.py
+++ b/archaeological_finds/lookups.py
@@ -1,6 +1,6 @@
from ajax_select import register
-from ishtar_common.lookups import LookupChannel
+from ishtar_common.lookups import LookupChannel, TypeLookupChannel
from django.db.models import Q
from django.utils.encoding import force_text
@@ -84,3 +84,9 @@ class TreatmentFileLookup(LookupChannel):
def format_item_display(self, item):
return u"<span class='ajax-label'>%s</span>" % item.cached_label
+
+
+@register('material_type')
+class MaterialTypeLookup(TypeLookupChannel):
+ model = models.MaterialType
+
diff --git a/ishtar_common/lookups.py b/ishtar_common/lookups.py
index 181fc97a1..1d566d1db 100644
--- a/ishtar_common/lookups.py
+++ b/ishtar_common/lookups.py
@@ -2,8 +2,7 @@ from ajax_select import register, LookupChannel as BaseLookupChannel
from django.conf import settings
from django.db.models import Q
-from ishtar_common.models import Area, Person, Organization, IshtarUser, Town, \
- Author
+from ishtar_common import models
class LookupChannel(BaseLookupChannel):
@@ -17,10 +16,19 @@ class LookupChannel(BaseLookupChannel):
ids.append(item)
return super(LookupChannel, self).get_objects(ids)
+ def format_item_display(self, item):
+ return u"<span class='ajax-label'>%s</span>" % unicode(item)
+
+
+class TypeLookupChannel(LookupChannel):
+ def get_query(self, q, request):
+ query = Q(label__icontains=q) | Q(label__icontains=q)
+ return self.model.objects.filter(query).order_by('label')[:20]
+
@register('town')
class TownLookup(LookupChannel):
- model = Town
+ model = models.Town
def get_query(self, q, request):
if settings.COUNTRY == 'fr':
@@ -33,25 +41,19 @@ class TownLookup(LookupChannel):
query = Q(name__icontains=q)
return self.model.objects.filter(query).order_by('name')[:20]
- def format_item_display(self, item):
- return u"<span class='ajax-label'>%s</span>" % unicode(item)
-
@register('organization')
class OrganizationLookup(LookupChannel):
- model = Organization
+ model = models.Organization
def get_query(self, q, request):
return self.model.objects.filter(
name__icontains=q).order_by('name')[:20]
- def format_item_display(self, item):
- return u"<span class='ajax-label'>%s</span>" % unicode(item)
-
@register('person')
class PersonLookup(LookupChannel):
- model = Person
+ model = models.Person
def get_query(self, q, request):
query = Q()
@@ -63,13 +65,10 @@ class PersonLookup(LookupChannel):
)
return self.model.objects.filter(query).order_by('name')[:20]
- def format_item_display(self, item):
- return u"<span class='ajax-label'>%s</span>" % unicode(item)
-
@register('author')
class AuthorLookup(LookupChannel):
- model = Author
+ model = models.Author
def get_query(self, q, request):
query = Q()
@@ -83,13 +82,10 @@ class AuthorLookup(LookupChannel):
)
return self.model.objects.filter(query).order_by('person__name')[:20]
- def format_item_display(self, item):
- return u"<span class='ajax-label'>%s</span>" % unicode(item)
-
@register('ishtaruser')
class UserLookup(LookupChannel):
- model = IshtarUser
+ model = models.IshtarUser
def get_query(self, q, request):
query = Q()
@@ -110,11 +106,19 @@ class UserLookup(LookupChannel):
@register('area')
class AreaLookup(LookupChannel):
- model = Area
+ model = models.Area
def get_query(self, q, request):
query = Q(label__icontains=q)
return self.model.objects.filter(query).order_by('label')[:20]
- def format_item_display(self, item):
- return u"<span class='ajax-label'>%s</span>" % unicode(item)
+
+@register('document')
+class DocumentLookup(LookupChannel):
+ model = models.Document
+
+ def get_query(self, q, request):
+ query = Q(title__icontains=q) | Q(reference__icontains=q) | Q(
+ internal_reference__icontains=q
+ )
+ return self.model.objects.filter(query).order_by('title')[:20]