Add dta_service/core/permissions.py

This commit is contained in:
2025-07-06 17:51:36 +00:00
parent 680e9a1b8a
commit 1618717b82

View File

@@ -0,0 +1,43 @@
from rest_framework import permissions
class IsOwnerOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
if hasattr(obj, 'owner'):
return obj.owner.user == request.user
elif hasattr(obj, 'user'):
return obj.user == request.user
return False
class IsPropertyOwner(permissions.BasePermission):
def has_permission(self, request, view):
return request.user.user_type == 'property_owner'
def has_object_permission(self, request, view, obj):
if hasattr(obj, 'owner'):
return obj.owner.user == request.user
elif hasattr(obj, 'property_owner'):
return obj.property_owner.user == request.user
return False
class IsVendor(permissions.BasePermission):
def has_permission(self, request, view):
return request.user.user_type == 'vendor'
def has_object_permission(self, request, view, obj):
if hasattr(obj, 'vendor'):
return obj.vendor.user == request.user
return False
class IsParticipant(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.user.user_type == 'property_owner':
owner = obj.property_owner if hasattr(obj, 'property_owner') else obj.conversation.property_owner
return owner.user == request.user
elif request.user.user_type == 'vendor':
vendor = obj.vendor if hasattr(obj, 'vendor') else obj.conversation.vendor
return vendor.user == request.user
return False