first push
This commit is contained in:
264
panel/pos_helper.py
Normal file
264
panel/pos_helper.py
Normal file
@@ -0,0 +1,264 @@
|
||||
from rest_framework.decorators import api_view, permission_classes
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
from general_urls import BASE_URL
|
||||
from .ProvinceOperator.serializers import POSAccessLevelSerializer
|
||||
from .models import POSMachine, RolesProducts, PosDeviceVersion, POSAccessLevel
|
||||
import requests
|
||||
from requests.exceptions import RequestException
|
||||
|
||||
from .validate_headers import PosDeviceValidator
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@csrf_exempt
|
||||
@permission_classes([AllowAny])
|
||||
def Check_server(request):
|
||||
data = {"server": [
|
||||
{
|
||||
"key": "Test",
|
||||
"name": "تست",
|
||||
"address": "https://testbackend.rasadyar.com"
|
||||
},
|
||||
{
|
||||
"key": "Hamedan",
|
||||
"name": "همدان",
|
||||
"address": "https://habackend.rasadyar.com"
|
||||
},
|
||||
{
|
||||
"key": "Markazi",
|
||||
"name": "مرکزی",
|
||||
"address": "https://mabackend.rasadyar.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@csrf_exempt
|
||||
@permission_classes([AllowAny])
|
||||
def pos_finder(request):
|
||||
validator = PosDeviceValidator(request)
|
||||
validation_error = validator.validation_version()
|
||||
if validation_error:
|
||||
return validation_error
|
||||
|
||||
validation_device = validator.validation_device()
|
||||
if not validation_device:
|
||||
return Response({"result": "نشست شما منقضی شده لطفا محدد وارد شوید!"}, status=status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
pos_machine = (
|
||||
POSMachine.objects
|
||||
.select_related('user__province')
|
||||
.only('pos_id', 'user__fullname', 'user__province__name')
|
||||
.filter(pos_id=validation_device)
|
||||
)
|
||||
if not pos_machine.exists():
|
||||
return Response({"result": "صنفی با این شناسه یافت نشد!"}, status=status.HTTP_404_NOT_FOUND)
|
||||
url = BASE_URL.replace('api/', '')
|
||||
pos_machine = pos_machine.first()
|
||||
version = PosDeviceVersion.objects.filter(company=pos_machine.pos_company).order_by('code').last()
|
||||
name=version.name if version else None
|
||||
code=version.code if version else None
|
||||
link=version.link if version else None
|
||||
checksum=version.checksum if version else None
|
||||
if pos_machine.guild:
|
||||
store_name = pos_machine.guild.guilds_name
|
||||
phone = pos_machine.guild.phone
|
||||
key = pos_machine.guild.key
|
||||
type_activity = pos_machine.guild.type_activity
|
||||
area_activity = pos_machine.guild.area_activity
|
||||
seller_type = "Guild" if pos_machine.guild.steward == False else "Steward"
|
||||
product = RolesProducts.objects.filter(guild=pos_machine.guild, trash=False, name='مرغ گرم').first()
|
||||
product_name = product.parent_product.name if product else None
|
||||
product_image = product.parent_product.image if product else None
|
||||
product_key = product.key if product else None
|
||||
other_product = True
|
||||
|
||||
|
||||
|
||||
|
||||
elif pos_machine.cooperative:
|
||||
store_name = pos_machine.cooperative.name
|
||||
phone = pos_machine.cooperative.mobile
|
||||
key = pos_machine.cooperative.key
|
||||
seller_type = "cooperative"
|
||||
type_activity = "تعاونی"
|
||||
area_activity = "تعاونی"
|
||||
product_name = None
|
||||
product_image = None
|
||||
product_key = None
|
||||
other_product = True
|
||||
else:
|
||||
store_name = pos_machine.kill_house.name
|
||||
phone = pos_machine.kill_house.phone
|
||||
key = pos_machine.kill_house.key
|
||||
seller_type = "KillHouse"
|
||||
type_activity = "کشتارگاه"
|
||||
area_activity = "کشتارگاه"
|
||||
product = RolesProducts.objects.filter(kill_house=pos_machine.kill_house, trash=False, name='مرغ گرم').first()
|
||||
product_name = product.parent_product.name if product else None
|
||||
product_image = product.parent_product.image if product else None
|
||||
product_key = product.key if product else None
|
||||
other_product = True
|
||||
|
||||
data = {
|
||||
"type": seller_type,
|
||||
"name": store_name,
|
||||
"type_activity": type_activity,
|
||||
"area_activity": area_activity,
|
||||
"phone": phone,
|
||||
"mobile": pos_machine.user.mobile,
|
||||
"fullname": pos_machine.user.fullname,
|
||||
"firstname": pos_machine.user.first_name,
|
||||
"lastname": pos_machine.user.last_name,
|
||||
"city": pos_machine.user.city.name,
|
||||
"province": pos_machine.user.province.name,
|
||||
"national_code": pos_machine.user.national_code,
|
||||
"national_id": pos_machine.user.national_id,
|
||||
"birthday": pos_machine.user.birthday,
|
||||
"url": url,
|
||||
"key": key,
|
||||
"server": "Markazi",
|
||||
"segmentation": True,
|
||||
"product_name": product_name,
|
||||
"product_image": product_image,
|
||||
"product_key": product_key,
|
||||
"other_product": other_product,
|
||||
"version_name": name,
|
||||
"code": code,
|
||||
"link": link,
|
||||
"checksum": checksum,
|
||||
|
||||
}
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
@csrf_exempt
|
||||
@permission_classes([AllowAny])
|
||||
def pos_get_finder(request):
|
||||
pos_id = request.GET.get('pos-id')
|
||||
if not pos_id:
|
||||
return Response({"result": "شناسه POS مشخص نشده است!"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
pos_machine = (
|
||||
POSMachine.objects
|
||||
.select_related('user__province')
|
||||
.only('pos_id', 'user__fullname', 'user__province__name')
|
||||
.filter(pos_id=pos_id)
|
||||
)
|
||||
if not pos_machine.exists():
|
||||
return Response({"result": "صنفی با این شناسه یافت نشد!"}, status=status.HTTP_404_NOT_FOUND)
|
||||
url = BASE_URL.replace('api/', '')
|
||||
pos_machine = pos_machine.first()
|
||||
if pos_machine.guild:
|
||||
store_name = pos_machine.guild.guilds_name
|
||||
phone = pos_machine.guild.guilds_name
|
||||
key = pos_machine.guild.key
|
||||
seller_type = "Guild" if pos_machine.guild.steward == False else "Steward"
|
||||
|
||||
|
||||
elif pos_machine.cooperative:
|
||||
store_name = pos_machine.cooperative.name
|
||||
phone = pos_machine.cooperative.mobile
|
||||
key = pos_machine.cooperative.key
|
||||
seller_type = "cooperative"
|
||||
|
||||
|
||||
else:
|
||||
store_name = pos_machine.kill_house.name
|
||||
phone = pos_machine.kill_house.phone
|
||||
key = pos_machine.kill_house.key
|
||||
seller_type = "KillHouse"
|
||||
data = {
|
||||
"type": seller_type,
|
||||
"name": store_name,
|
||||
"phone": phone,
|
||||
"mobile": pos_machine.user.mobile,
|
||||
"fullname": pos_machine.user.fullname,
|
||||
"firstname": pos_machine.user.first_name,
|
||||
"lastname": pos_machine.user.last_name,
|
||||
"city": pos_machine.user.city.name,
|
||||
"province": pos_machine.user.province.name,
|
||||
"national_code": pos_machine.user.national_code,
|
||||
"national_id": pos_machine.user.national_id,
|
||||
"birthday": pos_machine.user.birthday,
|
||||
"url": url,
|
||||
"key": key,
|
||||
"server": "Markazi",
|
||||
}
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
@api_view(["POST"])
|
||||
@csrf_exempt
|
||||
@permission_classes([AllowAny])
|
||||
def pos_login(request):
|
||||
validator = PosDeviceValidator(request)
|
||||
validation_error = validator.validation_version()
|
||||
if validation_error:
|
||||
return validation_error
|
||||
|
||||
pos_machine = validator.manage_device()
|
||||
|
||||
if not pos_machine.owner:
|
||||
return Response({"result": f"برای این دستگاه مالکی تعیین نشده!شناسه پوز:{pos_machine.pos_unique_id}"},
|
||||
status=status.HTTP_403_FORBIDDEN)
|
||||
|
||||
if not pos_machine.active:
|
||||
return Response({"result": f"دستگاه غیر فعال میباشد!شناسه پوز:{pos_machine.pos_unique_id}"},
|
||||
status=status.HTTP_403_FORBIDDEN)
|
||||
url = BASE_URL.replace('api/', '')
|
||||
version = PosDeviceVersion.objects.filter(company=pos_machine.pos_company).order_by('code').last()
|
||||
name = version.name if version else None
|
||||
code = version.code if version else None
|
||||
link = version.link if version else None
|
||||
checksum = version.checksum if version else None
|
||||
access_levels = POSAccessLevel.objects.filter(pos=pos_machine)
|
||||
access_levels = POSAccessLevelSerializer(access_levels,many=True).data
|
||||
agent = True if (pos_machine.current_user or pos_machine.current_representative) else False
|
||||
agent_fullname =None
|
||||
agent_mobile =None
|
||||
agent_type =None
|
||||
if agent:
|
||||
if pos_machine.current_user:
|
||||
agent_fullname = pos_machine.current_user.fullname
|
||||
agent_mobile = pos_machine.current_user.mobile
|
||||
agent_type = 'dispenser'
|
||||
|
||||
else:
|
||||
agent_fullname = pos_machine.current_representative.first_name + "" +pos_machine.current_representative.last_name
|
||||
agent_mobile = pos_machine.current_representative.mobile
|
||||
agent_type = 'representative'
|
||||
|
||||
data = {
|
||||
"mobile": pos_machine.owner.mobile,
|
||||
"fullname": pos_machine.owner.fullname,
|
||||
"firstname": pos_machine.owner.first_name,
|
||||
"lastname": pos_machine.owner.last_name,
|
||||
"city": pos_machine.owner.city.name,
|
||||
"province": pos_machine.owner.province.name,
|
||||
"national_code": pos_machine.owner.national_code,
|
||||
"national_id": pos_machine.owner.national_id,
|
||||
"birthday": pos_machine.owner.birthday,
|
||||
"url": url,
|
||||
"key": pos_machine.key,
|
||||
"server": "Markazi",
|
||||
"pos_unique_id": pos_machine.pos_unique_id,
|
||||
"version_name": name,
|
||||
"code": code,
|
||||
"link": link,
|
||||
"checksum": checksum,
|
||||
"access_levels": access_levels,
|
||||
"agent": agent,
|
||||
"agent_type": agent_type,
|
||||
"agent_fullname": agent_fullname,
|
||||
"agent_mobile": agent_mobile,
|
||||
|
||||
}
|
||||
return Response(data, status=status.HTTP_200_OK)
|
||||
Reference in New Issue
Block a user