From 96e3d3af01e7f48152364fdab08d136d00e855f1 Mon Sep 17 00:00:00 2001 From: Marwan Alwali Date: Mon, 17 Feb 2025 15:06:46 +0300 Subject: [PATCH] update --- api/__pycache__/urls.cpython-311.pyc | Bin 1860 -> 1945 bytes api/__pycache__/views.cpython-311.pyc | Bin 7943 -> 9086 bytes api/urls.py | 1 + api/views.py | 29 ++++ inventory/__pycache__/models.cpython-311.pyc | Bin 92586 -> 92943 bytes .../__pycache__/services.cpython-311.pyc | Bin 4776 -> 4776 bytes inventory/__pycache__/urls.cpython-311.pyc | Bin 28322 -> 28440 bytes inventory/__pycache__/utils.cpython-311.pyc | Bin 40379 -> 40428 bytes inventory/__pycache__/views.cpython-311.pyc | Bin 203277 -> 204088 bytes inventory/views.py | 6 +- templates/inventory/car_list_view.html | 46 +++--- templates/inventory/cars_list_api.html | 150 ++++++++++++++++++ templates/inventory/scan_vin.html | 3 + 13 files changed, 211 insertions(+), 24 deletions(-) create mode 100644 templates/inventory/cars_list_api.html diff --git a/api/__pycache__/urls.cpython-311.pyc b/api/__pycache__/urls.cpython-311.pyc index 2e159340b17834b96c78b5a8f002aad01f8c0758..d75077936dafb7c5bef8dc3b3158a1193e285ad4 100644 GIT binary patch delta 207 zcmX@YH3%)sy%#DM{JDC6@Fri~hVm?m>Dt4@B(B*>M{93`G2 z9L%68GTDRqsvuiVetKq}{w-E8?WZZR*`7t0adH`J2A2}h1V$h(p1k=5Yd+)TTy|N0 Qb{2l725t~6QUFQ;0Q*uNlmGw# diff --git a/api/__pycache__/views.cpython-311.pyc b/api/__pycache__/views.cpython-311.pyc index 670f4d2648f12bebbcb90614e77a3ac3032ea8ea..94bc6f61f10c3c88ecf7fc1ead16d04f150f9d85 100644 GIT binary patch delta 3425 zcmai0TW=f372f4#x#aSG5h+r4iB>4Zw3HeS+)8rXNWL_UWL+$@3<`qct|UskBs;sZ zYnLkZkfKEpAQ8qz4KxJ=v``QvXbK1g`qDqpC(9LJc8dUg$wS^8G<_-1%Q>?YBT6c~ z}t zQn{4YmFr@*ezjZc$@Q>yK<(A~a(%2FRQqAv0MFUDo17eao0G$ef8Wk=AH$6o{eX9; zBY;QSagNIku`w~wbtuwCn)cb^feQ?a1D0rF-R@54C0iCRF^d#nT`erbux`M5TG$A~ zdI9TeVWSM|2W+5)z09ydz=m4bMTVsTyKszM&dS4YbGb|MON(44^96>M;Z66Q!dj_Z zFe(H({5%Nncl1hmLD8#~vaZmwZ8HR*Z%r}sTe?E>#)GOt|7u&|LkAP~qRl6w9~()+ zgQVyu&dYPy%=k@*Trdiz9R?CFD$&r4-db9^lfOJRmjCwk>HNaX{N0(wCE`O>tf?B$ z-<`dFcj?yL!tLD5G>OqmLYhy~yTVw|B0*<8D0=BHgeo6D5L|YicTtZxkQxL0BaV!t z`Vxx7v53-};-tV72|6F_Jot@R=3fhe+7wq|4!rU3J(5S=uT+&;bmn4Q}Zy~KEY~5HxSqVz|jTYABQnLvoN<;;7PuL;xY=%5}81O zDI$|}+@BCIM`Vi5`8x(Nc7lG$t0-8KSyHZI7sW9BxnHxge-*M{qxSVN*HrBHl#hDXuxhP)tx?aLVGE1Fqj?Pw=44JP1=nrxjUI zt&kQ`VNueHp~T>M1j}fH;yT>=75eLNg6@O{ET&~T75fqG3rFSu$A;5anhE@x4O%9? z6sCPagm2+66gTL9qjCCaxXJw%pXy>& zDVA1C#ez|)l+W-}v7_(YVAqfc#a$Nc4?3E`uCZYM-O(RBO-QrxRM7emaBOqcd_SH( z*Z(HkpvW=*2l1x=P3C_w5nDa&A8buG1TZ`?lQ>j{8vE4?`o-8vlu- z-Qk`KT}*PaQx;^GEbcqN4ctvP4g^0{GmPxDU-0&Z_W%mcp_Hj_&J+r2xT3Ay^JqUJR;K2)uxF9P9 z6}HxE&^1FPIbST0yaqdKK3^_qiWxqJa9^}AR<)tb^urKxAIFJRI0T??Q!*+>L1k_I zxKlC|P0s{K08Q;TXX;CY6$iHG+F{99YYDeoQ?SYu!FOzmc)(y&#F7uU@4c!F>tQt1!p($eY zNJHKM)dt-9pFr$zpZSuHUp@2<9{C1$ZZxFuyWe{6+B?@CU)dW!l+s61dS|*32<_bZ zTuL2Dy+_jUGb#I2%Km=!iIhE*CXb}aXVUajX}Tf$8e%=w5W5;;@JqMTD}2R)*qQ#P zp9>`)5ABJE!OT%Gvva!OVB%4r5$$Tk z`;OuxARpDAOG2mcoCEPCCwN_7p@6Q_#cJnM)RredIy@gTaH=Pw@!n29x=VF_%{z~?AX9c zJ1eiO_Oar_3Ip4{*(S<%Ft%Jy9X|dgPCz2JRAq|%3cSNk)XnK{z`}kGCsV$`jXr7r nQ@$%29D2gF{b{7@C*i+ynJ4Z4gWaxmTemmH!y7&;*bDz3vnCV{ delta 2250 zcmai#&u<$=6vuaMXT7%L^>2Ia#B0Y%NUa37g%G7QDF{TXq7YhKqRLbxj(3x6vl~0J zPTEAM0fdxGFX?dSf~cYb5{i04@GpSG1+B!Phzkcqu5f61Z~TKM*{W9do7wN1na|AI z*|(1`?p~1Y2ZMeNe((M8_41yyC&~Qe-pEMK6e@!0t$0nbBJ!NdsUE{;`YV3c?lJbv z{En#ljEEVnM9o+w2EM5JjkuYpB+O(b$@&G1lqpwa*6uaZW~P#1?V!;IHu&1b?3+B@B=vJfIw-O}c@+cmAx)az>`gL6tGgma!p zQRtK2u}B!2w#TY&YMm5J1(j4D++t6A0oZvOWr(f^6AD`j?sq$SbSaIx)f}T=27lba z-Od8+G>$rhaux+QPR^m=uF0z)wpb^sM&=i{Y;k=Pfd@VXF+Tc((_JT)r{75uVA1>!YC$> zMa$hS5+`^WhoMZWrnfV5^dH3vZQ4HgcBvKD&sv& zws|V@-cJpjcj6_E^X94sydfu`-=&5fp(_YQnPbp^+=i|o^nsi>?F97!^xam$I05=w zPCJ4O1fhJuK-1|q$Ux9<>CCtjNa})~v8~aJ;z(;C4P}AR?qmviRs_(REf(#tdb7H= zTra7MB@Cw{a~X%i}~MSS#; zlI8vMiIScSV7Cs(TB(y}ZKG+CUbNd)E`)8-(#WP>(<~B(TN0s5xncOO+|6ZoVi@=7 zYnyOx>tu@+jMg^;OPJluDnq-*v(m##0DCFfOTtbsJ5uZsv-Gp99IIXbic^q<4MV#? pK8A^TxGcfV$=o4)y7*r?<>#Y+RL|cz_$R;Ok~kMXb%?@h?0?mS?>ztj diff --git a/api/urls.py b/api/urls.py index a5713d5e..e10dc1ae 100644 --- a/api/urls.py +++ b/api/urls.py @@ -18,5 +18,6 @@ router.register(r'car-option-values', views.CarOptionValueViewSet) urlpatterns = [ path('', include(router.urls)), path('cars/vin/', views.CarVINViewSet.as_view(), name='car_vin'), + path("cars/", views.car_list, name="car-list"), path('login/', views.LoginView.as_view(), name='login'), ] diff --git a/api/views.py b/api/views.py index d0c03086..56de2c53 100644 --- a/api/views.py +++ b/api/views.py @@ -1,10 +1,14 @@ +from django.core.paginator import Paginator from django.db.models import Q +from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from rest_framework import permissions, status, viewsets, generics from rest_framework.views import APIView from rest_framework.response import Response from django.contrib.auth import authenticate from django.shortcuts import render + +from inventory.utils import get_user_type from . import models, serializers from .services import get_car_data, get_from_cardatabase from rest_framework.authtoken.models import Token @@ -96,3 +100,28 @@ class CarOptionViewSet(viewsets.ModelViewSet): class CarOptionValueViewSet(viewsets.ModelViewSet): queryset = inventory_models.CarOptionValue.objects.all() serializer_class = serializers.CarOptionValueSerializer + + + +def car_list(request): + dealer = get_user_type(request) + page = request.GET.get("page", 1) + per_page = 10 + + cars = inventory_models.Car.objects.filter(dealer=dealer).values( + "vin", + "id_car_make__name", + "id_car_model__name", + "status" + ) + + paginator = Paginator(cars, per_page) + page_obj = paginator.get_page(page) + + return JsonResponse({ + "data": list(page_obj), # Convert QuerySet to list + "page": page_obj.number, # Current page number + "per_page": per_page, + "total_pages": paginator.num_pages, # Total pages + "total_items": paginator.count # Total records + }) \ No newline at end of file diff --git a/inventory/__pycache__/models.cpython-311.pyc b/inventory/__pycache__/models.cpython-311.pyc index 785bef3b1a7a6bd9cd8161db9b5c69c971b88ec7..2b860c9b7f3eb815c4c741c289797c09e547d54d 100644 GIT binary patch delta 7148 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 delta 6916 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 diff --git a/inventory/__pycache__/services.cpython-311.pyc b/inventory/__pycache__/services.cpython-311.pyc index 5ff92b966b3c5e1b98f643be9d90f2c05dfe1b35..6a8886eea1825842b33f1906ec77fd5c1649dad5 100644 GIT binary patch delta 20 acmZ3Xx9t6bg(!psi5ogFYy4c_`1iSJY%W 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 diff --git a/inventory/__pycache__/utils.cpython-311.pyc b/inventory/__pycache__/utils.cpython-311.pyc index a8c7c1b233b49d86483c31e39d052dfaaa781734..1c8d967d0572803fade1d63b872db5c3e72bb18a 100644 GIT binary patch delta 975 zcmZvaTS!zv7{||d)?F`WHnt=yGegsdRNw{bPuwHrz3 zW|@6d)a20u0wV6H5iX$Jw8amM$aA+P4fF{RjM`X+AjR;$+glDPr+&B z>tPax$}evu5^;3q4=b4iN@l;}G!$n{k`t?7gv+ajN!9?#>L)IPxcZ3eujU#cu1ikC zz0hzM8t&zf;*8==MzLxXYyBi(kU$>^pvRk|#Pd!TzCWhO?CKT|ICQC1s#dsSE|oC3 zVj93)%vR^Xd@NU&*&ILS~Zs4`)EMeseycfr(0(s&%8%K1vt$>@M3@j_3V%?_i+-YO( z>cv)Aj@5N{A(hRjzXG;=5nX`K8ZbS@nii8rk*A2`C{kG$4a%?r%(?dVOk7?mNc#fsv`|tuCt#@E6_O+J6 zOP0R-vBjo~Now%jzU%Ooo!$Rf9@iw4W)7Ey)(E=+cek}bJbrF_IJr^?R*pu#B`?hp zch|TbnkjnYleT2AG26jG*@cp(`tL5H@sZhck*g%r;Ue`j%!XI6y;>~NA1!mxI*W|=1 ztyXKPrv=&g>gbX2dqtL6@v4}&N5G4RyGy`{Bi*+u%7lNdz&eg7*;u$oBBDTq%r6V>i!xnxV^5D{&`K|GzT^3-;1$h8SsRS!xI)qhw$AI zCB6$p@a75K+RepzZ2HL>fEBFgRD!ISpL$3{bmPU-Q{WtXa9Wr1R2e45r2q4Ssek&{ Ky9F!GZ2b*VmnY2t delta 941 zcmZvZYe-XJ7{~XVxp_9Xw9Hbb#k6VOHOxdaFHJuPIwLK0>Y4L8o44Z(nJE}1%`7iZ zsaQco;FpT>tuGBy0tv(qI*us@K|vp)D7z3LXr1>Y(uWSbKc46RT;KP6ax-o>qn*-f z)iUvmR!-MXJ=PYM;!vqC+Dq?YYH1i|7JFlASqcPTds&ZycZ!L)Sr(6p<|5dK{pS0p z)iRZKP_x1YdDx&ORwuB!MOL@UYN!_GVZ)YKgTNXVS;Mww@UVtEH9~l@5S}iCXU`f1 zW07Dq3&yG?)+(^pMb?T}EHP?tagm;!<1Rx1b+!08|i=0vU4rH?S z1zg|;7?qY-E&Jv0nK-NS7|6i6+8jthpSoa3!^3qEut5szZpaU%h$Vcn*q4u`Rvg6_ z>b|Ckr)~nO8l#lyqUqFQxj95(wb|`n#N3#nfE>KpG7EvEy!8Pn(`a@&`to=nKoPty z+d-U~x;qFYv%G_WTs+!QqLvn*aFg+lQ3g1S>U4pJJn7^?Sw)A2qUHEr%yjO8RWvy_ z!HW4^3GfDcx?aFr%(^fGZ+-r5Ya9knT3y`_pT9bXYBS|CI0U72QPB0f0^-<>YK&zn%vgx;2SX5 zWdRL#yM93jo*%HlZd@5y*6gJ5PQW-<0r;c$;DC=bj5g;vyfxSdK16@@DWhtmicDx{A~w8rfl;s=l_lwzHK#5stc%YXLp9O6vHC?tGns!{;M;5Q?hN zXO$)zFQhmnVoh@O0h+Y>1*>=5o?-uN0q}?-BjynXsO}< zz9XA{ViGw!-UN_K<|bIiNBY&TXvQ$E fPKLl;@^jM0BvddExGwuYze@U#f1@Qhbi3jYrD7Pz diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index d16f8d4fb3cf3d4f4d20cc75138587a3757e3cbf..7a5c78e5b38cdc54d7922671ee4bc7070598a578 100644 GIT binary patch delta 24474 zcma)k2Vhmj(r{*zd((RYDWnlXNNAzAP=eA+Kza=!_Ywjj2`8aNN)SXust1{;C{0AF zh*7SJC`Fne1_ja3f`X`Y9|8*MKQrg165sbnGi;fi*`1x8ot@p2CGUHD__2rA+n%0o z4)l{)w=n(vycJ$S;I%7un5nB}zP zjj~2t25%p-Nl^{`8b8u%D76}3}JBn&ktJHoiwWFyv zrJAnbGANOc-jTdHCBt<+kncAQ?~66k(b z^68Wx&-otTNj`(}6R7n(YuY9gF{fYSXZZJ0KauJ)X)umdN5A&EVyT-%by?Q2dV+J{ zoNP+xJb`y!@Fr88COpPe;c>x|OOtcal1K28WeUL(X)%>rOsi&0m!)<()y}9~JApek z{0ExH0hMKF$$vtsKa#AUeWLV=ke*4TXA$W!RYZMNYG+gJ92VZ3pCn&E`MHE$RTHjB z?Q>K+uNqoETjtY1f3ZAI@K?(Mg4ZoC5WGSCTKGi2ZVIgziPoZWP9gS*a2S5e@)9+@ zEl7(AX^Fm%=K7B0mr{NicX!lXBE9?x(!UAT3c`B1oOBuG|4OY+wJWO`#678fg=$v` z$KNH7l>d(i=)UDu>emCyYXl!I2g@MK>iIDI4@tdFsXrz42BjWJ%Qe(;Z8g1kEVb*X zc0El>Wi9;6vVo}oZF!U6KZ3WB@ZKUS^TMmD^KuyOASjy%lO>28+%dz3F^qV=66 z|32kEcv8m1!A0tKQ@xFu)}n#vEWP9>GQ3F=3L`mwNbm;4^eenFH}3HL~~ z?ENiAg=T=|nEV?k_+JqI@oMpFNc{<_|FU%Q8kMRpv8zd4KUq!JgQVG4)T~Il94z@$ zl>fR~HX%~~4b`8f`mvR*0`Uoz`ZHAjZMF5ar2Z_`e^*_7`{7~K(eJD2XthD`=4}7A&xzs>tlQZeLL98 zoTbdgnyPR033YXqoEz=2Cw)Sl-6iLt-|-1^_LQ_2xApIAZ|f~(KCCBtqHk~uU&;Gb zr+CAkwzu&YoPcs1y})<4G0LE7M%lyOELfU_F#9<@?PZ}-R;wC8_Y$dvRYR{g$tt{b zi=cEw=_Wzx$kJ_s(ov-w1*K~XpJ?kI>wByZ`Z~YB#&x7D#=6zI=LsF@YwurO!HHcC z*1q~azd-#jKbL0pq%4lhtRGR^N-hvhRX=;%c)_bLZGHR$ef!(X8%TLW>o$G3e`w=I zl51?;UQI6s*jpqBP7|UuKzgy)-=$eoDQm`M)%IeLy=`;BYawm97lZBPEv3Abb%!1j z5Zbu46FEGNnucVVHT~q%n(8al*9dMTu)WS|-$^-jFD}PY>u3^p17By2%FyqK`5R60aLj(6MP^@w$7CRC-JZx6A z=j4Y};*m0*SP;KPQq%G>re@@2SaaiCv_vw3+As!Yu5?Kq4nqJ|IQXkM^>|9Kv>|&Xn@ix)Z{G80i^8DsZ^q z7Wzil*L!YmTIAN~lv|_IZjB0_y5L)LWyERUdS`tbf9>0NUzegmLr)JHQRLhBl<&yX zz9S2IUU2ta9$OUB^24;F`9-aU)BmU3N1S#aQRFm2TR~*g=-2*(w?>0|;lRF1MfBlL z_GOUFpdW+&44z>yK%det0($GO^hx5NZP^yda6^wC3xM8M9% zwnLH~Jx3AF7SP6V+jM=^@I1?srgmcew&#yM;M<+MoIXs3Ip#F}{oLO;;M zs?oIlO!?gUppPC~voJ5Ehk^qA)6`l-_gredT0*y+q*Dcw3-pMw!DbdkelYjeoTp_> z%KfKs=-8hXyr3spo5Dyv&zcA;^j+3|?#l^LTftzN?lCSEV)U$WJ&DUlrxLYSr$;g>RYb&>Y;jD?%l;3u4 z%;$4$DW$e3ZMkmF>ICocxX3-G^7k0*Vz8XiL`k`U=rI+n*7s&LCk^>6t2_0oU3Q0r zwT!%vkw4&+u-L$<^5J__82-EZmhAYTb%aoC&d$lp$j;KLjbyo=4V6KRvBJeE#zE5RIm&|Mi)Aao_69OwYFwnon<S}%AUq3@eB3R3m(f+RSvk0}UuJIxIlOwkt>%!Si>!PCKd%B8l2 zqvi&JnPs%aMfctxQY(oO?=XipTxefH1Gpebf9JWDuv)+R+!pskj3&nLn*Qp%UZm<* z=Y8jXjZ2vr;U1kI2N(5sFW1yvpO1t$_4wyMa=XG+3|8qkpI-o1q!&vTV;@C ze5co4(xS^l#`=T7p9~%`@F5Tf#m+pjDH&N>HWwx`NMVr6;8_A>=x^th79Bs(yD#06eFgm$oo}%k8uEq@@F#cd#I>N>Aw8r0~R2 zo7uerD}CuJ3+u6lRbU9xgE%*B9Lq?|mx%AY-eFZ3ksrA#IFt^#M4sD~cbN{lJe7J* z=P;V1cL?`L;fYn_l}`!dU1nfna9&^0C)n+GPBPf6r@uNCelNWE>Qs|^1?|#P);1-R z{PNoPC{e;m+`xgsi=`mWQ4@2sO24pni&+%NPhY%lXP4?4_*3^tnA5p2FLFx1O8*qQ ziIq>Wq~@jO5{g5)%_vyk8tUsGt)K4g%Wa{oncitbD5=fJ4Gp2LzG%ZiIHUJ{v-^1I z{7I&t&Op}3K9-?u3|^cP>mu8)hap*6Q!-gHG&-v~XlJ;!sBM{qi=EiIYuA{@ME&nK z6HH-*d8M$~#yyUZq~Cr!9!iWAO@~JZjX|Q`YIA~$P{xX$ySX2jez7Yfj0$r|Rpr^@m>iZ`-zql`oJROvX{`&A8IE6X>ZAg7j~; z$3Q>*kL^g*SL_HhOC7J6VExdJIxwK{*B!^fJd_S>xg+)Uwg&pOo!i`^xW5cK>#x7N zS4A29)pK_(f!aE}w+v$S74P{wSLAc>y%@+Y{N+7YP%V|d@4Yb0$y4s26^6av1R!2d z{vZfi>El00hjx0=2QlVp%rQmJJ{DS7WB1cwj%St)^f9(}Fh_sgw$!H)7c}Bg`!Pt> z+kO~gZpnr1ut^?-dna(3K?alBq_2NBTHpHNVwGU;ZNHCx^^c|MEq1BU5togLNX7bb zI4suZe>~AWm5F!as^&6ResqX)&=@RWvMf)1MS;KGbWcas*`SO?lfe&t{K$3m><1x* z2lw~^nZa*AiGd#a<4=O&6}`sZMU-B@H`uKklVh-4|9tOQ=%&xT60CRn^h%I)%}MLS z6DD1&D9v*RJ@hf3g}~avXFr<{X2as?ru}tj7UTC@VS~PW{}s31Oq;=L`s@RfRBwfs zM?(q=Pk7AEo=w_t!hU*U!w{v}AqEgJAvK!Me`x(%7_q3Vo7QgkJxEm!tNK z!cNI5%6%XsGT7#bnaL_zf8q03HP9~7qn}TQK7~n#HbV`zzs0V3*|Y(sW?D77%c}o# zxG8kfn;w|}9~HiFWGK|^#PT(aHKpRrhShJUdmM`hqw}|ec8>&*OWkpZj4U7rmrCda z?~os*&pr}@kv)|&>@S>ftQ){1{k<=08_VJtqn%?=wufjjtNK6<-RXD~9MYPZ%S1aKOvyP)m<|)uazT(HPoc!#*n7dkFW0!TUVvuaPeK>&H(lCr6d03yYFT zpu4_oMP1ls4bZ(Wn{;(@0l6+Oo~&cveGZ+Bg<}2Y$vi0GozQzM6J&6P3HD-wxNNX8 z>2H6PXy)=XN4$Go1r+}E)h5RPkxy@ys5vb)E6tkORePx0z8M3D^q|wV{dxL}-Sf26 ztlV){EhT57c0=!TTK5r+DYp)(`km9Y0_hOvpdDw~4C9pD>4-X0Cs4F#A{RmG;rz2mzbnstITEzfFcq>b0V zEly1I8EBV})e<>Q%bpaO?-ZGr9U13X?3I?Cl}D~?O7>W8Qf$h~&a>u{`=(h_i9pKO z8M^Pe8W5=0JJ)PTD(h<|3rUV=-%|&*Dk5dYEA}Xx4ssT>uH1@6P3Ju^(p6=x?>N`j zEuYB##rp7lq3OIU09pMDQI^HYr#+(2dc=S25&vN{>2nw8s)~lBoE|dKo+&MxJcHJX z22ZQX<&=9y4O3M2j2f+qJmT* zH`*|L`Na^!zY;xpqYK0`-pbTy@_cKB!y1V~L1(+uCA&a*Mn1Lw6Xa=lmR`_xW+H z_iUaI20e*j?o3)uk$UJAE6gsOdnNbDUe)+1#+>$Vy{f7EU8`>%U%6+g*LDY1(=+Wk zv6x+cj)zIqnf=}ixFZZkmv+QoAMlH&7Et(LL{QtSTQzq}r2TESEbA6@^$F^J7$vAbr?wQ5sE6}8rKHyGUpQYUH z2-hEFutb03&X7P+SYaWnTI_8P-Suv=nGFiL$fNJZnqH@t1%-?5#yP@z{r!8jAyhwm zFT!sF6<6}F&g(9}*M_(B`oAwWmvHm*h6A&PIWt(N7ytg0T4U@7g{|%fgU?%BCv15# zwWmpBZQ*@=^@B-16p^Hzn@cO~u-+TFl)(-b;t2iH?}2*q!(_El;rcJ3fqvrQ7&u$l z@Q?aHCUw}KgW(*)00<1&N=+)pLWs(F{rf*_s}oL`9SRA0!$)VU9$=QUpeUYXXk<;j z#pBxM)6DiM`yuA(2V$u<_o)6c~KYZF3L+0`xk6Sz(K85X06& zQ~k_eP1FwFaf1pY|85JgLm%-^A1dGS&qVVjZnhl%u|nW0jbWp)Nw^g|96=d7#1hYwv@VbIdumc-7LaSJ93ge1dpT;SfaPe79hQW~u*nzJ*LUXqRgmI5K z+Awkl)WkKrm8b1*M`)~kMVnZ~x@sRYolmfX8A9Px<`RN=X7Eqg$K|rQ{(thcnIX~b z2(@yesBP~4a-MjAB>#e!)CXF!++e z4!rCEN1Jj_iapZk+B=KZ1|J5rIG&St8ONDZV;IN|c$g!93cI!#o12B0BnDAi|Bw|DWM8T_=6ac-UKQ0Y`q&Vr> zaVA*ay+h3F0E4{@MD$R~b?IRm8M@DrSi&u; zE=9u@{mOl0Fb896K_B(2*j`*(3&zuE9@K(l=!D(Epq}XtA+50Gg%OfkZ$jVaRV};} z0sY|?Hi?AV?md~3jIk4rj)ZXk-?)ImDi+lw8u&wutW8u;MnW@e5evS!FAQ8UGzxNk z{>#Ys2;|oqOfkA_{nGuK_(2o|*~!6mdA!@Nyq;8H24DR2%xM2MT=~!whK^te>=coeFF&3JtM{)+Khj+R{ z4J_E9Oqd@FU46=liDk7Pi-CM0jX_tu84C#jc(*47-j5e3IbJnK?{KJZ+guNJ1AL4r z@eo3qmLE?OybiyJhqmS+&NP}uVpcJtKCFa)@csHw?}>?Zb7D>mdZTv($OotDIAK6T z@NqUVs@W0iH-w#aoAV&)@{-Qq1S%g>_$-WtO~BO5_Pv-0uEx^-om z`O__53e+VXty9rKgR4l# zJCLG2@34&P@}l2K%lXfM$Y`QbouWo18!d5P3dwvWamh`k@MQyhwgsfPm#eDXafu`{ z8iS>%T9RWO>4^K!sJfWb5(YRkkG^rvxTggfFS}00a03Qw(76>fQZbJDrB{P&$*rKj zW7q}mn?KS}kp571LIhhnG9?DXt>*NjQ2>DJuF&(6|1 z;h1(%)6DF(Z*W#S(9Pd5(Zg6H5hCkkak|RBP<2bde%>kovl1a3KF1}A@RX@JQQK%c zlL$`LZf@=WkIp~S85;LK!IM^xyCrt2KBvUw?_;x7W!sDAT4M~{;Rc*-$lyoLHo`AE zLqz|^Tp%v31TM?BZ`lxK%lqHEqBtTIMvv{Ef(Re!l<=0AaTCmZ3R;<35wjz<%}>D? z1r5=)D~ybmRo00+RK@(Z;f^u*85eei4yui#5j-jB3Jc2=_F8{<4%anNQTm)re|+N^ zh;-KeCSq}}`rJPQF|Rx6jqGRvxS7-E@o0Cb2fyRp?vNkSky(fZHH;o>w`^&KZh9w5 zJ%QV-#qIF#e&nlt+5;M@MCnXLE1J-gl(&`WAGS1>j_QpY%+w{ z+U0w@{!%o`)Q`YK)FzV#!Ae>r$5=shJ9fm zw(4KH`>pN^8RjmG+!g2cg8&RqhK60sdnG2X2iI3;@~WGRUX0AZ4_72ZSLkJ!=Q&*< z37htVz95W}T9xwWKDXq6|XtkA5`6eMG2F;mrQD+m@Onn&D#FA`d(R9ZHWG z{isP*%Y*R)AO^n2egk0MlSU?)IWhQ#yB~nw1EDD-%NT4U2Er=<1Mu!3=w`mgf^BK+ zR~Z)Yu%!$JAApvaGX&bvKih{uy!i$p{kK=?S-}|}4uN#zBqgKd3lq)QEe0`P1||6N zP?)C%l^ZvI>^BUi*o~TZ8Y43JojVY@Y9Mv;@i5x!(+ok^9}Z*9gBfWE>cipZh~bvZ7zCDhKAm=m;r+>+{9}1aO7kd4zmpXqk#Gt4~?;SPt6ZY!ZpL8mTjm; z&NPg`$+^(ftZ~~ebVU)4M{>bZYPsYpU=25AFp-hQl!+h$SL8uUwZ>8J-zx|&=fNhj zdkd#Pv>)@Ksgd|sn4xHUr$C6IXtVLc6o@iyB%B#G$EolcxQ}2CBN?2sk7>%{3 zLz;OD7j4Furb9#1PD;)4><%9n+#Xxw$MN?15Vxi=8v_tdsJl=W25Pcg@bRYU12U0e%UK(?mOdPuKzQ;>K7 zCL&79P2S#=aKS??S`Q;38yjwbGe$Vf-9#ZPjll%BSNfy4Da2pokoVVa!Te?#SB>M8R-DMN8-A2F04>&A-DX(E^ zj@Z;JP0w_&xZ>I*sHH4!y3fTxyiuRd2oIUZw{fZlcDM$J-9UKkP=#& zoT&(h_b&OdxU+T1Ylm=?PAap^GtKM5^|`Ot?mWvmucIA@{vqBTGo7fZ<4k9Z=j%?J zNNC&W*Z85k4==j=;5i{}vAfcL;@!8w-<1~{oiUC(pm{UYF@Mj}euxR1p-HWWoMz3? zE>o+xNW;)YG6h$hwHac`Cwyx&G$)s)cr&zc;=m$$ZGnh(61f`9h;BR`qM7zP4cUat zDU0VVy5`Q99!^-`O<{mpTfpDFCY8*juYhu06h`eJG49#|A2_GN9S3L6RGhRGW&{=u z7=C&{N|8^WQ$Ax(`-~})|82i*g?SwNoVuMHqKEk2c8K+3HKLa;vV$6Z!0X$gzA2QL zti#Y9@KdSwg}y^ZuLH}4lx-Lf!pxGBn;bcC1aMFHQHA}Xf!u^uvTCbw{Z42NyRdjC z^sg_Y6~W7M05&VslRHeARa$dpdXb!xM<_VyT?%3C#HH`Tbmi%!rylTk4`UPtTMe!5 zxQnzp%n6g$()s@IE^@*i+RpEywLq(;O(C@PqsPjI0gE$<0j3#yzK{+V5Am%+=tiO1 zn}u+cJiDx)Alf~OsWbS9sR!ZX_o2Ota$+aTHsAxeVgc?iM{wVM=qK0gQ>A6$n*HR|e8@HS7$9Rk;hNpp4^ir|8}1(it+49>c}ow0rU{H zK1}op2#`A{jqh%@I97O$V7!#T^b_Q{G{My;V5GAg7U^}zS3ib%cVTV}>JYiyOvB~s z@Fk=|7hLxxeDwd{wMOWB62kGTqu^t1SJt-_=kCm*CoQ4}L3sNsXzbdVD|=C?-nUn% zt#c7%g1HAHb;S2iQTVVEUOfe|tO7fGhhp5<7boGfa9aH;HcIwMHb7V&6%r+QgL9+>|tQD}f+)*^s>0 z#O}a`B@iE1ol%m#NF>~j=fYUWSWp6;-1#Cnm34HzY(+I~Ka{`?MOtDj`jH~Zw45TZ zLLK)CMgo(sLWFw-gMhbYs|frLq0zRv_bR+=x4v#xX2xI-TZF;N>V!A1(+wV7p&u}p z-?eEAdDt#ac=09#2eL{PyN}Jt%(Ooqr9FHkdfb8!;U*rs1&u>Q+GknhA~ZkdB083W zUbmqEDSErx5Z0nQQx);t;*>v&RXolOoRyv1{-8}nCIcFeOKwAuSvr(~+ipWAlSbsv z*zVkhGfprC58s1m(^M*QwcWZ0t3blelwhZ|*M<|C-%Ba>HQA>q15 z(1M=De)|Y&`!kD5ZU70?{V_B!%_RyEw#3Jfq*UpygMY&}bl{r!4|(V3@r{2V4m#tJ zf8fQ6`-!}HoX7kbB)&3RjfQ!6YOv~y^+7d;v+~?0XPC*B2TFnGI+_w%X|jmd;XI|D z_U9r#OLBO`@Qlx6u~OmC5C2eVS;!Km{_inBw->pdK~Mb5QFT`@I_Yzt4zfi#skfAy z)|u6QDzU)ZW)v zo2LuC!!sKl5vRdz88c-t412k%XJDCajjQV7)M6a7lSi)UoT_k5Jd*P~*7RobbFd@X zHY0G0L0&4{EskW6AJW^JYQa;zAP@(6sSKZ~+^T%1eGX50sUTWH*Su6zJX14_Cda;u zUB^wK1tIUGtHhaiU{i0^EKtsU@*dKVKR4fj`QECYX(Nxv_O`eBT$$H#dM!@&Q(q_W zC@7>P?pi(Wi!_%}I&kwyE-OEyNuZ%7F7j7F=C@dYohjN7hKKxBk2>Y^DACRJ%%y5{ zQ^GOs{MnPnV6BHf=RhFl1gIfulWa10IY7PJ+PKGIQAN_13|4x96q!3EEzO#n%OaQ& zrLCpLmEPtE^B!0ppjd&w1ga?07DC)+^RA)lD37u=Mwn;ayDQ3MT1W z;kl2Hln9%Q=Q9?Egz5KjiZ`#SFAmCM@Z}qy*qDl&9P=?a?#Ew(RE*m@R8YvWJc&hJ zR2+u-C@))bFg+)= zEQvyNEfsItMVW)PXKJaBRg{<{p~eHFWy7;?Y_0hred!69UUENhWR$j@35fVuVzjHs$8gZI!kT8^x$*exi~775cRVb7Sc2{Q!5ys0g}^{VGP)GcILB17wBn zKW08rZiAN&dg2oq2pu&)f$fBM-5aOOv12+s!pvk z{fdhS7mqI4ddbTPAdZ8*r<9cd_J=Piv{;@<`34HE#g4&$_iyjcEUE(?-RbzvF#$ zB#vvN;$f|AMH`jplpq}zN<#A-5sr(lIA_f1Kg>zIir2732Nmh8b7@z=ksVaD@f4~R zqm-}l-kg5aQKv1NBx&7qsk~}- z2QK2Qt>E)X4SIPDJyl)vLgq1n-@)6u_f#{$yqpV?%HA}%;ZMEPeBXDOp0JlkcJ^bD z-doir!}xJ;^%Skezk8E{*dH`sV|)g)ncOS(2hE;1r;nNq*VxAi=6B-HsGs@3?5~rP zgUh~xBNwGWGn!G8wDdV!WNt&4RGQUSW9z)rV zvVcWfS27vI3jj-PdsBK#I~y zK=gIP-(NjY#X4_e@eMT`sp|vPK&T)C<5pLmd*5RY3^p--*>mqCxW}Si&G%IMEfk)a zmZ@IH+Cx}G5JLaDQB-`)rJV5Ca8<{o=#KBG?YH6T7yBt#jMyjm(@52jBI5z0RP8{a zT5dt?7`;ZRu#P+h6m#3blO)q2^Jrjjrwgef*Gz!?Wco2&<@;R2;49nPqf|d|zR&Zq zO&PLUJ6$_hFGyljmvY6z&K6sJ2DWLsxd?*PPN zayl*JFx1o4dV0RlV!Ucz^#N@O?s}e_Z9ittAQ0D&S96u0Nn%i#n4uP%{kbv#PiCm- z3Jf}fhgO4Yf*6G1u!*XTZzC^ChjW2E_lPiYz%n?R3mDYp>Zr2nXiVBcR)Zc$w7{@T z)rrqqrAqxq;@><+&K2%D#SAuN(^$UVB3VBF5N4$q#d+*ENyVu4UbuWHeRZ&Ml1d7Z zhSkleeKPBEw-~fSk1R!Y$`FCx?;|HH(bO>8sVwCJ9V8xCu~%{ykjPwxV**D!4h*WiW^ln{rO3ygAQl9CjQA9yqB#_+YE4DyeK@ zU!JO7@~dXL8c!pWm4$<*seu)b)5bfL)=Zqicsw;tb%oZ3+HAR|ys+bR^;<0u(upcZ zW>Sm%;La2gFpNe0xg73QmP9L(AE z1KmM1o~focm8*#uLZFZte`iu5ZuaEOAorjddd*hxShN#dVIg|XQdetsVYW|TFGAPZ zWCWIB(rh)V)^=8(I>bkA9cc}S7vRbTtMKF5s*Vr$QrpaE1}^U}9bulW(H!Lj_TX}7 z=EPt&jwn!rRcBF_c;n5%Uj^!Q7|*fZ&tkVY_SFV3ExC>U*Pt&JJV$G4qZeL23XSpG z=Tw331n!0yXYnC!@~3dYSTIjT(#zfT^T?b!%XZp`TyK8MaBsc}g?G^BdG$h|gnq>^ zb`o!g7jjDpsCxI{o-=rzbSoDPh5zk&wOIA2GKP-m`hu$I(~}$YV$hp`jB8(bUrzt~ zaJ&|h{_kb&O~wujRjPA;#+NY!;in79QTd!JpW($3ZgY821pqzW2wS8=d}L4+gJ|>? zCl<37(YTM`vPEk1{~FyOX2alv3Zr}ZB^uoz**|Qp7pseWV^wphs$&)rPsF69D(PwA z*q0UWFoUvP#h3z#=NWebJelVhr8P-)OT|;%cs#sRHF6(8?7w36rybCDrHZsgEK`>p ziRV8rtH@HGF}fNzcqUKrzw$IfZHzLTK^5-pxNHuC0tR366myTX;dohBF{V+}iwidQ zl`6u$nOr{`{yO*G#z02-A*ViKaD+!BPTR+v-Gigns$lg2UlaTDllyiN+J3HB&UgnY zWw*WscI&$uC%mcZG-yLhS3AOpVz3TyN-p@EGzp9gYl(=Tbi`lIgH7*v(;FYHQ=Uzv zUaAC%Upi<*cxW6k*S;oDX&a*V3=`i}A?5EGdf}+`>e(9H#0Z*e6;=@5TCZY!ikZ?g z42Ck{&oFv}iuW1D>ER4UFu0HK18tmBH>lMvpOHW*#E^u+Z>oB6!&tm>z3C|5J!_YF zaq+y^4P+%*z)W2BrkV~n&}F0Q*GXcqvZJCypd=jqmZ}+B_8LKRt^(x71}*L(xXIDs*g?sDSiceBesH9QSTKp4&#Di3xz>243|4vLzMj;H(09m_&%qnl=?t6v4h5ZPO}gz;G413o z{xpx`41@AR{&~t4`;^{zq~vJUsTtO36|C|F+k{m{*#8|R@xPnifMv(T2b1&a()4Sx1tcltWIBYlVQB!GHZ_rxH%_0HueQt>(eIv4M zw^{-5K0H&t4EzXGS~LM%%HSJbr}9|5YkjRImsZ~(h^rW!t=J&s-y862bB)2diVed4 zy+JrvF}P$jpeN|z77_{36RdrVv(ib{*Ni3m4cT)rnvZ3 zY`#Yg51+%+E@nzh(94WClgk)f!R>oUQD)-g)2b=@e4>Unn8$StZc+zw`C6u+?7!~< zS{3x+{|s|B&uDh|6P4-qJU3%-7ZdlY2JpO5w|XzRI}32yrz(oPl2<=f(O7ht%t^aX zDFC+s*X>iaeE#B*F68#o!^MWnC1XDOsk&HyHdo0Fud{ueJa7r>$cas2JhIeAW65VK zFhm5yVX(5NpY|i$9Q59&+JH0m*rx_JEMU4-B(s#u7?^!1F_&}Fsinqn{@$lXyRGC> z2HrSsKaFdpQTOqF)gycX*Hxj(pW|o@{4wePiDnh!x5b4A$croxSPjxzh(@Xj&vJx23tvKP?DaCJhrQqP_^$@3D)Z-R+ORU|I_ zLiy4Qt=GO#h2hmnYcr3JK{8G}u9~RLCc5%UvRyi^&M5Qq%x*q@d{VWl^&F>}oh()g z;LDm7HC>OMU#Y%u!#46O1z@~i5fiu_#}}zaW^s_W;_F4q3gd0+l-dh!JDCy#D<1or z4*NTe+3EI;8bHG9a$1xq{WJ-i^w13*Ps_TyZj^hTq4I(Q$_2Nb7NuKxhW=PWxt#YI z#Cn`jJ=Fpew)tK~cvP5%1ICJMJPf>W*ahWp`}2&-0N8|GH(JhyuiONl;xYyw zamU)w6Jd!D@EC10#-|*~|9+!H#hK-xvK3F1sLw*>ue-oR?KLt$b|1%XSr*}@%X9>} zhhJV+Kf-Z7$fXAx=$2v_R~h*SZ1SUOO5q>NkE%_WI2%`~CsmMW|Dy+<+b)x}O#YFU z-+jFBqspcS#eJ@*P@gA6GX08b<|FSmMU_PJx8t5GbmYH*H?F8gA*_tWt{L=4FEZ#; zo;-TpN=g1K^+#-eRds`NwwYJeCs3`p&a$`|d}qv~c8%uotg$@laIBP>zl@?AmtDV5 zh;}h1{Hnqd&hg%4GTu#YWbw<@gxp0uH;MRXaE4t1$>h_gm@!q}xv3Qb!yi6<7VH zeh-XgB7?ahg^_eYH)0Gf%#<*7&<OEJDpTW6Ddqb{`9e`X z9+WThG%sEy;`fLz6UtffIruX(`E*Qc&Z$-m_zR;sS|TSqGvLo_kRo&Ld#&3i3}z)kjL|DIK}VLHGX6+uf*l`tvr|2__d`L%0M0)Mscb+gO&{1$eB(a zly%{J9|i*%q%q*A-*u~)0j5ob-jGV!q%ap7VH;;V==A|A%8T(+8l?C9$_ zCA;xPPHkeq`<84X+9#a)l)*j*2N;O07P}~`UDnz;z}|nTT5g>w`b|3Tko%U6bSvAX zZnHZM09C=lnRmJLURf17E5`-?%^m4=;T?wx(9O0~IsT@+Lm~E#Lm5c4Ei*X|c7nUM RpIjaLyU@R_{T$CY|3BS8C(-}_ delta 23714 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 B-qQd8 diff --git a/inventory/views.py b/inventory/views.py index f7086697..64e19f86 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -328,7 +328,7 @@ class HomeView(TemplateView): return context class TestView(TemplateView): - template_name = "test.html" + template_name = "inventory/cars_list_api.html" class AccountingDashboard(LoginRequiredMixin, TemplateView): @@ -4384,4 +4384,6 @@ def apply_search_filters(queryset, query): for field in model._meta.get_fields(): if hasattr(field, 'attname') and field.get_internal_type() in ["CharField", "TextField", "EmailField"]: search_filters |= Q(**{f"{field.name}__icontains": query}) - return queryset.filter(search_filters).distinct() \ No newline at end of file + return queryset.filter(search_filters).distinct() + + diff --git a/templates/inventory/car_list_view.html b/templates/inventory/car_list_view.html index 92b7bca9..d2c2aa26 100644 --- a/templates/inventory/car_list_view.html +++ b/templates/inventory/car_list_view.html @@ -29,6 +29,7 @@
+
+ + +