test
This commit is contained in:
parent
27587397db
commit
0937fbcbb9
@ -1,9 +1,9 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.conf import settings
|
||||
from datetime import datetime
|
||||
|
||||
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()
|
||||
start_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 django.contrib.auth import get_user_model
|
||||
from django.conf import settings
|
||||
|
||||
from .models import TimeEntry
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = User
|
||||
model = settings.AUTH_USER_MODEL
|
||||
fields = ['id', 'username', 'first_name', 'last_name']
|
||||
|
||||
|
||||
@ -50,7 +47,7 @@ class TimeEntrySerializer(serializers.ModelSerializer):
|
||||
class TimeEntryCreateSerializer(serializers.ModelSerializer):
|
||||
user_id = serializers.PrimaryKeyRelatedField(
|
||||
source='user',
|
||||
queryset=User.objects.all(),
|
||||
queryset=settings.AUTH_USER_MODEL.objects.all(),
|
||||
write_only=True,
|
||||
required=False,
|
||||
)
|
||||
|
||||
@ -6,6 +6,7 @@ from .views import (
|
||||
TimeEntryDetailView,
|
||||
TimeEntryUpdateView,
|
||||
WeeklySummaryView,
|
||||
DebugDatabaseView
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
@ -16,4 +17,5 @@ urlpatterns = [
|
||||
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/<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.permissions import IsAuthenticated
|
||||
from rest_framework.views import APIView
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import transaction
|
||||
from django.conf import settings
|
||||
from django.db import transaction, connection
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from datetime import time as datetime_time
|
||||
@ -16,7 +16,39 @@ from .serializers import (
|
||||
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):
|
||||
serializer_class = TimeEntrySerializer
|
||||
@ -253,8 +285,8 @@ class WeeklySummaryView(APIView):
|
||||
user = request.user
|
||||
if user_id and (request.user.is_staff or request.user.is_superuser):
|
||||
try:
|
||||
user = User.objects.get(id=user_id)
|
||||
except User.DoesNotExist:
|
||||
user = settings.AUTH_USER_MODEL.objects.get(id=user_id)
|
||||
except settings.AUTH_USER_MODEL.DoesNotExist:
|
||||
return Response({'error': 'Utilisateur non trouvé'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
serializer = WeeklySummarySerializer(build_weekly_summary(user))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user