summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-07-10 16:49:03 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-13 18:26:03 +0200
commitae76035bc7fe939996dfff4e8fc8777c5686e60b (patch)
tree6c55db881e0a2b0639035a474956cd3fd6b01404
parent71e370980efa9ff69cd176d6af431c99b9f080e4 (diff)
downloadIshtar-ae76035bc7fe939996dfff4e8fc8777c5686e60b.tar.bz2
Ishtar-ae76035bc7fe939996dfff4e8fc8777c5686e60b.zip
Search widget: dynamic link for bookmark save
-rw-r--r--archaeological_context_records/forms.py6
-rw-r--r--archaeological_files/forms.py18
-rw-r--r--archaeological_finds/forms.py6
-rw-r--r--archaeological_finds/forms_treatments.py24
-rw-r--r--archaeological_operations/forms.py16
-rw-r--r--archaeological_warehouse/forms.py12
-rw-r--r--ishtar_common/forms_common.py24
-rw-r--r--ishtar_common/templates/ishtar/forms/search_query.html2
-rw-r--r--ishtar_common/templates/widgets/search_input.html6
-rw-r--r--ishtar_common/widgets.py11
10 files changed, 85 insertions, 40 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index 3267f806f..2fd3fee9a 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -60,8 +60,10 @@ class OperationFormSelection(CustomForm, forms.Form):
class RecordSelect(CustomForm, TableSelect):
form_admin_name = _(u"Context record - 001 - Search")
form_slug = "contextrecord-001-search"
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-context-records', 'contextrecord'
+ ))
label = forms.CharField(label=_(u"ID"), max_length=100)
town = get_town_field()
if settings.COUNTRY == 'fr':
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 96f12b9f5..645953a78 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -47,8 +47,10 @@ from bootstrap_datepicker.widgets import DatePicker
class FileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-files', 'file'
+ ))
year = forms.IntegerField(label=_("Year"))
numeric_reference = forms.IntegerField(label=_("Numeric reference"))
internal_reference = forms.CharField(max_length=200,
@@ -407,8 +409,10 @@ class FinalFileDeleteForm(FinalForm):
class AdministrativeActFileModifySelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'administrativeact'
+ ))
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
@@ -436,8 +440,10 @@ class AdministrativeActFileModifySelect(TableSelect):
class AdministrativeActFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'administrativeact'
+ ))
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index f814b7fb4..0c9788d4f 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -408,8 +408,10 @@ DatingFormSet.form_slug = "find-040-dating"
class FindSelect(CustomForm, TableSelect):
form_admin_name = _(u"Find - 001 - Search")
form_slug = "find-001-search"
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-finds', 'find'
+ ))
base_finds__cache_short_id = forms.CharField(label=_(u"Short ID"))
base_finds__cache_complete_id = forms.CharField(label=_(u"Complete ID"))
label = forms.CharField(label=_(u"Free ID"))
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index f2a47e727..ae6152951 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -44,8 +44,10 @@ logger = logging.getLogger(__name__)
class TreatmentSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-finds', 'treatment'
+ ))
label = forms.CharField(label=_(u"Label"))
other_reference = forms.CharField(label=_(u"Other ref."))
year = forms.IntegerField(label=_(u"Year"))
@@ -322,8 +324,10 @@ class DashboardForm(IshtarForm):
class AdministrativeActTreatmentSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'administrativeact'
+ ))
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
act_type = forms.ChoiceField(label=_("Act type"), choices=[])
@@ -393,8 +397,10 @@ class AdministrativeActTreatmentModifForm(
class TreatmentFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-finds', 'treatmentfile'
+ ))
name = forms.CharField(label=_(u"Name"))
internal_reference = forms.CharField(label=_(u"Internal ref."))
year = forms.IntegerField(label=_(u"Year"))
@@ -580,8 +586,10 @@ class DashboardTreatmentFileForm(IshtarForm):
class AdministrativeActTreatmentFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'administrativeact'
+ ))
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
act_type = forms.ChoiceField(label=_("Act type"), choices=[])
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 29a86cc2e..acce3835b 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -474,8 +474,9 @@ RecordRelationsFormSet.form_slug = "operation-080-relations"
class OperationSelect(TableSelect):
_model = models.Operation
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'operation'))
year = forms.IntegerField(label=_("Year"))
operation_code = forms.IntegerField(label=_(u"Numeric reference"))
if settings.COUNTRY == 'fr':
@@ -1245,8 +1246,9 @@ class OperationDeletionForm(FinalForm):
class SiteSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'archaeologicalsite'))
reference = forms.CharField(label=_(u"Reference"), max_length=200,
required=False)
name = forms.CharField(label=_(u"Name"), max_length=200, required=False)
@@ -1357,8 +1359,10 @@ class SiteUnderwaterForm(ManageOldType):
class AdministrativeActOpeSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-operations', 'administrativeact'
+ ))
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index e13255efc..09c64a7dc 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -79,8 +79,10 @@ SelectedDivisionFormset.form_slug = "warehouse-020-divisions"
class WarehouseSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-warehouse', 'warehouse'
+ ))
name = forms.CharField(label=_(u"Name"))
warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), choices=[])
towns = forms.CharField(label=_(u"Town"))
@@ -245,8 +247,10 @@ class ContainerModifyForm(ContainerForm):
class ContainerSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'archaeological-warehouse', 'container'
+ ))
location = get_warehouse_field()
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
reference = forms.CharField(label=_(u"Ref."))
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 397b87815..ec6f7bc96 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -338,8 +338,10 @@ class OrganizationForm(ManageOldType, NewItemForm):
class OrganizationSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'ishtar-common', 'organization'
+ ))
name = forms.CharField(label=_(u"Name"), max_length=300)
organization_type = forms.ChoiceField(label=_(u"Type"), choices=[])
@@ -453,8 +455,10 @@ class BaseOrganizationForm(forms.ModelForm):
class PersonSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'ishtar-common', 'person'
+ ))
name = forms.CharField(label=_(u"Name"), max_length=200)
surname = forms.CharField(label=_(u"Surname"), max_length=50)
email = forms.CharField(label=_(u"Email"), max_length=75)
@@ -582,8 +586,10 @@ class PersonUserFormSelection(PersonFormSelection):
class IshtarUserSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'ishtar-common', 'ishtaruser'
+ ))
username = forms.CharField(label=_(u"Username"), max_length=200)
name = forms.CharField(label=_(u"Name"), max_length=200)
surname = forms.CharField(label=_(u"Surname"), max_length=50)
@@ -1172,8 +1178,10 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
class DocumentSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"),
- widget=widgets.SearchWidget)
+ search_vector = forms.CharField(
+ label=_(u"Full text search"), widget=widgets.SearchWidget(
+ 'ishtar-common', 'document'
+ ))
authors = forms.IntegerField(
widget=widgets.JQueryAutoComplete(
"/" + settings.URL_PATH + 'autocomplete-author',
diff --git a/ishtar_common/templates/ishtar/forms/search_query.html b/ishtar_common/templates/ishtar/forms/search_query.html
index ff51d483d..d44c61ade 100644
--- a/ishtar_common/templates/ishtar/forms/search_query.html
+++ b/ishtar_common/templates/ishtar/forms/search_query.html
@@ -2,7 +2,7 @@
<div class="modal-dialog modal-sm" id="save-search-div">
<div class="modal-content">
<div class="modal-header">
- <h5>{% trans "Bookmark search" %}</h5>
+ <h5>{% trans "Bookmark this search" %}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
diff --git a/ishtar_common/templates/widgets/search_input.html b/ishtar_common/templates/widgets/search_input.html
index 01e49e93b..7f5526b18 100644
--- a/ishtar_common/templates/widgets/search_input.html
+++ b/ishtar_common/templates/widgets/search_input.html
@@ -23,12 +23,12 @@
id="save-search-button"
data-target="#modal-dynamic-form"
data-modal-open="#modal-dynamic-form"
- title="{% trans 'Bookmark save' %}"
- href="{% url 'save-search-query' 'archaeological-operations' 'operation'%}">
+ title="{% trans 'Bookmark this search' %}"
+ href="{% url 'save-search-query' app_name model %}">
<i class="fa fa-star-o" aria-hidden="true"></i>
</a>
<span class="input-group-text input-link disabled"
- title="{% trans 'Load bookmark' %}"
+ title="{% trans 'Bookmarks' %}"
id="load-bookmark">
<i class="fa fa-bookmark" aria-hidden="true"></i>
</span>
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 8788920af..405b5d69e 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -479,6 +479,17 @@ if settings.SURFACE_UNIT == 'square-metre':
class SearchWidget(forms.TextInput):
template_name = 'widgets/search_input.html'
+ def __init__(self, app_name=None, model=None, attrs=None):
+ super(SearchWidget, self).__init__(attrs)
+ self.app_name = app_name
+ self.model = model
+
+ def get_context(self, name, value, attrs):
+ context = super(SearchWidget, self).get_context(name, value, attrs)
+ context['app_name'] = self.app_name
+ context['model'] = self.model
+ return context
+
class ModelFieldMixin(object):
def to_python(self, value):