From 0a39cc0c4b383ed4407b0225df881e01965fb551 Mon Sep 17 00:00:00 2001 From: Valeria Vitti Date: Thu, 11 Jul 2024 12:23:59 +0200 Subject: [PATCH] bug fix add poi --- sistema/datatables.py | 11 +++- sistema/forms.py | 2 +- sistema/models.py | 2 +- sistema/templates/add_mod_poi.html | 99 +++++++++++++++++------------- sistema/templates/poi_list.html | 18 ++++-- sistema/views.py | 14 ++++- 6 files changed, 92 insertions(+), 54 deletions(-) diff --git a/sistema/datatables.py b/sistema/datatables.py index b4c7db7..a484b86 100644 --- a/sistema/datatables.py +++ b/sistema/datatables.py @@ -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'' + if column == 'is_danger': + if row.is_danger: + return 'SI' + else: + return 'NO' if column == 'mod': return '' % row.pk if column == 'del': diff --git a/sistema/forms.py b/sistema/forms.py index d758490..73f369b 100644 --- a/sistema/forms.py +++ b/sistema/forms.py @@ -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'}) ) diff --git a/sistema/models.py b/sistema/models.py index 139887c..d4cee6b 100644 --- a/sistema/models.py +++ b/sistema/models.py @@ -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): diff --git a/sistema/templates/add_mod_poi.html b/sistema/templates/add_mod_poi.html index c752281..75d9919 100644 --- a/sistema/templates/add_mod_poi.html +++ b/sistema/templates/add_mod_poi.html @@ -31,11 +31,13 @@

Aggiungi un nuovo punto di interesse nel sistema

{% endif %} -
{% csrf_token %} + {% csrf_token %}
{% if form.instance.pk %} + {% endif %} {{ form | crispy }}
@@ -82,7 +84,8 @@

Inserisci file multimediali per il punto di interesse

- {% csrf_token %} + {% csrf_token %}
{% if form.instance.pk %} @@ -106,7 +109,17 @@ diff --git a/sistema/templates/poi_list.html b/sistema/templates/poi_list.html index faf5775..6348a6a 100644 --- a/sistema/templates/poi_list.html +++ b/sistema/templates/poi_list.html @@ -9,7 +9,9 @@ @@ -17,13 +19,16 @@
+ class="table table-sm table-bordered table-striped dataTables_wrapper dt-bootstrap4 no-footer" + style="width: 100% !important;"> + + @@ -56,14 +61,17 @@ 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!", diff --git a/sistema/views.py b/sistema/views.py index 436892e..06d9af3 100644 --- a/sistema/views.py +++ b/sistema/views.py @@ -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()}) -- 2.43.0