mirror of
https://github.com/suitenumerique/docs.git
synced 2026-09-18 07:37:56 +02:00
## Purpose For beta testing purposes we need to be able to activate Find hybrid search to some users, Find full-text search to some others and leave remaining users on basic DRF title search. ## Proposal The solution proposed is based on [django-waffle ](https://waffle.readthedocs.io/en/stable/types/flag.html). - [x] install waffle and activate the default app in settings. - [x] implement `_get_search_type` in `DocumentViewset` to determine which search type (title, hybrid or full-text) to use. - [x] send the `search_type` in the search query. ## External contributions Thank you for your contribution! 🎉 Please ensure the following items are checked before submitting your pull request: - [x] I have read and followed the [contributing guidelines](https://github.com/suitenumerique/docs/blob/main/CONTRIBUTING.md) - [x] I have read and agreed to the [Code of Conduct](https://github.com/suitenumerique/docs/blob/main/CODE_OF_CONDUCT.md) - [x] I have signed off my commits with `git commit --signoff` (DCO compliance) - [x] I have signed my commits with my SSH or GPG key (`git commit -S`) - [x] My commit messages follow the required format: `<gitmoji>(type) title description` - [x] I have added a changelog entry under `## [Unreleased]` section (if noticeable change) - [x] I have added corresponding tests for new features or bug fixes (if applicable) --------- Signed-off-by: charles <charles.englebert@protonmail.com>
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
"""
|
|
Core application enums declaration
|
|
"""
|
|
|
|
import re
|
|
from enum import Enum, StrEnum
|
|
|
|
from django.conf import global_settings, settings
|
|
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
ATTACHMENTS_FOLDER = "attachments"
|
|
UUID_REGEX = (
|
|
r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
|
|
)
|
|
FILE_EXT_REGEX = r"\.[a-zA-Z0-9]{1,10}"
|
|
MEDIA_STORAGE_URL_PATTERN = re.compile(
|
|
f"{settings.MEDIA_URL:s}(?P<pk>{UUID_REGEX:s})/"
|
|
f"(?P<attachment>{ATTACHMENTS_FOLDER:s}/{UUID_REGEX:s}(?:-unsafe)?{FILE_EXT_REGEX:s})$"
|
|
)
|
|
MEDIA_STORAGE_URL_EXTRACT = re.compile(
|
|
f"{settings.MEDIA_URL:s}({UUID_REGEX}/{ATTACHMENTS_FOLDER}/{UUID_REGEX}{FILE_EXT_REGEX})"
|
|
)
|
|
|
|
|
|
# In Django's code base, `LANGUAGES` is set by default with all supported languages.
|
|
# We can use it for the choice of languages which should not be limited to the few languages
|
|
# active in the app.
|
|
# pylint: disable=no-member
|
|
ALL_LANGUAGES = {language: _(name) for language, name in global_settings.LANGUAGES}
|
|
|
|
|
|
class MoveNodePositionChoices(models.TextChoices):
|
|
"""Defines the possible positions when moving a django-treebeard node."""
|
|
|
|
FIRST_CHILD = "first-child", _("First child")
|
|
LAST_CHILD = "last-child", _("Last child")
|
|
FIRST_SIBLING = "first-sibling", _("First sibling")
|
|
LAST_SIBLING = "last-sibling", _("Last sibling")
|
|
LEFT = "left", _("Left")
|
|
RIGHT = "right", _("Right")
|
|
|
|
|
|
class DocumentAttachmentStatus(StrEnum):
|
|
"""Defines the possible statuses for an attachment."""
|
|
|
|
PROCESSING = "processing"
|
|
READY = "ready"
|
|
|
|
|
|
class SearchType(str, Enum):
|
|
"""
|
|
Defines the possible search types for a document search query.
|
|
- TITLE: DRF based search in the title of the documents only.
|
|
- HYBRID and FULL_TEXT: more advanced search based on Find indexer.
|
|
"""
|
|
|
|
TITLE = "title"
|
|
HYBRID = "hybrid"
|
|
FULL_TEXT = "full-text"
|
|
|
|
|
|
class FeatureFlag(str, Enum):
|
|
"""
|
|
Defines the possible feature flags for the application.
|
|
"""
|
|
|
|
FLAG_FIND_HYBRID_SEARCH = "flag_find_hybrid_search"
|
|
FLAG_FIND_FULL_TEXT_SEARCH = "flag_find_full_text_search"
|