diff --git a/api/migrations/0002_typetracking.py b/api/migrations/0002_typetracking.py new file mode 100644 index 0000000..dce33da --- /dev/null +++ b/api/migrations/0002_typetracking.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.6 on 2023-10-30 21:25 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('sde', '0001_initial'), + ('api', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='TypeTracking', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tracked_by', to='sde.sdetype')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='types_tracking', to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/api/models.py b/api/models.py index 3041322..f4a8175 100644 --- a/api/models.py +++ b/api/models.py @@ -13,3 +13,8 @@ class Acquisition(models.Model): source = models.CharField(max_length=255) user = models.ForeignKey("auth.User", related_name="acquisitions", on_delete=models.CASCADE) + + +class TypeTracking(models.Model): + user = models.ForeignKey("auth.User", related_name="types_tracking", on_delete=models.CASCADE) + type = models.ForeignKey(SDEType, related_name="tracked_by", on_delete=models.CASCADE) diff --git a/api/serializers.py b/api/serializers.py index beebeae..0f8a838 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -1,7 +1,7 @@ from django.contrib.auth import models as auth_models from rest_framework import serializers -from sde.models import SDEType from api import models +from sde import serializers as sde_serializers, models as sde_models class UserSerializer(serializers.ModelSerializer): @@ -20,3 +20,10 @@ class AcquisitionSerializer(serializers.ModelSerializer): class Meta: model = models.Acquisition fields = '__all__' + + +class TypeTrackingSerializer(serializers.ModelSerializer): + type = sde_serializers.SDETypeSerializer() + class Meta: + model = models.TypeTracking + fields = '__all__' diff --git a/api/urls.py b/api/urls.py index 0ad437f..a5ab2f8 100644 --- a/api/urls.py +++ b/api/urls.py @@ -6,6 +6,7 @@ router = routers.DefaultRouter() router.register(r'users', views.UserViewSet) router.register(r'groups', views.GroupViewSet) router.register(r'acquisitions', views.AcquisitionViewSet) +router.register(r'types_tracking', views.TypeTrackingViewSet) urlpatterns = [ path('', include(router.urls)), diff --git a/api/views.py b/api/views.py index 80125af..cafc350 100644 --- a/api/views.py +++ b/api/views.py @@ -38,6 +38,15 @@ class AcquisitionViewSet(viewsets.ModelViewSet): permission_classes = [permissions.IsAuthenticated] +class TypeTrackingViewSet(viewsets.ModelViewSet): + """ + API endpoint that allows types tracking to be viewed or edited. + """ + queryset = models.TypeTracking.objects.all() + serializer_class = serializers.TypeTrackingSerializer + permission_classes = [permissions.IsAuthenticated] + + @api_view(['POST']) def custom_types_search(request): cache_key = f"custom_types_search_{request.data}"