device login

This commit is contained in:
2025-08-18 10:08:33 +03:30
parent c2318b45c5
commit e8b01b8e3a
14 changed files with 1170 additions and 17 deletions

View File

@@ -0,0 +1,28 @@
# Generated by Django 5.0 on 2025-08-17 12:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pos_device', '0059_device_pre_registered_alter_device_acceptor_and_more'),
]
operations = [
migrations.AlterField(
model_name='sessions',
name='latitude',
field=models.FloatField(default=0, null=True),
),
migrations.AlterField(
model_name='sessions',
name='longitude',
field=models.FloatField(default=0, null=True),
),
migrations.AlterField(
model_name='sessions',
name='version',
field=models.IntegerField(default=0, null=True),
),
]

View File

@@ -127,13 +127,13 @@ class Sessions(BaseModel):
)
name = models.CharField(max_length=250, null=True)
password = models.CharField(max_length=25, null=True)
version = models.IntegerField(default=0)
version = models.IntegerField(default=0, null=True)
mac = models.CharField(max_length=50, null=True)
ip = models.CharField(max_length=15, default='0.0.0.0')
sdk = models.TextField(null=True)
serial = models.TextField(null=True)
latitude = models.FloatField(default=0)
longitude = models.FloatField(default=0)
latitude = models.FloatField(default=0, null=True)
longitude = models.FloatField(default=0, null=True)
def __str__(self):
return f'Session: {self.name}-{self.version}-{self.id}'

View File

@@ -42,13 +42,13 @@ class POSDeviceViewSet(viewsets.ModelViewSet):
# check if device exists
if 'device_identity' in request.data.keys():
device = self.device_queryset.filter(device_identity=request.data['device_identity'])
device = self.device_queryset.filter(device_identity=request.data['device_identity']).first()
else:
device = self.device_queryset.filter(serial=serial).first()
# activate device
if device:
if not device.is_activated:
if not device.is_activated and not device.pre_registered:
device.is_activated = True
device.save()
@@ -71,16 +71,15 @@ class POSDeviceViewSet(viewsets.ModelViewSet):
pre_device = pos_models.Device.objects.create(
serial=serial,
sdk=sdk,
organization=organization,
pre_regitered=True,
pre_registered=True,
is_activated=False
)
return Response({
"message": "device pre-registered",
"device_identity": pre_device.device_identity
}, status=status.HTTP_200_OK)
}, status=status.HTTP_412_PRECONDITION_FAILED)
@action(
methods=['post'],
@@ -93,10 +92,11 @@ class POSDeviceViewSet(viewsets.ModelViewSet):
def merge_devices(self, request):
""" merge pre register device & device has registered by psp user """
pre_device = self.device_queryset.get(device_identity=request.data['pre_device'])
real_device = self.device_queryset.get(device_identity=request.data['real_device'])
pre_device = self.device_queryset.get(device_identity=request.data['pre_device_identity'])
real_device = self.device_queryset.get(device_identity=request.data['real_device_identity'])
real_device.device_identity = pre_device.device_identity
real_device.is_activated = True
real_device.save()
pre_device.delete()

View File

@@ -1 +1,11 @@
import typing
def get_device_organization(assignment: object = None, device_serial: str = None) -> typing.Any:
""" get device owner (organization) information """
organization = assignment.objects.filter( # noqa
device__serial=device_serial
).first()
return organization