mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-27 07:02:26 +00:00
Add ability to search by building+room
This commit is contained in:
parent
c863107293
commit
fe11867ba9
1 changed files with 17 additions and 0 deletions
|
@ -121,6 +121,12 @@ def search_single_word(word, filters, user, start, end, user_state, aff):
|
||||||
)
|
)
|
||||||
filter_users = (filter_clubs | Q(name__icontains=word))
|
filter_users = (filter_clubs | Q(name__icontains=word))
|
||||||
|
|
||||||
|
if len(word.split(" ")) >= 2:
|
||||||
|
# Assume the room is in 1 word, and the building may be in multiple words
|
||||||
|
building = " ".join(word.split(" ")[:-1])
|
||||||
|
room = word.split(" ")[-1]
|
||||||
|
filter_users |= (Q(room__name__icontains=room) & Q(room__building__name__icontains=building))
|
||||||
|
|
||||||
if not User.can_view_all(user)[0]:
|
if not User.can_view_all(user)[0]:
|
||||||
filter_clubs &= Q(id=user.id)
|
filter_clubs &= Q(id=user.id)
|
||||||
filter_users &= Q(id=user.id)
|
filter_users &= Q(id=user.id)
|
||||||
|
@ -204,6 +210,13 @@ def search_single_word(word, filters, user, start, end, user_state, aff):
|
||||||
filter_rooms = (
|
filter_rooms = (
|
||||||
Q(details__icontains=word) | Q(name__icontains=word) | Q(port__details=word)
|
Q(details__icontains=word) | Q(name__icontains=word) | Q(port__details=word)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(word.split(" ")) >= 2:
|
||||||
|
# Assume the room is in 1 word, and the building may be in multiple words
|
||||||
|
building = " ".join(word.split(" ")[:-1])
|
||||||
|
room = word.split(" ")[-1]
|
||||||
|
filter_rooms |= (Q(name__icontains=room) & Q(building__name__icontains=building))
|
||||||
|
|
||||||
filters["rooms"] |= filter_rooms
|
filters["rooms"] |= filter_rooms
|
||||||
|
|
||||||
# Switch ports
|
# Switch ports
|
||||||
|
@ -326,6 +339,10 @@ def get_words(query):
|
||||||
# If we are between two ", ignore separators
|
# If we are between two ", ignore separators
|
||||||
words[i] += char
|
words[i] += char
|
||||||
continue
|
continue
|
||||||
|
if char == "+":
|
||||||
|
# If we encouter a + outside of ", we replace it with a space
|
||||||
|
words[i] += " "
|
||||||
|
continue
|
||||||
if char == " " or char == ",":
|
if char == " " or char == ",":
|
||||||
# If we encouter a separator outside of ", we create a new word
|
# If we encouter a separator outside of ", we create a new word
|
||||||
if words[i] is not "":
|
if words[i] is not "":
|
||||||
|
|
Loading…
Reference in a new issue