Как функция-обертка работает с одним и тем же именем в разных функциях в 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. Так ли работает декоратор или я делаю что-то неправильно в нем.

Вернуться на верх