8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-12-25 08:23:46 +00:00

Acl pour search.

This commit is contained in:
Hugo LEVY-FALK 2017-12-30 02:17:45 +01:00
parent c4e3888e7e
commit a69ca9ff06
2 changed files with 10 additions and 12 deletions

View file

@ -35,5 +35,4 @@ def can_view(user):
A couple (allowed, msg) where allowed is a boolean which is True if A couple (allowed, msg) where allowed is a boolean which is True if
viewing is granted and msg is a message (can be None). viewing is granted and msg is a message (can be None).
""" """
can = user.has_perms(('cableur',)) return True, None
return can, None if can else "Vous ne pouvez pas voir cette application."

View file

@ -120,7 +120,7 @@ def finish_results(results, col, order):
return results return results
def search_single_word(word, filters, is_cableur, user_id, def search_single_word(word, filters, user,
start, end, user_state, aff): start, end, user_state, aff):
""" Construct the correct filters to match differents fields of some models """ Construct the correct filters to match differents fields of some models
with the given query according to the given filters. with the given query according to the given filters.
@ -144,8 +144,8 @@ def search_single_word(word, filters, is_cableur, user_id,
adherent__room__name__icontains=word adherent__room__name__icontains=word
) )
) & Q(state__in=user_state) ) & Q(state__in=user_state)
if not is_cableur: if not User.can_view_all(user)[0]:
filter_users &= Q(id=user_id) filter_users &= Q(id=user.id)
filters['users'] |= filter_users filters['users'] |= filter_users
# Machines # Machines
@ -167,8 +167,8 @@ def search_single_word(word, filters, is_cableur, user_id,
) | Q( ) | Q(
interface__ipv4__ipv4__icontains=word interface__ipv4__ipv4__icontains=word
) )
if not is_cableur: if not Machine.can_view_all(user)[0]:
filter_machines &= Q(user__id=user_id) filter_machines &= Q(user__id=user.id)
filters['machines'] |= filter_machines filters['machines'] |= filter_machines
# Factures # Factures
@ -243,7 +243,7 @@ def search_single_word(word, filters, is_cableur, user_id,
filters['whitelists'] |= filter_whitelists filters['whitelists'] |= filter_whitelists
# Rooms # Rooms
if '5' in aff and is_cableur: if '5' in aff and Room.can_view_all(user):
filter_rooms = Q( filter_rooms = Q(
details__icontains=word details__icontains=word
) | Q( ) | Q(
@ -254,7 +254,7 @@ def search_single_word(word, filters, is_cableur, user_id,
filters['rooms'] |= filter_rooms filters['rooms'] |= filter_rooms
# Switch ports # Switch ports
if '6' in aff and is_cableur: if '6' in aff and User.can_view_all(user):
filter_ports = Q( filter_ports = Q(
room__name__icontains=word room__name__icontains=word
) | Q( ) | Q(
@ -275,7 +275,7 @@ def search_single_word(word, filters, is_cableur, user_id,
filters['ports'] |= filter_ports filters['ports'] |= filter_ports
# Switches # Switches
if '7' in aff and is_cableur: if '7' in aff and Switch.can_view_all(user):
filter_switches = Q( filter_switches = Q(
switch_interface__domain__name__icontains=word switch_interface__domain__name__icontains=word
) | Q( ) | Q(
@ -374,8 +374,7 @@ def get_results(query, request, params):
filters = search_single_word( filters = search_single_word(
word, word,
filters, filters,
request.user.has_perms(('cableur',)), request.user,
request.user.id,
start, start,
end, end,
user_state, user_state,