Browse Source

ADD indirizzo

boyska 4 years ago
parent
commit
e1034d4c96

+ 8 - 7
rxmap/rxmapp/migrations/0003_auto_20200307_1922.py

@@ -5,17 +5,18 @@ from django.db import migrations
 
 class Migration(migrations.Migration):
 
-    dependencies = [
-        ('rxmapp', '0002_auto_20200307_1843'),
-    ]
+    dependencies = [("rxmapp", "0002_auto_20200307_1843")]
 
     operations = [
         migrations.AlterModelOptions(
-            name='rapportoricezione',
-            options={'verbose_name': 'rapporto ricezione', 'verbose_name_plural': 'rapporti ricezione'},
+            name="rapportoricezione",
+            options={
+                "verbose_name": "rapporto ricezione",
+                "verbose_name_plural": "rapporti ricezione",
+            },
         ),
         migrations.AlterModelOptions(
-            name='tiporadio',
-            options={'verbose_name': 'tipo radio', 'verbose_name_plural': 'tipi radio'},
+            name="tiporadio",
+            options={"verbose_name": "tipo radio", "verbose_name_plural": "tipi radio"},
         ),
     ]

+ 9 - 2
rxmap/rxmapp/models.py

@@ -39,13 +39,16 @@ class RapportoRicezione(models.Model):
 
     lat = models.FloatField()
     lng = models.FloatField()
+    indirizzo = models.CharField(default='', max_length=400,
+                                 help_text='Indirizzo indicativo. Usato solo per descrizione. '
+                                 'Per piazzare il marcatore vengono usate solo le coordinate')
 
     comprensibile = models.IntegerField()  # TODO: >= 0 <= 5
     stabilita = models.IntegerField()  # TODO: >= 0 <= 5
 
     def serialize(self):
         d = {k: v for k, v in self.__dict__.items() if not k.startswith("_")}
-        d['id'] = self.id
+        d["id"] = self.id
         d["colore"] = self.colore
         d["radius"] = self.radius
         d["explaination"] = self.explaination
@@ -74,7 +77,11 @@ class RapportoRicezione(models.Model):
 
     @property
     def edit_link(self):
-        return reverse('admin:rxmapp_rapportoricezione_change', kwargs=dict(object_id=self.id))
+        return reverse(
+            "admin:rxmapp_rapportoricezione_change", kwargs=dict(object_id=self.id)
+        )
 
     def __str__(self):
+        if self.indirizzo:
+            return self.indirizzo
         return "<Rapporto %s del %s>" % (self.pk, self.created)

+ 18 - 10
rxmap/rxmapp/static/js/addmap.js

@@ -34,7 +34,8 @@ function viewMap () {
       lat: $('#pointform input[name=lat]').val(),
       lng: $('#pointform input[name=lng]').val(),
       stabilita: $('#pointform select[name=stabilita]').val(),
-        tiporadio:$('#pointform select[name=tiporadio]').val(),
+      tiporadio: $('#pointform select[name=tiporadio]').val(),
+      indirizzo: $('#pointform input[name=indirizzo]').val(),
       comprensibile: $('#pointform select[name=comprensibile]').val()
     })
     $('#pointform').addClass('hidden')
@@ -42,15 +43,22 @@ function viewMap () {
   }
 
   function onMapClick (e) {
-    var stabilita = 3
-    if (map.getZoom() > 15) {
-      stabilita = 19 - map.getZoom()
-    }
-    $('#pointform input[name=lat]').val(e.latlng.lat)
-    $('#pointform input[name=lng]').val(e.latlng.lng)
-    $('#pointform select[name=stabilita]').val(stabilita)
-    $('#pointform').removeClass('hidden')
-    // TODO: aggiungi punto temporaneo, ma poi va rimosso
+      $('#pointform').addClass('hidden')
+      $.ajax('https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=' + e.latlng.lat + '&lon=' + e.latlng.lng,
+          {
+              timeout: 5000
+          }
+      ).then(function(nominatimData) {
+          var stabilita = 3
+          if (map.getZoom() > 15) {
+              stabilita = 19 - map.getZoom()
+          }
+          $('#pointform input[name=lat]').val(e.latlng.lat)
+          $('#pointform input[name=lng]').val(e.latlng.lng)
+          $('#pointform input[name=indirizzo]').val(nominatimData.display_name)
+          $('#pointform select[name=stabilita]').val(stabilita)
+          $('#pointform').removeClass('hidden')
+      })
   }
 
   map.on('click', onMapClick)

+ 1 - 0
rxmap/rxmapp/templates/add.html

@@ -42,6 +42,7 @@
 
     <input type="hidden" name="lat" />
     <input type="hidden" name="lng" />
+    <input type="hidden" name="indirizzo" />
     <button id="addPoint">Aggiungi</button>
 </form>
 {% endblock content %}

+ 2 - 1
rxmap/rxmapp/views.py

@@ -35,13 +35,14 @@ def rapporto_add(request):
         if settings.RX_ADD_DEFAULT_USER:
             user = User.objects.get(pk=int(settings.RX_ADD_DEFAULT_USER))
         else:
-            user = User.objects.filter().order_by('id').first()
+            user = User.objects.filter().order_by("id").first()
     r = RapportoRicezione(
         author=user,
         lat=float(request.POST["lat"]),
         lng=float(request.POST["lng"]),
         comprensibile=int(request.POST["comprensibile"]),
         stabilita=int(request.POST["stabilita"]),
+        indirizzo=request.POST.get('indirizzo', ''),
         tipo_radio=TipoRadio.objects.get(pk=request.POST["tiporadio"]),
     )
     r.save()