Как функция-обертка работает с одним и тем же именем в разных функциях в python?
у меня есть две wrap
функции с одинаковым именем внутри двух разных функций (в одном .py файле)
def related_to_restaurant(function):
def wrap(request, *args, **kwargs):
user = AuthUserExtension.objects.filter(Q(user_id=request.user.id)&Q(is_restaurant=True)).exists()
data = get_auth_user_extentension(request.user.pk)
if data:
data = data[0]
user_admin = data.is_team_member
else:
user_admin = False
if user or (user_admin and request.user.is_active) or request.user.is_superuser:
return function(request, *args, **kwargs)
else:
# raise PermissionDenied
return redirect('logout_store_user')
#return function(request, *args, **kwargs)
return wrap
def user_has_restaurant(function):
def wrap(request, *args, **kwargs):
restaurant_id = kwargs["restaurant_id"]
print({"restaurant_id": restaurant_id})
if int(restaurant_id) != -1:
restaurant = RestaurantUser.objects.filter(Q(user_id=request.user.id)&Q(restaurant_id=restaurant_id)).exists()
else:
restaurant = True
data = get_auth_user_extentension(request.user.pk)
if data:
data = data[0]
user_admin = data.is_team_member
else:
user_admin = False
if restaurant or request.user.is_superuser or (user_admin and request.user.is_active):
return function(request, *args, **kwargs)
else:
# raise PermissionDenied
return redirect('list_restaurant')
return wrap
Я использую оба в качестве декоратора для различных функций.
Поэтому, когда я вызываю декоратор @related_to_restaurant
, он вызывает функцию обертывания обеих функций related_to_restaurant
и user_has_restaurant
. Так ли работает декоратор или я делаю что-то неправильно в нем.