Add Device to log the different used devices and make migrations

sync
Laurent 9 months ago
parent a68e003695
commit d9a5e98ad3
  1. 12
      api/views.py
  2. 9
      sync/admin.py
  3. 25
      sync/migrations/0003_device.py
  4. 1
      sync/models/__init__.py
  5. 11
      sync/models/device.py
  6. 56
      tournaments/migrations/0110_remove_failedapicall_creation_date_and_more.py
  7. 2
      tournaments/models/device_token.py

@ -26,6 +26,8 @@ from collections import defaultdict
from .permissions import IsClubOwner
from .utils import is_valid_email
from sync.models import Device
@method_decorator(csrf_exempt, name='dispatch')
class CustomAuthToken(APIView):
permission_classes = []
@ -52,6 +54,8 @@ class CustomAuthToken(APIView):
user.device_id = device_id
user.save()
self.create_or_update_device(user, device_id)
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key})
else:
@ -60,6 +64,14 @@ class CustomAuthToken(APIView):
else:
return Response({'error': 'L\'utilisateur et le mot de passe de correspondent pas'}, status=status.HTTP_401_UNAUTHORIZED)
def create_or_update_device(self, user, device_id):
Device.objects.update_or_create(
id=device_id,
defaults={
'user': user
}
)
def get_username_from_email(self, email):
try:
user = CustomUser.objects.get(email=email)

@ -1,5 +1,5 @@
from django.contrib import admin
from .models import BaseModel, ModelLog, DataAccess
from .models import BaseModel, ModelLog, DataAccess, Device
from django.utils import timezone
@ -25,9 +25,9 @@ class ModelLogAdmin(admin.ModelAdmin):
ordering = ['-date']
search_fields = ['model_id']
# @admin.display(description='Users')
# def get_users(self, obj):
# return ", ".join([str(item) for item in obj.users.all()])
class DeviceAdmin(admin.ModelAdmin):
list_display = ['user', 'last_login', 'id']
readonly_fields = ('last_login',)
class DataAccessAdmin(SyncedObjectAdmin):
list_display = ['related_user', 'get_shared_users', 'model_name', 'model_id']
@ -41,3 +41,4 @@ class DataAccessAdmin(SyncedObjectAdmin):
# Register your models here.
admin.site.register(ModelLog, ModelLogAdmin)
admin.site.register(DataAccess, DataAccessAdmin)
admin.site.register(Device, DeviceAdmin)

@ -0,0 +1,25 @@
# Generated by Django 5.1 on 2025-02-13 17:00
import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sync', '0002_alter_modellog_options'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Device',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('last_login', models.DateTimeField(auto_now=True)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='devices', to=settings.AUTH_USER_MODEL)),
],
),
]

@ -1,3 +1,4 @@
from .base import BaseModel, SideStoreModel
from .model_log import ModelLog, ModelOperation
from .data_access import DataAccess
from .device import Device

@ -0,0 +1,11 @@
from django.db import models
import uuid
from django.conf import settings
class Device(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='devices')
last_login = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.id} > {self.user.username}"

@ -0,0 +1,56 @@
# Generated by Django 5.1 on 2025-02-13 17:00
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0109_special_store_id'),
]
operations = [
migrations.RemoveField(
model_name='failedapicall',
name='creation_date',
),
migrations.RemoveField(
model_name='failedapicall',
name='last_update',
),
migrations.RemoveField(
model_name='failedapicall',
name='last_updated_by',
),
migrations.RemoveField(
model_name='failedapicall',
name='related_user',
),
migrations.RemoveField(
model_name='log',
name='creation_date',
),
migrations.RemoveField(
model_name='log',
name='last_update',
),
migrations.RemoveField(
model_name='log',
name='last_updated_by',
),
migrations.RemoveField(
model_name='log',
name='related_user',
),
migrations.AlterField(
model_name='unregisteredplayer',
name='unregistered_team',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unregistered_players', to='tournaments.unregisteredteam'),
),
migrations.AlterField(
model_name='unregisteredteam',
name='tournament',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unregistered_teams', to='tournaments.tournament'),
),
]

@ -1,7 +1,5 @@
from django.db import models
from . import CustomUser
import uuid
from . import BaseModel
class DeviceToken(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='device_tokens')

Loading…
Cancel
Save