From 88ca54ec531cc658ada6fc8080fdaa3efa0e05ea Mon Sep 17 00:00:00 2001 From: ghaem aghaey Date: Wed, 30 Jul 2025 23:55:27 +0330 Subject: [PATCH] each user gets its own data --- field/migrations/0007_field_user_job_user.py | 26 ++++++++++++++++++++ field/models.py | 4 +-- field/views.py | 6 ++++- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 field/migrations/0007_field_user_job_user.py diff --git a/field/migrations/0007_field_user_job_user.py b/field/migrations/0007_field_user_job_user.py new file mode 100644 index 0000000..a1a259d --- /dev/null +++ b/field/migrations/0007_field_user_job_user.py @@ -0,0 +1,26 @@ +# Generated by Django 5.2.4 on 2025-07-30 20:12 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('field', '0006_remove_job_voices_alter_job_type_delete_voice'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='field', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='job', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/field/models.py b/field/models.py index c410bcb..29a700f 100644 --- a/field/models.py +++ b/field/models.py @@ -5,7 +5,7 @@ from django.contrib.auth.models import User # Create your models here. class Field(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) name = models.CharField(max_length=255) geography = models.JSONField(default=dict) @@ -53,7 +53,7 @@ class Voice(models.Model): class Job(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) TYPE_CHOICES = [ ("Irrigation", "IRRIGATING"), ("Planting", "PLANTING"), diff --git a/field/views.py b/field/views.py index ac759a8..141427b 100644 --- a/field/views.py +++ b/field/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render from rest_framework.views import APIView from rest_framework.response import Response +from rest_framework.permissions import IsAuthenticated from .models import Job from .serializers import JobSerializer from rest_framework.viewsets import ModelViewSet @@ -9,7 +10,10 @@ from rest_framework.viewsets import ModelViewSet class JobListView(APIView): + permission_classes = [IsAuthenticated] + def get(self, request): - jobs = Job.objects.all() + current_user = request.user + jobs = Job.objects.filter(user=current_user) serilizer = JobSerializer(jobs, many=True) return Response(serilizer.data)