adding crud oppperation to my models

This commit is contained in:
2025-07-31 18:08:50 +03:30
parent 69040274b9
commit 47fcd43475
2 changed files with 145 additions and 13 deletions

View File

@@ -1,6 +1,39 @@
from django.urls import path
from .views import JobListView
from .views import (
JobListCreate,
JobDetail,
NoteListCreate,
NoteDetails,
ImageListCreate,
ImageDetail,
CostListCreate,
CostDetail,
FieldListCreate,
FieldDetail,
)
urlpatterns = [
path("jobs/v1/", JobListView.as_view()),
]
def register_crud_urls(prefix, list_view, detail_view):
return [
path(f"{prefix}/", list_view.as_view(), name=f"{prefix}-list-create"),
path(f"{prefix}/<int:pk>/", detail_view.as_view(), name=f"{prefix}-detail"),
]
urlpatterns = []
urlpatterns += register_crud_urls("jobs", JobListCreate, JobDetail)
urlpatterns += register_crud_urls("notes", NoteListCreate, NoteDetails)
urlpatterns += register_crud_urls("images", ImageListCreate, ImageDetail)
urlpatterns += register_crud_urls("costs", CostListCreate, CostDetail)
urlpatterns += register_crud_urls("fields", FieldListCreate, FieldDetail)
# urlpatterns = [
# path("jobs/", JobListCreate.as_view(), name="job-createlist"),
# path("jobs/<int:pk>/", JobDetail.as_view(), name="job-detail"),
# path("notes/", NoteListCreate.as_view(), name="note-createlist"),
# path("notes/<int:pk>/", NoteDetails.as_view(), name="note-detail"),
# path("images/", ImageListCreate.as_view(), name="image-createlist"),
# path("images/<int:pk>/", ImageDetail.as_view(), name="image-detail"),
# ]

View File

@@ -1,19 +1,118 @@
from django.shortcuts import render
from django.shortcuts import render, get_object_or_404
from rest_framework import status, generics
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 .models import Job, Note, Image, Cost, Field
from .serializers import (
JobSerializer,
NoteSerializer,
ImageSerializer,
CostSerializer,
FieldSerializer,
)
from rest_framework.viewsets import ModelViewSet
# Create your views here.
# TODO create get user data api view
class JobListView(APIView):
class CostListCreate(generics.ListCreateAPIView):
serializer_class = CostSerializer
permission_classes = [IsAuthenticated]
def get(self, request):
current_user = request.user
jobs = Job.objects.filter(user=current_user)
serilizer = JobSerializer(jobs, many=True)
return Response(serilizer.data)
def get_queryset(self):
return Cost.objects.filter(user=self.request.user)
def perform_create(self, serializer):
serializer.save(user=self.request.user) # assign user automatically
class CostDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = CostSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
# Ensure user can only access their own notes
return Cost.objects.filter(user=self.request.user)
class FieldListCreate(generics.ListCreateAPIView):
serializer_class = FieldSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Field.objects.filter(user=self.request.user)
def perform_create(self, serializer):
serializer.save(user=self.request.user) # assign user automatically
class FieldDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = FieldSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
# Ensure user can only access their own notes
return Field.objects.filter(user=self.request.user)
class ImageListCreate(generics.ListCreateAPIView):
serializer_class = ImageSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Image.objects.filter(user=self.request.user)
def perform_create(self, serializer):
serializer.save(user=self.request.user) # assign user automatically
class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = ImageSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
# Ensure user can only access their own notes
return Image.objects.filter(user=self.request.user)
class NoteListCreate(generics.ListCreateAPIView):
serializer_class = NoteSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Note.objects.filter(user=self.request.user)
def perform_create(self, serializer):
serializer.save(user=self.request.user) # assign user automatically
class NoteDetails(generics.RetrieveUpdateDestroyAPIView):
serializer_class = NoteSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
# Ensure user can only access their own notes
return Note.objects.filter(user=self.request.user)
class JobListCreate(generics.ListCreateAPIView):
serializer_class = JobSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Job.objects.filter(user=self.request.user)
def perform_create(self, serializer):
serializer.save(user=self.request.user) # assign user automatically
class JobDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = JobSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
# Ensure user can only access their own notes
return Job.objects.filter(user=self.request.user)