Files
crmApi/apps/lead/selectors.py
T
2024-09-30 09:04:15 +03:30

100 lines
3.4 KiB
Python

from apps.lead.models import Lead as LeadModel, LeadType as LeadTypeModel,\
LeadSource as LeadSourceModel, LeadStep as LeadStepModel, LeadEvent as LeadEventModel
from apps.shop.models import ProductType as ProductTypeModel
from apps.workspace.models import City as CityModel
from utils.get_user_workspace import get_user_workspace_uuid
from utils.get_cuser_role import get_cuser_role_uuid, get_cuser_role
from rest_framework import exceptions
def list_leads(request) -> LeadModel:
try:
workspace_uuid = get_user_workspace_uuid(request)
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = get_cuser_role(request)
base_filter = {
'sys_ws__uuid': workspace_uuid,
}
#if not cuser_role.is_admin:
# base_filter['cuser_role__uuid'] = cuser_role_uuid
leads = LeadModel.objects.filter(**base_filter).order_by('-created_at')
return leads
except Exception as exp:
message = f'Error Fetching List Leads: {exp}'
raise exceptions.ValidationError({'error': message})
def retrieve_lead(request, id: int) -> LeadModel:
try:
workspace_uuid = get_user_workspace_uuid(request)
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = get_cuser_role(request)
base_filter = {
'sys_ws__uuid': workspace_uuid,
}
#if not cuser_role.is_admin:
# base_filter['cuser_role__uuid'] = cuser_role_uuid
lead = LeadModel.objects.get(id=id, **base_filter)
return lead
except Exception as exp:
message = f'Error retrieve Leads: {exp}'
raise exceptions.ValidationError({'error': message})
def retrieve_summary_lead(request) -> LeadModel:
try:
workspace_uuid = get_user_workspace_uuid(request)
cuser_role_uuid = get_cuser_role_uuid(request)
mozakere = LeadModel.objects.filter(step_id=2, status__in=('UN', ''),
sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20]
pish = LeadModel.objects.filter(step_id=3, status__in=('UN', ''),
sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20]
kharid = LeadModel.objects.filter(step_id=4, status__in=('UN', ''),
sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20]
leads = {
'mozakere': mozakere,
'pishfactor': pish,
'kharid': kharid,
}
return leads
except Exception as exp:
message = f'Error retrieve summary Leads: {exp}'
raise exceptions.ValidationError({'error': message})
def fields_new_lead_form(request):
workspace_uuid = get_user_workspace_uuid(request)
lead_type = LeadTypeModel.objects.filter(sys_ws__uuid=workspace_uuid)
product_types = ProductTypeModel.objects.filter(sys_ws__uuid=workspace_uuid)
lead_source = LeadSourceModel.objects.filter(sys_ws__uuid=workspace_uuid)
lead_step = LeadStepModel.objects.filter(sys_ws__uuid=workspace_uuid)
lead_event = LeadEventModel.objects.filter(sys_ws__uuid=workspace_uuid)
shahr = CityModel.objects.filter()
data = {
'product_types': product_types,
'lead_types': lead_type,
'lead_source': lead_source,
'lead_steps': lead_step,
'lead_event': lead_event,
'shahr': shahr,
}
return data