]> git.atlas4tour.it Git - pia_atlas.git/commitdiff
bug fix add poi
authorValeria Vitti <valeria.vitti@dyrecta.com>
Thu, 11 Jul 2024 10:23:59 +0000 (12:23 +0200)
committerValeria Vitti <valeria.vitti@dyrecta.com>
Thu, 11 Jul 2024 10:23:59 +0000 (12:23 +0200)
sistema/datatables.py
sistema/forms.py
sistema/models.py
sistema/templates/add_mod_poi.html
sistema/templates/poi_list.html
sistema/views.py

index b4c7db7d6fe1062882c740d95800d72e98124cd3..a484b8610ece667fc2e3fafabc305afbac29b765 100644 (file)
@@ -135,8 +135,8 @@ class PercorsoDatatables(BaseDatatableView):
 
 class PoiDatatables(BaseDatatableView):
     model = PointOfInterest
-    columns = ['id', 'nome', 'lat', 'long', 'mod', 'del']
-    order_columns = ['id', 'nome', 'lat', 'long', 'mod', 'del']
+    columns = ['id', 'icona', 'nome', 'lat', 'long', 'is_danger', 'mod', 'del']
+    order_columns = ['id', 'icona', 'nome', 'lat', 'long', 'is_danger', 'mod', 'del']
 
     def get_initial_queryset(self):
         return self.model.objects.filter(is_active=True)
@@ -150,6 +150,13 @@ class PoiDatatables(BaseDatatableView):
             return escape('{0}'.format(row.lat))
         if column == 'long':
             return escape('{0}'.format(row.long))
+        if column == 'icona':
+            return f'<img src="{MEDIA_URL}{row.icona}" class="text-center user-img mr-2" alt="" height="50px">'
+        if column == 'is_danger':
+            if row.is_danger:
+                return 'SI'
+            else:
+                return 'NO'
         if column == 'mod':
             return '<a class="btn btn-sm btn-secondary" href="/mod_poi/%s/" ><i class="fas fa-edit"></i></a>' % row.pk
         if column == 'del':
index d758490364a037c070b5eda2fed859a1def5f14c..73f369b472eec9de04eb36fb1c1c70a138f51901 100644 (file)
@@ -118,7 +118,7 @@ class GestisceForm(forms.ModelForm):
 
 class MultimediaForm(forms.ModelForm):
     media = forms.FileField(
-        label='Icona (se non caricata verrà inserita una di default)',
+        label='File - MAX 200 MB (se non caricato verrà inserito uno di default)',
         required=False,
         widget=forms.FileInput(attrs={'class': 'form-control', 'form': 'multimedia_form'})
     )
index 139887c61a0b2c76bee8bc5aa75a43293a215920..d4cee6ba159b4e582c6ebcf628b3b002c4ed35fc 100644 (file)
@@ -117,7 +117,7 @@ class FeedbackSerializer(serializers.ModelSerializer):
 class PoiSerializer(serializers.ModelSerializer):
     class Meta:
         model = PointOfInterest
-        fields = ('id', 'nome', 'lat', 'long', )
+        fields = ('id', 'nome', 'lat', 'long', 'icona','is_danger')
 
 
 class MultimediaSerializer(serializers.ModelSerializer):
index c75228194bd1b43043f6788f1e68599c270c3a3b..75d991962f4a157ceda90e20c392bcf43305b315 100644 (file)
                                 <h4 class="clr-config">Aggiungi un nuovo punto di interesse nel sistema</h4>
                             {% endif %}
                         </div>
-                        <form method="POST" id="poi_form" action="{% url 'sistema:poi' %}" enctype="multipart/form-data">{% csrf_token %}
+                        <form method="POST" id="poi_form" action="{% url 'sistema:poi' %}"
+                              enctype="multipart/form-data">{% csrf_token %}
                             <div class="card-body">
                                 {% if form.instance.pk %}
                                     <input type="hidden" name="mod" form="poi_form">
                                     <input type="hidden" name="pk" value="{{ form.instance.pk }}" form="poi_form">
+                                    <input type="hidden" id="id_link_icona" name="link_icona" value="{{ icona }}" form="poi_form">
                                 {% endif %}
                                 {{ form | crispy }}
                             </div>
@@ -82,7 +84,8 @@
                     <div class="card-header">
                         <h4 class="clr-config">Inserisci file multimediali per il punto di interesse</h4>
                     </div>
-                    <form method="POST" id="multimedia_form" action="{% url 'sistema:poi' %}" enctype="multipart/form-data">{% csrf_token %}
+                    <form method="POST" id="multimedia_form" action="{% url 'sistema:poi' %}"
+                          enctype="multipart/form-data">{% csrf_token %}
                         <div class="card-body">
                             {% if form.instance.pk %}
                                 <input type="hidden" name="add-multimedia" form="multimedia_form">
 
     <script>
 
+
         $(document).ready(function () {
+            var pk = '{{ form.instance.pk }}';
+            var icona = '{{ icona }}';
+
+            if (pk != '' && icona != '')
+                $("#div_id_icona").after('<p id="id_icona_presente">Icona presente: <a href="/media/{{ icona }}" class="a_link" target="_blank">{{ icona }}</a></p>');
+
+            $("#id_icona").change(function () {
+                $("#id_icona_presente").empty();
+            });
             $('#punti_dropdown').addClass('active');
             $('#punti_toggle').addClass('toggled');
             $('#add_lista').addClass('active');
                     ajax: {
                         "url": "{% url 'sistema:multimedia_datatables' %}",
                         "type": 'GET',
-                        "data": {'pk': {{ form.instance.pk }} },
+                        "data": {'pk': {{ form.instance.pk }}},
                     },
                     language: {
                         url: "//cdn.datatables.net/plug-ins/1.10.20/i18n/Italian.json"
             {% endif %}
         });
 
-        function DeleteMultimedia(pk){
-                Swal.fire({
-                    title: "Sei sicuro?",
-                    text: "Una volta eliminata non sarà più possibile accedere all'informazione!",
-                    icon: "warning",
-                    showCancelButton: true,
-                    confirmButtonColor: '#3085d6',
-                    cancelButtonColor: '#d33',
-                    confirmButtonText: 'Conferma',
-                    cancelButtonText: 'Annulla',
-                }).then((willDelete) => {
-                    if (willDelete.value) {
-                        $.ajax({
-                            type: 'GET',
-                            data: {
-                                'pk': pk,
-                                'method': 'del-multimedia',
-                            },
-                            url: '{% url 'sistema:poi' %}',
-                            success: function (response) {
-                                Swal.fire("Fatto!", response.response, "success")
-                                    .then((value) => {
-                                        location.reload();
-                                    });
-                            },
-                            error: () => {
-                                Swal.fire("Attenzione!", response.response, "error")
-                            }
-                        })
-                    } else if (
-                        willDelete.dismiss === Swal.DismissReason.cancel
-                    ) {
-                        Swal.fire(
-                            'Annullato',
-                            'Rimozione annullata.',
-                            'error'
-                        )
-                    }
-                });
-            }
+        function DeleteMultimedia(pk) {
+            Swal.fire({
+                title: "Sei sicuro?",
+                text: "Una volta eliminata non sarà più possibile accedere all'informazione!",
+                icon: "warning",
+                showCancelButton: true,
+                confirmButtonColor: '#3085d6',
+                cancelButtonColor: '#d33',
+                confirmButtonText: 'Conferma',
+                cancelButtonText: 'Annulla',
+            }).then((willDelete) => {
+                if (willDelete.value) {
+                    $.ajax({
+                        type: 'GET',
+                        data: {
+                            'pk': pk,
+                            'method': 'del-multimedia',
+                        },
+                        url: '{% url 'sistema:poi' %}',
+                        success: function (response) {
+                            Swal.fire("Fatto!", response.response, "success")
+                                .then((value) => {
+                                    location.reload();
+                                });
+                        },
+                        error: () => {
+                            Swal.fire("Attenzione!", response.response, "error")
+                        }
+                    })
+                } else if (
+                    willDelete.dismiss === Swal.DismissReason.cancel
+                ) {
+                    Swal.fire(
+                        'Annullato',
+                        'Rimozione annullata.',
+                        'error'
+                    )
+                }
+            });
+        }
 
     </script>
 
index faf5775c0420afd061be7cb81868ab9f12965149..6348a6a7277de4f113b7ecc42101bc626ec24040 100644 (file)
@@ -9,7 +9,9 @@
                 <div class="card-header justify-content-between">
                     <h4 class="clr-bolle">Lista punti di interesse</h4>
                     <a href="{% url 'sistema:poi' %}">
-                       <button class="btn btn-dark"><i class="fas fa-plus mr-2"></i>  Aggiungi una nuovo punto di interesse</button>
+                        <button class="btn btn-dark"><i class="fas fa-plus mr-2"></i> Aggiungi una nuovo punto di
+                            interesse
+                        </button>
                     </a>
                 </div>
 
                     <div class="row">
                         <div class="table-responsive">
                             <table id="poi-table"
-                                   class="table table-sm table-bordered table-striped dataTables_wrapper dt-bootstrap4 no-footer" style="width: 100% !important;">
+                                   class="table table-sm table-bordered table-striped dataTables_wrapper dt-bootstrap4 no-footer"
+                                   style="width: 100% !important;">
                                 <thead>
                                 <tr>
                                     <th>#</th>
+                                    <th>Icona</th>
                                     <th>Nome</th>
                                     <th>Latitudine</th>
                                     <th>Longitudine</th>
+                                    <th>Pericolo</th>
                                     <th></th>
                                     <th></th>
                                 </tr>
                     url: "//cdn.datatables.net/plug-ins/1.10.20/i18n/Italian.json"
                 },
                 columnDefs: [
-                        {"targets": 4, "orderable": false, "width": "5%"},
-                        {"targets": 5, "orderable": false, "width": "5%"},
+                    {"targets": 0, "orderable": false, "width": "3%"},
+                    {"targets": 1, "orderable": false, "width": "5%"},
+                    {"targets": 5, "orderable": false, "width": "5%"},
+                    {"targets": 6, "orderable": false, "width": "5%"},
+                    {"targets": 7, "orderable": false, "width": "5%"},
                 ],
                 "order": []
             });
         });
 
-        function DeletePoi(pk){
+        function DeletePoi(pk) {
             Swal.fire({
                 title: "Sei sicuro?",
                 text: "Una volta eliminata non sarà più possibile accedere all'informazione!",
index 436892ea42120598f054d6dbbfce4068658f2639..06d9af3ec7ae4f1ef101a86ebe4d86f73ca19b8b 100644 (file)
@@ -228,6 +228,7 @@ class PoiView(View):#PermissionRequiredMixin
         form = PoiForm(request.POST, instance=PointOfInterest.objects.get(pk=int(self.request.POST.get('pk'))))
         files = request.FILES.getlist('icona')
         is_danger = request.POST.get('is_danger') == 'on'
+        icona = request.POST.get('link_icona')
         if form.is_valid():
             form_save = form.save(commit=False)
             form_save.is_danger = is_danger
@@ -235,7 +236,8 @@ class PoiView(View):#PermissionRequiredMixin
                 for f in files:
                     form_save.icona = f
             else:
-                form_save.icona = os.path.join(MEDIA_ROOT, 'icon/default.png')
+                if not icona:
+                    form_save.icona = os.path.join(MEDIA_ROOT, 'icon/default.png')
             form_save.save()
 
             messages.add_message(request, messages.INFO, 'Punto di interesse aggiornata con successo.')
@@ -263,7 +265,15 @@ class PoiView(View):#PermissionRequiredMixin
             self.del_multimedia(request)
             return JsonResponse({'response': 'Punto di interesse eliminato con successo'}, status=status.HTTP_200_OK)
         elif 'pk' in kwargs:
-            return render(request, 'add_mod_poi.html', {'form': PoiForm(instance=PointOfInterest.objects.get(pk=int(self.kwargs['pk']))),
+            poi = PointOfInterest.objects.get(pk=int(self.kwargs['pk']))
+            form = PoiForm(instance=poi)
+            icona = poi.icona
+            if icona:
+                if 'media' in str(icona):
+                    icona = str(icona).split('media')[1]
+                else:
+                    icona = str(icona)
+            return render(request, 'add_mod_poi.html', {'form': form, 'icona': icona,
                                                         'form_multimedia': MultimediaForm()})
         else:
             return render(request, 'add_mod_poi.html', {'form': PoiForm(), 'form_multimedia': MultimediaForm()})