Browse Source

filtra davvero

boyska 3 years ago
parent
commit
388b25d032

+ 1 - 0
requirements.txt

@@ -2,3 +2,4 @@ Django==2.2
 gunicorn==20.0.4
 gunicorn==20.0.4
 pytz==2019.3
 pytz==2019.3
 sqlparse==0.3.1
 sqlparse==0.3.1
+django-filter==2.4.0

+ 1 - 1
rxmap/rxmapp/static/js/viewmap.js

@@ -7,7 +7,7 @@ function viewMap () {
   L.tileLayer(
   L.tileLayer(
     'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
     'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
   ).addTo(map)
   ).addTo(map)
-  $.getJSON('/api/rapporti/get', function (data) {
+  $.getJSON('/api/rapporti/get' + (new URL(document.URL).search), function (data) {
     for (var i in data.rapporti) {
     for (var i in data.rapporti) {
       var p = data.rapporti[i]
       var p = data.rapporti[i]
       var marker = new RapportoMarker([p.lat, p.lng], {
       var marker = new RapportoMarker([p.lat, p.lng], {

+ 2 - 2
rxmap/rxmapp/templates/index.html

@@ -16,8 +16,8 @@
     <form method="GET">
     <form method="GET">
 
 
         <div class="form-field-line">
         <div class="form-field-line">
-        <label for="tiporadio">Osservazione fatta con</label>
-        <select name="tiporadio" >
+        <label for="tipo_radio__id">Osservazione fatta con</label>
+        <select name="tipo_radio__id" >
             <option value="NA" disabled selected="selected">//</option>
             <option value="NA" disabled selected="selected">//</option>
             {% for tr in tipiradio %}
             {% for tr in tipiradio %}
                 <option value="{{tr.id}}"><strong>{{tr.nome}}</strong> - {{tr.descrizione|default:'' }}</option>
                 <option value="{{tr.id}}"><strong>{{tr.nome}}</strong> - {{tr.descrizione|default:'' }}</option>

+ 1 - 0
rxmap/rxmapp/urls.py

@@ -24,6 +24,7 @@ urlpatterns = [
     path("", views.ViewMap.as_view(), name="home"),
     path("", views.ViewMap.as_view(), name="home"),
     path("add", views.add_page, name="add"),
     path("add", views.add_page, name="add"),
     path("api/rapporti/get", views.rapporti_get),
     path("api/rapporti/get", views.rapporti_get),
+    # path("api/rapporti/get", views.RapportiGet.as_view()),
     path("api/rapporti/<int:pk>/edit", views.rapporto_edit_redirect),
     path("api/rapporti/<int:pk>/edit", views.rapporto_edit_redirect),
     path("api/rapporti/add", views.rapporto_add),
     path("api/rapporti/add", views.rapporto_add),
     # path("api/rapporti/delete", views.rapporto_delete),
     # path("api/rapporti/delete", views.rapporto_delete),

+ 10 - 4
rxmap/rxmapp/views.py

@@ -1,8 +1,9 @@
+import django_filters
 from django.conf import settings
 from django.conf import settings
 from django.http import JsonResponse
 from django.http import JsonResponse
 from django.shortcuts import redirect, render
 from django.shortcuts import redirect, render
 from django.views.decorators.csrf import csrf_exempt
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import TemplateView
+from django.views.generic import ListView, TemplateView
 
 
 from .models import RapportoRicezione, TipoRadio, User
 from .models import RapportoRicezione, TipoRadio, User
 
 
@@ -27,10 +28,15 @@ def add_page(request):
     )
     )
 
 
 
 
+class RapportiFilter(django_filters.FilterSet):
+    class Meta:
+        model = RapportoRicezione
+        fields = ["tipo_radio__id"]
+
+
 def rapporti_get(request):
 def rapporti_get(request):
-    return JsonResponse(
-        dict(rapporti=[r.serialize() for r in RapportoRicezione.objects.all()])
-    )
+    pf = RapportiFilter(request.GET, queryset=RapportoRicezione.objects.all())
+    return JsonResponse(dict(rapporti=[r.serialize() for r in pf.qs]))
 
 
 
 
 def rapporto_edit_redirect(request, pk):
 def rapporto_edit_redirect(request, pk):