log login error
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import traceback
|
||||
|
||||
from apps.pos_device.pos.api.v1.serializers.device import DeviceSerializer
|
||||
from apps.authentication.services.service import get_users_of_organization
|
||||
from apps.pos_device.mixins.pos_device_mixin import POSDeviceMixin
|
||||
@@ -43,99 +45,117 @@ class POSDeviceViewSet(viewsets.ModelViewSet, POSDeviceMixin):
|
||||
# get device owner (organization)
|
||||
organization = self.get_device_organization()
|
||||
"""
|
||||
try:
|
||||
# convert headers to dictionary
|
||||
headers_data = {key: request.headers.get(key) for key in self.HEADERS}
|
||||
|
||||
# convert headers to dictionary
|
||||
headers_data = {key: request.headers.get(key) for key in self.HEADERS}
|
||||
serial = headers_data['device-serial']
|
||||
mac = headers_data['device-mac']
|
||||
psp_name = headers_data['device-provider']
|
||||
|
||||
serial = headers_data['device-serial']
|
||||
mac = headers_data['device-mac']
|
||||
psp_name = headers_data['device-provider']
|
||||
# provider organization
|
||||
organization = pos_models.Organization.objects.get(en_name=psp_name)
|
||||
|
||||
# provider organization
|
||||
organization = pos_models.Organization.objects.get(en_name=psp_name)
|
||||
device = self.device_queryset.filter(serial=serial).first()
|
||||
|
||||
device = self.device_queryset.filter(serial=serial).first()
|
||||
|
||||
if not device and 'device_identity' in request.data.keys() and request.data['device_identity'] != "":
|
||||
device = self.device_queryset.filter(device_identity=request.data['device_identity']).first()
|
||||
|
||||
if device:
|
||||
if not device.is_activated and device.pre_registered and device.assigned_state:
|
||||
# activate device
|
||||
device.is_activated = True
|
||||
device.save()
|
||||
if not device and 'device_identity' in request.data.keys() and request.data['device_identity'] != "":
|
||||
device = self.device_queryset.filter(device_identity=request.data['device_identity']).first()
|
||||
|
||||
if device.is_activated and device.assigned_state:
|
||||
# when device is logged in, its has an organization owner client, if not it will show error
|
||||
device_owner_org = self.get_device_organization()
|
||||
if device:
|
||||
if not device.is_activated and device.pre_registered and device.assigned_state:
|
||||
# activate device
|
||||
device.is_activated = True
|
||||
device.save()
|
||||
|
||||
session = self.session_queryset.filter(serial=serial).first()
|
||||
if not session:
|
||||
pos_models.Sessions.objects.create(
|
||||
device=device,
|
||||
name=headers_data['device-name'],
|
||||
version=headers_data['device-version'],
|
||||
mac=headers_data['device-mac'],
|
||||
ip=get_client_ip(request),
|
||||
sdk=headers_data['device-sdk'],
|
||||
serial=headers_data['device-serial'],
|
||||
latitude=headers_data['device-lot'],
|
||||
longitude=headers_data['device-lng'],
|
||||
)
|
||||
else:
|
||||
session.name = headers_data['device-name']
|
||||
session.version = headers_data['device-version']
|
||||
session.mac = headers_data['device-mac']
|
||||
session.ip = get_client_ip(request)
|
||||
session.sdk = headers_data['device-sdk']
|
||||
session.latitude = headers_data['device-lot']
|
||||
session.longitude = headers_data['device-lng']
|
||||
session.save()
|
||||
if device.is_activated and device.assigned_state:
|
||||
# when device is logged in, its has an organization owner client, if not it will show error
|
||||
device_owner_org = self.get_device_organization()
|
||||
|
||||
org_data = {
|
||||
'id': device_owner_org.id,
|
||||
'name': device_owner_org.name,
|
||||
'en_name': device_owner_org.en_name
|
||||
}
|
||||
session = self.session_queryset.filter(serial=serial).first()
|
||||
if not session:
|
||||
pos_models.Sessions.objects.create(
|
||||
device=device,
|
||||
name=headers_data['device-name'],
|
||||
version=headers_data['device-version'],
|
||||
mac=headers_data['device-mac'],
|
||||
ip=get_client_ip(request),
|
||||
sdk=headers_data['device-sdk'],
|
||||
serial=headers_data['device-serial'],
|
||||
latitude=headers_data['device-lot'],
|
||||
longitude=headers_data['device-lng'],
|
||||
)
|
||||
else:
|
||||
session.name = headers_data['device-name']
|
||||
session.version = headers_data['device-version']
|
||||
session.mac = headers_data['device-mac']
|
||||
session.ip = get_client_ip(request)
|
||||
session.sdk = headers_data['device-sdk']
|
||||
session.latitude = headers_data['device-lot']
|
||||
session.longitude = headers_data['device-lng']
|
||||
session.save()
|
||||
|
||||
org_data = {
|
||||
'id': device_owner_org.id,
|
||||
'name': device_owner_org.name,
|
||||
'en_name': device_owner_org.en_name
|
||||
}
|
||||
|
||||
return Response({
|
||||
"message": "خوش آمدید", # noqa
|
||||
"device_identity": device.device_identity,
|
||||
"serial": device.serial,
|
||||
"password": device.password,
|
||||
"provider": organization.name,
|
||||
"provider_tell": organization.phone,
|
||||
"device_owner": org_data,
|
||||
"device_owner_users": get_users_of_organization(device_owner_org)
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
return Response({
|
||||
"message": "خوش آمدید", # noqa
|
||||
"message": "دستگاه در سیستم ثبت در انتظار فعال سازی توسط پذیرنده می باشد", # noqa
|
||||
"device_identity": device.device_identity,
|
||||
"password": "****",
|
||||
"serial": device.serial,
|
||||
"password": device.password,
|
||||
"provider": organization.name,
|
||||
"provider_tell": organization.phone,
|
||||
"device_owner": org_data,
|
||||
"device_owner_users": get_users_of_organization(device_owner_org)
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
return Response({
|
||||
"message": "دستگاه در سیستم ثبت در انتظار فعال سازی توسط پذیرنده می باشد", # noqa
|
||||
"device_identity": device.device_identity,
|
||||
"password": "****",
|
||||
"serial": device.serial,
|
||||
"provider": organization.name,
|
||||
"provider_tell": organization.phone,
|
||||
}, status=status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
else:
|
||||
pre_device = pos_models.Device.objects.create(
|
||||
serial=serial,
|
||||
mac=mac,
|
||||
organization=organization,
|
||||
pre_registered=True,
|
||||
is_activated=False
|
||||
}, status=status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
else:
|
||||
pre_device = pos_models.Device.objects.create(
|
||||
serial=serial,
|
||||
mac=mac,
|
||||
organization=organization,
|
||||
pre_registered=True,
|
||||
is_activated=False
|
||||
)
|
||||
|
||||
return Response({
|
||||
"message": "دستگاه در سیستم ثبت در انتظار فعال سازی توسط پذیرنده می باشد", # noqa
|
||||
"device_identity": pre_device.device_identity,
|
||||
"password": "****",
|
||||
"provider": organization.name,
|
||||
"provider_tell": organization.phone,
|
||||
}, status=status.HTTP_412_PRECONDITION_FAILED)
|
||||
except Exception as e:
|
||||
error_message = str(e)
|
||||
error_title = e.__class__.__name__
|
||||
error_traceback = traceback.format_exc()
|
||||
print(error_message)
|
||||
print(error_title)
|
||||
print(error_traceback)
|
||||
|
||||
return Response(
|
||||
{
|
||||
"result": "خطای سرور داخلی رخ داده است. لطفا بعدا تلاش کنید.",
|
||||
"error_message": error_message,
|
||||
"error_title": error_title,
|
||||
"error_traceback": error_traceback,
|
||||
},
|
||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR
|
||||
)
|
||||
|
||||
return Response({
|
||||
"message": "دستگاه در سیستم ثبت در انتظار فعال سازی توسط پذیرنده می باشد", # noqa
|
||||
"device_identity": pre_device.device_identity,
|
||||
"password": "****",
|
||||
"provider": organization.name,
|
||||
"provider_tell": organization.phone,
|
||||
}, status=status.HTTP_412_PRECONDITION_FAILED)
|
||||
|
||||
@action(
|
||||
@action(
|
||||
methods=['post'],
|
||||
detail=False,
|
||||
url_path='merge_devices',
|
||||
|
||||
Reference in New Issue
Block a user