diff --git a/plovidba_aplikacija/__pycache__/models.cpython-38.pyc b/plovidba_aplikacija/__pycache__/models.cpython-38.pyc index 98902cc..a3796bd 100644 Binary files a/plovidba_aplikacija/__pycache__/models.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/models.cpython-38.pyc differ diff --git a/plovidba_aplikacija/__pycache__/serializers.cpython-38.pyc b/plovidba_aplikacija/__pycache__/serializers.cpython-38.pyc index 2a36828..115b4cc 100644 Binary files a/plovidba_aplikacija/__pycache__/serializers.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/serializers.cpython-38.pyc differ diff --git a/plovidba_aplikacija/__pycache__/urls.cpython-38.pyc b/plovidba_aplikacija/__pycache__/urls.cpython-38.pyc index c5327a1..a310f7f 100644 Binary files a/plovidba_aplikacija/__pycache__/urls.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/urls.cpython-38.pyc differ diff --git a/plovidba_aplikacija/__pycache__/views.cpython-38.pyc b/plovidba_aplikacija/__pycache__/views.cpython-38.pyc index 1f9acdf..1c8ab69 100644 Binary files a/plovidba_aplikacija/__pycache__/views.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/views.cpython-38.pyc differ diff --git a/plovidba_aplikacija/models.py b/plovidba_aplikacija/models.py index 611b0f4..645d4aa 100644 --- a/plovidba_aplikacija/models.py +++ b/plovidba_aplikacija/models.py @@ -18,10 +18,16 @@ class ObjektSigurnosti(models.Model): return self.naziv # class Log(models.Model): -# user = models.ForeignKey(User, on_delete=models.CASCADE) -# akcija = models.CharField(max_length=255) + +# AKCIJA_CHOICES = ( +# ('Brisanje', 'Brisanje'), +# ('Unos', 'Unos'), +# ('Uređivanje', 'Uređivanje') +# ) +# user = models.ForeignKey("user.User", null=True, related_name='user_logs', on_delete=models.SET_NULL) +# timestamp = models.DateTimeField(auto_now_add=True) +# akcija = models.CharField(max_length=255, choices=AKCIJA_CHOICES) # opis = models.TextField() -# vrijeme = models.DateTimeField(default=timezone.now) # def __str__(self): -# return f"{self.user.username} - {self.akcija} - {self.opis}" \ No newline at end of file +# return self.opis \ No newline at end of file diff --git a/plovidba_aplikacija/serializers.py b/plovidba_aplikacija/serializers.py index 963593b..e67cdb6 100644 --- a/plovidba_aplikacija/serializers.py +++ b/plovidba_aplikacija/serializers.py @@ -1,9 +1,15 @@ -# serializers.py - from rest_framework import serializers -from .models import ObjektSigurnosti +from .models import ObjektSigurnosti, Log class ObjektSigurnostiSerializer(serializers.ModelSerializer): class Meta: model = ObjektSigurnosti fields = '__all__' + +# class LogSerializer(serializers.ModelSerializer): + +# user_full_name = serializers.ReadOnlyField(source='user.full_name') + +# class Meta: +# model = Log +# fields = ('id', 'user', 'user_full_name', 'timestamp', 'akcija', 'opis') \ No newline at end of file diff --git a/plovidba_aplikacija/urls.py b/plovidba_aplikacija/urls.py index 6e7ec8c..f03f0a1 100644 --- a/plovidba_aplikacija/urls.py +++ b/plovidba_aplikacija/urls.py @@ -1,8 +1,10 @@ from django.urls import path, include -from .views import ObjektSigurnostiList, ObjektSigurnostiDetail +from .views import ObjektSigurnostiList, ObjektSigurnostiDetail, Log +from plovidba_aplikacija import views urlpatterns = [ path('objekti/', ObjektSigurnostiList.as_view(), name='objektisigurnosti-list'), path('objekti//', ObjektSigurnostiDetail.as_view(), name='objektisigurnosti-detail' ), + # path('logs/', views.Log.as_view(), name='log-list') ] diff --git a/plovidba_aplikacija/views.py b/plovidba_aplikacija/views.py index f316738..1eec7d7 100644 --- a/plovidba_aplikacija/views.py +++ b/plovidba_aplikacija/views.py @@ -4,37 +4,49 @@ from rest_framework.generics import ListAPIView from rest_framework.response import Response from rest_framework import status from rest_framework import generics -from .models import ObjektSigurnosti +from .models import ObjektSigurnosti, Log from .serializers import ObjektSigurnostiSerializer from django.shortcuts import get_object_or_404 from rest_framework.pagination import LimitOffsetPagination + class CustomObjektSigurnostiPagination(LimitOffsetPagination): default_limit = 20 class ObjektSigurnostiList(generics.ListCreateAPIView): + queryset = ObjektSigurnosti.objects.all().order_by("naziv") serializer_class = ObjektSigurnostiSerializer pagination_class = CustomObjektSigurnostiPagination - def get_queryset(self): #queryset je data iz database, listing and creating objects - queryset = ObjektSigurnosti.objects.all() - location = self.request.query_params.get('lokacija') - if location is not None: - queryset = queryset.filter(lokacija__icontains=location) - return queryset +def get_queryset(self): + user = self.request.user + return user.accounts.all() + # def get_queryset(self): #queryset je data iz database, listing and creating objects + # queryset = ObjektSigurnosti.objects.all() + # location = self.request.query_params.get('lokacija') + # if location is not None: + # queryset = queryset.filter(lokacija__icontains=location) + # return queryset - # def get_serializer_class(self): - # if self.request.method == "GET": - # return ObjektSigurnostiSerializer - # return self.serializer_class() +def perform_create(self, serializer): + #used to customize the behavior when creating an object, and in this case, + #it sets the operater field and creates a log entry for the created object. + serializer.save(operater=self.request.user) + instance = serializer.instance + self.create_log(instance) + +def get_serializer_class(self): + if self.request.method == "GET": + return ObjektSigurnostiSerializer + return self.serializer_class() class ObjektSigurnostiDetail(generics.RetrieveUpdateDestroyAPIView): #retrieving, updating, and deleting a specific object queryset = ObjektSigurnosti.objects.all() serializer_class = ObjektSigurnostiSerializer - + # def perform_update(self, serializer): # instance = serializer.save() # opis = "Korisnik je uredio objekt sigurnosti {} (ID: {})".format( @@ -48,3 +60,4 @@ class ObjektSigurnostiDetail(generics.RetrieveUpdateDestroyAPIView): #ret # instance.vrsta.naziv, instance.id # ) # Log.objects.create(user=self.request.user, akcija="Brisanje", opis=opis) +