diff options
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 |
commit | 7d987d9729dd8e116d9bc04cf034054e2b685960 (patch) | |
tree | a4a8a08bb96c94c197894af7891226d457008f52 | |
parent | 7d5f17055e8bfa004ef45c174b9f767bc561d205 (diff) | |
download | Ishtar-7d987d9729dd8e116d9bc04cf034054e2b685960.tar.bz2 Ishtar-7d987d9729dd8e116d9bc04cf034054e2b685960.zip |
Admin find: add dynamic fields
-rw-r--r-- | archaeological_finds/admin.py | 10 | ||||
-rw-r--r-- | archaeological_finds/lookups.py | 8 | ||||
-rw-r--r-- | ishtar_common/lookups.py | 48 |
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] |