47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
from apps.shop.models import Order as OrderModel
|
|
from apps.customer.models import CustomerResponsible as CustomerResponsibleModel
|
|
from apps.cuser.models import CuserRole as CuserRoleModel
|
|
from rest_framework import exceptions
|
|
from utils.custom_permissions import workspace_admin_up
|
|
from apps.customer.models import Customer as CustomerModel
|
|
|
|
|
|
def retrieve_order(cuser_role_uuid: str, order_id: int, workspace_uuid: str) -> OrderModel:
|
|
|
|
try:
|
|
cuser_role = CuserRoleModel.objects.select_related('role_type').get
|
|
role_type = cuser_role.role_type
|
|
|
|
if role_type.role_name_en == 'workspace_customer':
|
|
customer = CustomerModel.objects.get(cuser_role=cuser_role)
|
|
order_obj = OrderModel.objects.get(id=order_id, sys_ws__uuid=workspace_uuid, customer=customer)
|
|
return order_obj
|
|
|
|
if role_type.role_name_en in ('workspace_owner', 'workspace_operator', 'workspace_admin'):
|
|
order_obj = OrderModel.objects.get(id=order_id, sys_ws__uuid=workspace_uuid)
|
|
return order_obj
|
|
|
|
except Exception as exp:
|
|
message = f'Error Retrieve Order: {exp}'
|
|
raise exceptions.ValidationError({'error': message})
|
|
|
|
|
|
def list_order(cuser_role_uuid: str, workspace_uuid: str) -> OrderModel:
|
|
try:
|
|
|
|
cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid)
|
|
role_type = cuser_role.role_type
|
|
|
|
if role_type.role_name_en == 'workspace_customer':
|
|
customer = CustomerModel.objects.get(cuser_role=cuser_role)
|
|
orders_obj = OrderModel.objects.filter(sys_ws__uuid=workspace_uuid, customer=customer).order_by('-created_at')
|
|
return orders_obj
|
|
|
|
if role_type.role_name_en in ('workspace_owner', 'workspace_operator', 'workspace_admin'):
|
|
orders_obj = OrderModel.objects.filter(sys_ws__uuid=workspace_uuid).order_by('-created_at')
|
|
return orders_obj
|
|
|
|
except Exception as exp:
|
|
message = f'Error Fetching List Order: {exp}'
|
|
raise exceptions.ValidationError({'error': message})
|