100 lines
3.4 KiB
Python
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
|
|
|