Skip to content

Commit

Permalink
Merge pull request #1594 from wger-project/feature/pg-fulltext-search
Browse files Browse the repository at this point in the history
Add full text search
  • Loading branch information
rolandgeider committed Mar 12, 2024
2 parents 0f24b01 + 0c88e6c commit f9abd9d
Show file tree
Hide file tree
Showing 20 changed files with 278 additions and 94 deletions.
49 changes: 26 additions & 23 deletions wger/config/fixtures/test-languages.json
@@ -1,26 +1,29 @@
[
{
"pk": 1,
"model": "core.language",
"fields": {
"full_name": "Deutsch",
"short_name": "de"
}
},
{
"pk": 2,
"model": "core.language",
"fields": {
"full_name": "English",
"short_name": "en"
}
},
{
"pk": 3,
"model": "core.language",
"fields": {
"full_name": "Français",
"short_name": "fr"
}
{
"pk": 1,
"model": "core.language",
"fields": {
"full_name": "Deutsch",
"short_name": "de",
"full_name_en": "German"
}
},
{
"pk": 2,
"model": "core.language",
"fields": {
"full_name": "English",
"short_name": "en",
"full_name_en": "English"
}
},
{
"pk": 3,
"model": "core.language",
"fields": {
"full_name": "Français",
"short_name": "fr",
"full_name_en": "French"
}
}
]
8 changes: 6 additions & 2 deletions wger/core/api/serializers.py
Expand Up @@ -37,7 +37,6 @@
WeightUnit,
)


logger = logging.getLogger(__name__)


Expand Down Expand Up @@ -155,7 +154,12 @@ class LanguageSerializer(serializers.ModelSerializer):

class Meta:
model = Language
fields = ['id', 'short_name', 'full_name']
fields = [
'id',
'short_name',
'full_name',
'full_name_en',
]


class DaysOfWeekSerializer(serializers.ModelSerializer):
Expand Down
72 changes: 48 additions & 24 deletions wger/core/fixtures/languages.json
Expand Up @@ -4,191 +4,215 @@
"pk": 1,
"fields": {
"short_name": "de",
"full_name": "Deutsch"
"full_name": "Deutsch",
"full_name_en": "German"
}
},
{
"model": "core.language",
"pk": 2,
"fields": {
"short_name": "en",
"full_name": "English"
"full_name": "English",
"full_name_en": "English"
}
},
{
"model": "core.language",
"pk": 3,
"fields": {
"short_name": "bg",
"full_name": "Български език"
"full_name": "Български език",
"full_name_en": "Bulgarian"
}
},
{
"model": "core.language",
"pk": 4,
"fields": {
"short_name": "es",
"full_name": "Español"
"full_name": "Español",
"full_name_en": "Spanish"
}
},
{
"model": "core.language",
"pk": 5,
"fields": {
"short_name": "ru",
"full_name": "Русский"
"full_name": "Русский",
"full_name_en": "Russian"
}
},
{
"model": "core.language",
"pk": 6,
"fields": {
"short_name": "nl",
"full_name": "Nederlands"
"full_name": "Nederlands",
"full_name_en": "Dutch"
}
},
{
"model": "core.language",
"pk": 7,
"fields": {
"short_name": "pt",
"full_name": "Português"
"full_name": "Português",
"full_name_en": "Portuguese"
}
},
{
"model": "core.language",
"pk": 8,
"fields": {
"short_name": "el",
"full_name": "Ελληνικά"
"full_name": "Ελληνικά",
"full_name_en": "Greek"
}
},
{
"model": "core.language",
"pk": 9,
"fields": {
"short_name": "cs",
"full_name": "Čeština"
"full_name": "Čeština",
"full_name_en": "Czech"
}
},
{
"model": "core.language",
"pk": 10,
"fields": {
"short_name": "sv",
"full_name": "Svenska"
"full_name": "Svenska",
"full_name_en": "Swedish"
}
},
{
"model": "core.language",
"pk": 11,
"fields": {
"short_name": "no",
"full_name": "Norsk"
"full_name": "Norsk",
"full_name_en": "Norwegian"
}
},
{
"model": "core.language",
"pk": 12,
"fields": {
"short_name": "fr",
"full_name": "Français"
"full_name": "Français",
"full_name_en": "French"
}
},
{
"model": "core.language",
"pk": 13,
"fields": {
"short_name": "it",
"full_name": "Italian"
"full_name": "Italiano",
"full_name_en": "Italian"
}
},
{
"model": "core.language",
"pk": 14,
"fields": {
"short_name": "pl",
"full_name": "Polish"
"full_name": "Polski",
"full_name_en": "Polish"
}
},
{
"model": "core.language",
"pk": 15,
"fields": {
"short_name": "uk",
"full_name": "Українська мова"
"full_name": "Українська мова",
"full_name_en": "Ukrainian"
}
},
{
"model": "core.language",
"pk": 16,
"fields": {
"short_name": "tr",
"full_name": "Türkçe"
"full_name": "Türkçe",
"full_name_en": "Turkish"
}
},
{
"model": "core.language",
"pk": 17,
"fields": {
"short_name": "ar",
"full_name": "اَللُّغَةُ اَلْعَرَبِيَّة"
"full_name": "اَللُّغَةُ اَلْعَرَبِيَّة",
"full_name_en": "Arabic"
}
},
{
"model": "core.language",
"pk": 18,
"fields": {
"short_name": "az",
"full_name": "Azərbaycan dili"
"full_name": "Azərbaycan dili",
"full_name_en": "Azerbaijani"
}
},
{
"model": "core.language",
"pk": 19,
"fields": {
"short_name": "eo",
"full_name": "Esperanto"
"full_name": "Esperanto",
"full_name_en": "Esperanto"
}
},
{
"model": "core.language",
"pk": 20,
"fields": {
"short_name": "fa",
"full_name": "زبان فارسی"
"full_name": "زبان فارسی",
"full_name_en": "Persian"
}
},
{
"model": "core.language",
"pk": 21,
"fields": {
"short_name": "he",
"full_name": "עברית"
"full_name": "עברית",
"full_name_en": "Hebrew"
}
},
{
"model": "core.language",
"pk": 22,
"fields": {
"short_name": "hr",
"full_name": "Hrvatski jezik"
"full_name": "Hrvatski jezik",
"full_name_en": "Croatian"
}
},
{
"model": "core.language",
"pk": 23,
"fields": {
"short_name": "id",
"full_name": "Bahasa Indonesia"
"full_name": "Bahasa Indonesia",
"full_name_en": "Indonesian"
}
},
{
"model": "core.language",
"pk": 24,
"fields": {
"short_name": "zh",
"full_name": "漢語"
"full_name": "漢語",
"full_name_en": "Chinese"
}
}
]
37 changes: 37 additions & 0 deletions wger/core/migrations/0017_language_full_name_en.py
@@ -0,0 +1,37 @@
# Generated by Django 4.2.6 on 2024-01-17 15:41

from django.db import migrations, models


def update_language_full_name(apps, schema_editor):
mapper = {'de': 'German', 'en': 'English', 'bg': 'Bulgarian', 'es': 'Spanish', 'ru': 'Russian',
'nl': 'Dutch', 'pt': 'Portuguese', 'el': 'Greek', 'cs': 'Czech', 'sv': 'Swedish',
'no': 'Norwegian', 'fr': 'French', 'it': 'Italian', 'pl': 'Polish', 'uk': 'Ukrainian',
'tr': 'Turkish', 'ar': 'Arabic', 'az': 'Azerbaijani', 'eo': 'Esperanto',
'fa': 'Persian', 'he': 'Hebrew', 'hr': 'Croatian', 'id': 'Indonesian',
'zh': 'Chinese', }

Language = apps.get_model("core", "Language")
for language in Language.objects.all():
language.full_name_en = mapper.get(language.short_name, 'English')
language.save()


class Migration(migrations.Migration):
dependencies = [
('core', '0016_alter_language_short_name'),
]

operations = [
migrations.AddField(
model_name='language',
name='full_name_en',
field=models.CharField(default='english', max_length=30,
verbose_name='Language full name in English', ),
preserve_default=False,
),
migrations.RunPython(
update_language_full_name,
reverse_code=migrations.RunPython.noop,
),
]
6 changes: 6 additions & 0 deletions wger/core/models/language.py
Expand Up @@ -39,6 +39,12 @@ class Language(models.Model):
verbose_name=_('Language full name'),
)

# e.g. 'German'
full_name_en = models.CharField(
max_length=30,
verbose_name=_('Language full name in English'),
)

class Meta:
"""
Set Meta options
Expand Down
4 changes: 3 additions & 1 deletion wger/core/templates/language/overview.html
Expand Up @@ -7,13 +7,15 @@
{% block content %}
<div class="list-group">
{% for language in language_list %}
<a href="{% url 'core:language:view' language.id %}" class="list-group-item list-group-item-action">
<a href="{% url 'core:language:view' language.id %}"
class="list-group-item list-group-item-action">
<span class="glyphicon glyphicon-chevron-right float-end"></span>
<img src="{% static language.static_path %}"
width="18"
alt="{% translate language.full_name %}"
title="{% translate language.full_name %}">
{{ language.full_name }}
<small>({{ language.full_name_en }})</small>
</a>
{% empty %}
<a href="{% url 'core:language:add' %}" class="list-group-item">
Expand Down

0 comments on commit f9abd9d

Please sign in to comment.