Skip to content

Commit

Permalink
[search][keyword] #393 #394 utilisation des mots-clés dans la recherc…
Browse files Browse the repository at this point in the history
…he avancée
  • Loading branch information
fab2713 committed Dec 13, 2023
1 parent fc466fa commit 1b49afa
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from ..models.domain_vocal import DomainVocal as DomainVocalModel
from ..models.instrument import Instrument as InstrumentModel
from ..models.item import Item as ItemModel
from ..models.keyword import Keyword as KeywordModel
from ..models.language import Language as LanguageModel
from ..models.location import Location as LocationModel
from ..models.mediatype import MediaType as MediaTypeModel
Expand All @@ -35,6 +36,7 @@
from .domain_vocal import DomainVocalSerializer
from .instrument import InstrumentSerializer
from .item import AdvancedSearchItemSerializer
from .keyword import KeywordSerializer
from .language import LanguageSerializer
from .location_gis import LocationGisSerializer
from .mediatype import MediaTypeSerializer
Expand Down Expand Up @@ -69,6 +71,8 @@ def to_representation(self, instance):
serializer = InstrumentSerializer(instance)
elif isinstance(instance, ItemModel):
serializer = AdvancedSearchItemSerializer(instance)
elif isinstance(instance, KeywordModel):
serializer = KeywordSerializer(instance)
elif isinstance(instance, LanguageModel):
serializer = LanguageSerializer(instance)
elif isinstance(instance, LocationModel):
Expand Down
13 changes: 13 additions & 0 deletions francoralite/apps/francoralite_api/tests/test_advanced_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,19 @@ def test_instrument(self):
def test_jingle(self):
pass # TODO critère unique : textes différents (cf incipit)

def test_keyword(self):
"""
- keyword : 1 - violon
- keyword : 2 - biographie
"""
self._test_all_combinations(
"keyword",
{
1: {"collections": {1, 2}, "items": {1, 2, 3}},
2: {"collections": {1, 2}, "items": {2, 3}},
},
)

def test_language(self):
"""
- language : 1 - Anglais
Expand Down
9 changes: 9 additions & 0 deletions francoralite/apps/francoralite_api/views/advanced_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from ..models.domain_vocal import DomainVocal
from ..models.instrument import Instrument
from ..models.item import Item
from ..models.keyword import Keyword
from ..models.language import Language
from ..models.location import Location
from ..models.mediatype import MediaType
Expand Down Expand Up @@ -190,6 +191,14 @@ def get(self, *args, **kwargs):
"paths": (None, "jingle"),
"lookups": "icontains",
},
{
"name": "keyword",
"paths": (
"collection__itemkeyword__keyword",
"itemkeyword__keyword",
),
"parameter_model": Keyword,
},
{
"name": "language",
"paths": (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,12 @@ class FrancoraliteInstrument extends FrancoraliteEnumAutocomplete {
}
}

class FrancoraliteKeyword extends FrancoraliteEnumAutocomplete {
getDefaultUrl() {
return '/api/keyword?limit=50&search=';
}
}

class FrancoraliteLanguage extends FrancoraliteEnumAutocomplete {
getDefaultUrl() {
return '/api/language?limit=50&search=';
Expand Down Expand Up @@ -395,6 +401,7 @@ customElements.define('francoralite-domain-tale', FrancoraliteDomainTale);
customElements.define('francoralite-domain-vocal', FrancoraliteDomainVocal);
customElements.define('francoralite-informer', FrancoraliteInformer);
customElements.define('francoralite-instrument', FrancoraliteInstrument);
customElements.define('francoralite-keyword', FrancoraliteKeyword);
customElements.define('francoralite-language', FrancoraliteLanguage);
customElements.define('francoralite-location', FrancoraliteLocation);
customElements.define('francoralite-media-type', FrancoraliteMediaType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ <h3>{% trans "Votre recherche" %},
{% include "inc/search_remind_filter.html" with multi_values=parameters.instances.recording_context operator=parameters.operators.recording_context title=_('Contexte d’enregistrement') %}
{% include "inc/search_remind_filter.html" with multi_values=parameters.instances.usefulness operator=parameters.operators.usefulness title=_('Fonction') %}
{% include "inc/search_remind_filter.html" with multi_values=parameters.instances.dance operator=parameters.operators.dance title=_('Danse') %}
{% include "inc/search_remind_filter.html" with multi_values=parameters.instances.keyword operator=parameters.operators.keyword title=_('Mot(s)-clé(s)') %}
{% if 'T' in parameters.domain %}{% include "inc/search_remind_filter.html" with mono_value=_('oui') title=_('Témoignage') %}{% endif %}
{% if 'C' in parameters.domain %}{% include "inc/search_remind_filter.html" with mono_value=_('oui') title=_('Chanson') %}{% endif %}
{% if 'A' in parameters.domain %}{% include "inc/search_remind_filter.html" with mono_value=_('oui') title=_('Autre expression vocale') %}{% endif %}
Expand Down Expand Up @@ -333,7 +334,7 @@ <h2>Filtres de recherche</h2>
<francoralite-cultural-area name="cultural_area" data-values="{{ parameters_instances_json.cultural_area }}" data-default-operator="{{ parameters.operators.cultural_area|default:'or' }}"></francoralite-cultural-area>
</details>

<details{% if parameters_instances_json.media_type or parameters_instances_json.language or parameters_instances_json.recording_context or parameters_instances_json.usefulness or parameters_instances_json.dance %} open{% endif %} id="details_what">
<details{% if parameters_instances_json.media_type or parameters_instances_json.language or parameters_instances_json.recording_context or parameters_instances_json.usefulness or parameters_instances_json.dance or parameters_instances_json.keyword %} open{% endif %} id="details_what">
<summary>{% trans "Quoi ?" %}</summary>
<label for="media_type">{% trans "Type de média" %}</label>
<br>
Expand Down Expand Up @@ -369,6 +370,13 @@ <h2>Filtres de recherche</h2>
<a target="_blank" id="link_dance" href="/dance">
<span class="glyphicon glyphicon-list"></span> {% trans "Danses ..."%}
</a>
<br><br>
<label for="keyword">{% trans "Mot(s)-clé(s)" %}</label>
<br>
<francoralite-keyword name="keyword" data-values="{{ parameters_instances_json.keyword }}" data-default-operator="{{ parameters.operators.keyword|default:'or' }}"></francoralite-keyword>
<a target="_blank" id="link_keyword" href="/keyword">
<span class="glyphicon glyphicon-list"></span> {% trans "Mots-clés ..."%}
</a>
</details>

<details{% if parameters.domain or parameters_instances_json.thematic or parameters_instances_json.domain_song or parameters_instances_json.timbre or parameters_instances_json.timbre_ref or parameters_instances_json.coupe or parameters_instances_json.domain_vocal or parameters_instances_json.coirault or parameters_instances_json.domain_music or parameters_instances_json.instrument or parameters_instances_json.domain_tale or parameters.text or parameters.incipit or parameters.refrain or parameters.jingle %} open{% endif %} id="details_genders">
Expand Down
11 changes: 11 additions & 0 deletions francoralite/apps/francoralite_front/tests/test_advanced_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ def test_search(francoralite_context):
'value': 'va',
'option': 'valse',
},
{
'id_block': 'details_what',
'id_field': 'keyword',
'value': 'grap',
'option': 'biographie',
},
{
'id_block': 'details_what',
'id_field': 'language',
Expand Down Expand Up @@ -242,6 +248,11 @@ def test_links_to_list(francoralite_context):
'id_link': 'link_dance',
'title': 'Genre de danse',
},
{
'id_block': 'details_what',
'id_link': 'link_keyword',
'title': 'Mot-clé',
},
{
'id_block': 'details_what',
'id_link': 'link_language',
Expand Down

0 comments on commit 1b49afa

Please sign in to comment.