From 3931fc57bf380bcad83379b191f6e1ccf248fae0 Mon Sep 17 00:00:00 2001 From: emaric Date: Thu, 11 Jan 2024 12:38:56 +0100 Subject: [PATCH] implementiran REST API dio --- .../__pycache__/models.cpython-38.pyc | Bin 920 -> 1020 bytes .../__pycache__/urls.cpython-38.pyc | Bin 479 -> 473 bytes .../__pycache__/views.cpython-38.pyc | Bin 763 -> 1318 bytes plovidba_aplikacija/models.py | 13 +++++- .../templates/plovidba_aplikacija/base.html | 10 ---- plovidba_aplikacija/urls.py | 12 ++--- plovidba_aplikacija/views.py | 44 +++++++++++++++--- .../__pycache__/router.cpython-38.pyc | Bin 0 -> 401 bytes .../__pycache__/urls.cpython-38.pyc | Bin 1125 -> 1090 bytes plovidba_projekt/urls.py | 3 +- 10 files changed, 56 insertions(+), 26 deletions(-) delete mode 100644 plovidba_aplikacija/templates/plovidba_aplikacija/base.html create mode 100644 plovidba_projekt/__pycache__/router.cpython-38.pyc diff --git a/plovidba_aplikacija/__pycache__/models.cpython-38.pyc b/plovidba_aplikacija/__pycache__/models.cpython-38.pyc index 45963784c2fd71c28800b7257a5ef64eca816aa1..98902cc95c480f41b078b7c9fb5fd2665524f7f7 100644 GIT binary patch delta 344 zcmbQi{)e3}l$V!_0SNvcpP#yzWg?#pquWGn>EING6s8>JT$U&nMg}08IfpfuEsBki z!JQ$6C55$xA%!)SF^j#KIf^5NEto-*{Uyi@O~zYnx%nxnImJL0OK5Rw5s>C6$;?fy z%Fj!knEOML9jK~^14!IrP0C5k%hqH9^NP48*D=~L@=o5%n93+PS(zz@k$Z9jQ-u>h zNIfqq!3W~90tq%CE*1e29E?1Se2fA>2qA$iCa?-WP0qG^ue`FSNp znMrzyr6n195SJD)0}Z&v165F3l9^Ln!~zmx^#%C^Yz#IR+~TkS8c>>(YR3q22FOo5 JKxY6U6969uNs#~m delta 244 zcmeyvK7*Yvl$V!_0SNB(%}f2yG?7n+QE#HQw7NS(3R4Pm3quNXDq|LNGjkM63QI79 zChJR(T201VY`OU>82rZVzR z_GgM=QsltgDq@Ej<-~n-&fdmT>7mEN14n`hEK1Kl`gpfcM6Ig|xChO!hW(_k| eUyuvHLfA~Z#bE<0Rs#fC}0W;FZCe6 z9`>1E1Zhx&X$S#FT9lrLC? z$<`)t>gnBlMRGl%%S!T6X?jDIHr>DKm}o><9hZAI?bqF}mpTldGdr0;6L3_J`sCX= zq+Aa~KI+$J|3~nC?QIg97G5E~EPIt?N_sY%^evchP053jp%dKym bq09y9iH(VeMTsj$MlPI+Ep%YVx4ruW4fc=# literal 479 zcmYjNJx{|h5VeyuNxz^h@EbZ%i4`G)1T#p4GDMLow?2wnCys2V2pBu_7ufkrUYYtA zSm4}BfF(cOdv|_!=W)N^A$SI_?=Yf-e0uW#w2)ljHFpS{a4Jbjb6N&@Ks^s+SVnn- zamXXtD&st+1fn&`6G#>*Z$Zpsp1g&qQl3J9YI{xB!JOtD-pBF`Jo15Cl4Cyo|ImW^tQFp5hh)0g`JF!eH`yH zF4Zs>2FG)ew{l%X+yjNmd=S0wojrVwFHeiH0d0!R;(C=mDXzdQt*VP!s+HhVR+P_B vt$yjG*2-`CC$L(IC7X!_D}1w2{p`}SQt?K@x&Iy0Lm1E=?FBI%gnQpVh%=0# diff --git a/plovidba_aplikacija/__pycache__/views.cpython-38.pyc b/plovidba_aplikacija/__pycache__/views.cpython-38.pyc index db6c9888b42dcd8515996f1d6702bab6c6889042..da99489baf80797ebfe0bac074046fbf42f4b48e 100644 GIT binary patch literal 1318 zcmZ`&&2H2%5Vn(SlKt)WM-)mq^tckLK;ncD0<{t#p@Leq2WzD$jomi8&JSa6QLA!- z0~ekFdgNtzfLuBC6*w`IZRt{hBTqihjP05E#=G5ai{V)N@l|aGjQym=?C@~$45#^w zLNduU%edg2u%n&K6>g1P?PU$osIiCG7k-T!I>iz))AfBr>VPH zPxLr@!DLIeKQY->{%G!_EBdJE$S!KSsF_F2g6!?E!Q2H#!v?$xp1*yym#X&&!);~C zA~y=LZ)|KQhO~z&SCA%zgO}Epj~+a_;M2|hH~S+swma$J1oFbz6n$21>UMBdM!cng9B$v)7CK}Sk1iWhL=0&elV-t$( zYPbk!Zs0TzP*^tN-<)&yfuFIFJMz9YBtPdLoHIwVaTD&J@sW?%`NGkI<1Ox173yLf zC+R32aItuWqbN;^+{S5c1_6Y4bQMgqGL;)^T?L@tO_Z@!2Y+x9l`+H_+A#gfKS;I3 zYPgkWls>4!+Qpy+?@D5u7WsDuxA4$kdmE33yGDT-?%0V`xqUd?RAy|8a#-r(IFLP4BdE8nR>S$gD+u}g0t-+#L0%SirK-Sg!0>4AD%EZ;EUvVL|zy;}ADwgQy_ z8f0n9QJfzZ>qqzq!6%K6HCNh98?b#{V^fDM`j;EbQ2{oYSOdhen5T!b0V=lY^6}Rt x7OUIJLaL6{ZYj}*jb@=ZxpJYzX40>#K{cqtCsXF1QgUViMF%@*=JOW%zXATBRbv1E delta 491 zcmYk2%}N6?5XY1K{-~uF5wsT%9u}cjFCvHsL9l{Fg+(aaCbV0#U7TbUiy+dzK-s%T zp|7-W-~)KlgOjCT6J{7P|NQftdVS;ETf*rtS; z%oa}O#xB+la~CA`&I$9FzaY%#=ER?yalnEeiNY^!wW5^+e9AaPwDO)({w%qY%kQI$ zA=Ul$(zS_kh9NbBBCmwexq(JTcjgZg$vb0}2{5pURxa?zf=jg`;Fqy+zio~4jJx`} zRuBpy=JJ&8mha~N-pn|FDp{F{5S54i z@Pf3UUE`MIkR~FXap(_4A|?2Eypc3DG%)ExT9`Z<(E6ksg>j2blIbY#$Z-y8SSSg4 z-l_>WM8CYVn&ZmJa>j*(8YcXIPu2wWKyl+zYu5C&`36Ewq@S<6WArKnKhYmse`v#K JP~3)R{sFL2bk6_) diff --git a/plovidba_aplikacija/models.py b/plovidba_aplikacija/models.py index be55f22..611b0f4 100644 --- a/plovidba_aplikacija/models.py +++ b/plovidba_aplikacija/models.py @@ -1,5 +1,7 @@ from django.db import models from django.contrib.gis.db import models +from django.contrib.auth.models import User +from django.utils import timezone class ObjektSigurnosti(models.Model): naziv = models.CharField(max_length=255) @@ -13,4 +15,13 @@ class ObjektSigurnosti(models.Model): simbol_oznaka = models.CharField(max_length=255, null=True, blank=True) def __str__(self): - return self.naziv \ No newline at end of file + return self.naziv + +# class Log(models.Model): +# user = models.ForeignKey(User, on_delete=models.CASCADE) +# akcija = models.CharField(max_length=255) +# 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 diff --git a/plovidba_aplikacija/templates/plovidba_aplikacija/base.html b/plovidba_aplikacija/templates/plovidba_aplikacija/base.html deleted file mode 100644 index c87692f..0000000 --- a/plovidba_aplikacija/templates/plovidba_aplikacija/base.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - -

My First Heading

- -

My first paragraph.

- - - diff --git a/plovidba_aplikacija/urls.py b/plovidba_aplikacija/urls.py index 314374b..6e7ec8c 100644 --- a/plovidba_aplikacija/urls.py +++ b/plovidba_aplikacija/urls.py @@ -1,10 +1,8 @@ -from django.urls import path, include -from rest_framework.routers import DefaultRouter -from .views import ObjektSigurnostiViewSet -router = DefaultRouter() -router.register(r'objekti', ObjektSigurnostiViewSet, basename='objekt-sigurnosti') +from django.urls import path, include +from .views import ObjektSigurnostiList, ObjektSigurnostiDetail urlpatterns = [ - path('', include(router.urls)), -] \ No newline at end of file + path('objekti/', ObjektSigurnostiList.as_view(), name='objektisigurnosti-list'), + path('objekti//', ObjektSigurnostiDetail.as_view(), name='objektisigurnosti-detail' ), +] diff --git a/plovidba_aplikacija/views.py b/plovidba_aplikacija/views.py index 692bcda..e69aff2 100644 --- a/plovidba_aplikacija/views.py +++ b/plovidba_aplikacija/views.py @@ -1,13 +1,45 @@ -from django.shortcuts import render - -from rest_framework import viewsets +# views.py +from rest_framework.views import APIView +from rest_framework.response import Response +from rest_framework import status +from rest_framework import generics +from django.http import Http404 from .models import ObjektSigurnosti from .serializers import ObjektSigurnostiSerializer +from django.shortcuts import get_object_or_404 -def home(request): - return render(request, 'base.html') -class ObjektSigurnostiViewSet(viewsets.ModelViewSet): + +class ObjektSigurnostiList(generics.ListCreateAPIView): + serializer_class = ObjektSigurnostiSerializer + + 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() + + +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( + # instance.vrsta.naziv, instance.id + # ) + # Log.objects.create(user=self.request.user, akcija="Uređivanje", opis=opis) + # def perform_destroy(self, instance): + # super().perform_destroy(instance) + # opis = "Korisnik je obrisao objekt sigurnosti {} (ID: {})".format( + # instance.vrsta.naziv, instance.id + # ) + # Log.objects.create(user=self.request.user, akcija="Brisanje", opis=opis) diff --git a/plovidba_projekt/__pycache__/router.cpython-38.pyc b/plovidba_projekt/__pycache__/router.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4856c58eb681488096f85dce5435bd17dc287830 GIT binary patch literal 401 zcmZWl!Ait15KY=`x9YBV6F*@u3*JOT1oy09T@Rs9vSxNkn>Hm$ciE5d7rc8~{GD7q z`3s($c2NWe^2mFcnKzmFczj4O^7mKRQ9?dC@;4$RH+bv?f*^t_Qc*@}cMnuhg)F25 z!eYQ8h>BQ*Kt(79FP$0{LzajrC6o9QtI34=)B8mMrAy_iHMO=*K1tZ5;P7c^bnC!a zHq?ENL@ilx3pKCcZgRlR8l~4#EO^cvB}@J+3qD;vfT7AjbiSi+v_)yK|*8MRBEY1T$!IZtPgc z#Ku~dnOa^v*_v5naxt@o=q=%bocyxPl%&M?#Dbj6?8M~Eti;L3m=)Q0fF>02On%Fp UCIDix2=FipF!C_-F!KBZ0FLY)82|tP delta 156 zcmX@a@svY5l$V!_0SLZU%}ZU*%)sy%#6bq^K#l_t7e`Fgb{9)!N#RIkPvK1A>Sa!6 zj^aw;4rb8g*;uoViIpWIKR0!<0kej{ErwexNr}a&nvAzt@)Ci95zH1$QIeA#m_=C2 mGE>WoCog4IWa9%GTEsW`40D