Added the search page in the accounting application.

This commit is contained in:
依瑪貓
2020-07-21 10:04:29 +08:00
parent f114f84c85
commit c6a62d92d5
4 changed files with 227 additions and 4 deletions

View File

@ -22,7 +22,7 @@ import random
import urllib.parse
from django.conf import settings
from django.db.models import Model
from django.db.models import Model, Q
from django.utils.translation import pgettext, get_language
@ -104,6 +104,27 @@ def get_multi_lingual_attr(model, name, default=None):
return getattr(model, name + Language.default().db)
def get_multi_lingual_search(attr, query):
"""Returns the query condition on a multi-lingual attribute.
Args:
attr (str): The base name of the multi-lingual attribute.
query (str): The query.
Returns:
Q: The query condition
"""
language = Language.current()
if language.is_default:
return Q(**{attr + language.db + "__icontains": query})
default = Language.default()
q = (Q(**{attr + language.db + "__isnull": False})
& Q(**{attr + language.db + "__icontains": query}))\
| (Q(**{attr + language.db + "__isnull": True})
& Q(**{attr + default.db + "__icontains": query}))
return q
class UrlBuilder:
"""The URL builder.