summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/forms.py15
-rw-r--r--ishtar_common/urls.py5
-rw-r--r--ishtar_common/views.py22
3 files changed, 40 insertions, 2 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 27c306e30..72dc6bfd2 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -95,6 +95,7 @@ from archaeological_context_records.forms import PeriodSelect
from ishtar_common.models import (
Area,
+ BiographicalNote,
get_current_profile,
IshtarUser,
OperationType,
@@ -217,6 +218,7 @@ class BasicFindForm(CustomForm, ManageOldType):
"functional_area",
"technical_area",
"technical_processe",
+ "museum_former_collection",
]
associated_models = {
"material_type": models.MaterialType,
@@ -235,6 +237,8 @@ class BasicFindForm(CustomForm, ManageOldType):
"museum_collection": models.MuseumCollection,
"museum_inventory_conformity": models.InventoryConformity,
"museum_original_repro": models.OriginalReproduction,
+ "museum_donor": BiographicalNote,
+ "museum_former_collection": BiographicalNote,
#'collection': Warehouse,
}
field_order = [
@@ -383,11 +387,18 @@ class BasicFindForm(CustomForm, ManageOldType):
label=_("Museum entry date (end)"), widget=DatePicker, required=False
)
museum_entry_date_comment = forms.CharField(label=_("Comment on museum entry date"), required=False)
- #museum_donor =
+ museum_donor = forms.IntegerField(
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-biographicalnote'),
+ associated_model=BiographicalNote),
+ label=_("Donor, testator or vendor"),
+ required=False
+ )
museum_collection = forms.ChoiceField(
label=_("Collection"), required=False, choices=[]
)
- # museum_former_collection =
+ museum_former_collection = widgets.Select2MultipleField(
+ model=BiographicalNote, label=_("Former collections"), required=False, remote=True)
museum_inventory_entry_year = forms.IntegerField(
label=_("Inventory entry year"), required=False, min_value=0, max_value=2100
)
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index 85d56aeb7..86d10969d 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -475,6 +475,11 @@ urlpatterns += [
views.autocomplete_organization,
name="autocomplete-organization",
),
+ url(
+ r"autocomplete-biographical-note/$",
+ views.autocomplete_biographical_note,
+ name="autocomplete-biographicalnote"
+ ),
url(r"changelog/(?:(?P<page>\d+)/)?", views.ChangelogView.as_view(), name="changelog"),
url(r"person-merge/(?:(?P<page>\d+)/)?$", views.person_merge, name="person_merge"),
url(
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index d5b2f369f..bee4d6628 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1093,6 +1093,28 @@ def autocomplete_author(request):
return HttpResponse(data, content_type="text/plain")
+def autocomplete_biographical_note(request):
+ if not request.user.has_perm("ishtar_common.view_person", models.Person):
+ return HttpResponse("[]", content_type="text/plain")
+ q = request.GET.get("term", "")
+ limit = request.GET.get("limit", 20)
+ try:
+ limit = int(limit)
+ except ValueError:
+ return HttpResponseBadRequest()
+ query = Q()
+ for q in q.split(" "):
+ qu = (
+ Q(last_name__unaccent__icontains=q)
+ | Q(first_name__unaccent__icontains=q)
+ | Q(denomination__unaccent__icontains=q)
+ )
+ query = query & qu
+ users = models.BiographicalNote.objects.filter(query).distinct()[:limit]
+ data = json.dumps([{"id": user.pk, "value": str(user)} for user in users])
+ return HttpResponse(data, content_type="text/plain")
+
+
new_person = new_qa_item(models.Person, forms.PersonForm, page_name=_("New person"),
callback=get_person_gdpr_log)
modify_person = modify_qa_item(models.Person, forms.PersonForm, callback=get_person_gdpr_log)