test
This commit is contained in:
parent
27587397db
commit
0937fbcbb9
@ -1,9 +1,9 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.contrib.auth import get_user_model
|
from django.conf import settings
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
class TimeEntry(models.Model):
|
class TimeEntry(models.Model):
|
||||||
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='time_entries')
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='time_entries')
|
||||||
date = models.DateField()
|
date = models.DateField()
|
||||||
start_time = models.TimeField(null=True, blank=True)
|
start_time = models.TimeField(null=True, blank=True)
|
||||||
end_time = models.TimeField(null=True, blank=True)
|
end_time = models.TimeField(null=True, blank=True)
|
||||||
|
|||||||
@ -1,15 +1,12 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.contrib.auth import get_user_model
|
from django.conf import settings
|
||||||
|
|
||||||
from .models import TimeEntry
|
from .models import TimeEntry
|
||||||
|
|
||||||
|
|
||||||
User = get_user_model()
|
|
||||||
|
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = settings.AUTH_USER_MODEL
|
||||||
fields = ['id', 'username', 'first_name', 'last_name']
|
fields = ['id', 'username', 'first_name', 'last_name']
|
||||||
|
|
||||||
|
|
||||||
@ -50,7 +47,7 @@ class TimeEntrySerializer(serializers.ModelSerializer):
|
|||||||
class TimeEntryCreateSerializer(serializers.ModelSerializer):
|
class TimeEntryCreateSerializer(serializers.ModelSerializer):
|
||||||
user_id = serializers.PrimaryKeyRelatedField(
|
user_id = serializers.PrimaryKeyRelatedField(
|
||||||
source='user',
|
source='user',
|
||||||
queryset=User.objects.all(),
|
queryset=settings.AUTH_USER_MODEL.objects.all(),
|
||||||
write_only=True,
|
write_only=True,
|
||||||
required=False,
|
required=False,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from .views import (
|
|||||||
TimeEntryDetailView,
|
TimeEntryDetailView,
|
||||||
TimeEntryUpdateView,
|
TimeEntryUpdateView,
|
||||||
WeeklySummaryView,
|
WeeklySummaryView,
|
||||||
|
DebugDatabaseView
|
||||||
)
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
@ -16,4 +17,5 @@ urlpatterns = [
|
|||||||
path('entries/<int:entry_id>/update/', TimeEntryUpdateView.as_view(), name='time-entry-update'),
|
path('entries/<int:entry_id>/update/', TimeEntryUpdateView.as_view(), name='time-entry-update'),
|
||||||
path('weekly-summary/', WeeklySummaryView.as_view(), name='user-weekly-summary'),
|
path('weekly-summary/', WeeklySummaryView.as_view(), name='user-weekly-summary'),
|
||||||
path('weekly-summary/<int:user_id>/', WeeklySummaryView.as_view(), name='weekly-summary'),
|
path('weekly-summary/<int:user_id>/', WeeklySummaryView.as_view(), name='weekly-summary'),
|
||||||
|
path('debug-database/', DebugDatabaseView.as_view()),
|
||||||
]
|
]
|
||||||
@ -2,8 +2,8 @@ from rest_framework import generics, status
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from django.contrib.auth import get_user_model
|
from django.conf import settings
|
||||||
from django.db import transaction
|
from django.db import transaction, connection
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from datetime import time as datetime_time
|
from datetime import time as datetime_time
|
||||||
@ -16,8 +16,40 @@ from .serializers import (
|
|||||||
WeeklySummarySerializer
|
WeeklySummarySerializer
|
||||||
)
|
)
|
||||||
|
|
||||||
User = get_user_model()
|
class DebugDatabaseView(APIView):
|
||||||
|
permission_classes = []
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
with connection.cursor() as cursor:
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT
|
||||||
|
CONSTRAINT_NAME,
|
||||||
|
COLUMN_NAME,
|
||||||
|
REFERENCED_TABLE_NAME,
|
||||||
|
REFERENCED_COLUMN_NAME
|
||||||
|
FROM information_schema.KEY_COLUMN_USAGE
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE()
|
||||||
|
AND TABLE_NAME = 'time_tracking_timeentry'
|
||||||
|
AND COLUMN_NAME = 'user_id'
|
||||||
|
AND REFERENCED_TABLE_NAME IS NOT NULL
|
||||||
|
""")
|
||||||
|
|
||||||
|
foreign_keys = [
|
||||||
|
{
|
||||||
|
'constraint': row[0],
|
||||||
|
'column': row[1],
|
||||||
|
'referenced_table': row[2],
|
||||||
|
'referenced_column': row[3],
|
||||||
|
}
|
||||||
|
for row in cursor.fetchall()
|
||||||
|
]
|
||||||
|
|
||||||
|
return Response({
|
||||||
|
'database': connection.settings_dict.get('NAME'),
|
||||||
|
'user_model': str(settings.AUTH_USER_MODEL),
|
||||||
|
'foreign_keys': foreign_keys,
|
||||||
|
})
|
||||||
|
|
||||||
class TimeEntryListView(generics.ListAPIView):
|
class TimeEntryListView(generics.ListAPIView):
|
||||||
serializer_class = TimeEntrySerializer
|
serializer_class = TimeEntrySerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
@ -253,8 +285,8 @@ class WeeklySummaryView(APIView):
|
|||||||
user = request.user
|
user = request.user
|
||||||
if user_id and (request.user.is_staff or request.user.is_superuser):
|
if user_id and (request.user.is_staff or request.user.is_superuser):
|
||||||
try:
|
try:
|
||||||
user = User.objects.get(id=user_id)
|
user = settings.AUTH_USER_MODEL.objects.get(id=user_id)
|
||||||
except User.DoesNotExist:
|
except settings.AUTH_USER_MODEL.DoesNotExist:
|
||||||
return Response({'error': 'Utilisateur non trouvé'}, status=status.HTTP_404_NOT_FOUND)
|
return Response({'error': 'Utilisateur non trouvé'}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
serializer = WeeklySummarySerializer(build_weekly_summary(user))
|
serializer = WeeklySummarySerializer(build_weekly_summary(user))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user