error = False
data = []
- id_percorso = request.data['id_percorso']
+ id_percorso = request.query_params['id_percorso']
if id_percorso:
error = False
data = []
- id_poi = request.data['id_poi']
+ id_poi = request.query_params['id_poi']
if id_poi:
def get_initial_queryset(self):
poi = self.request.GET.get('pk')
if poi:
- return self.model.objects.filter(pk=int(poi), is_active=True)
+ return self.model.objects.filter(poi=int(poi), is_active=True)
return None
def render_column(self, row, column):
if column == 'descrizione':
return escape('{0}'.format(row.descrizione))
if column == 'media':
- return f'<a href=" {MEDIA_URL} {row.media} " target="_blank">vedi</a>'
+ return f'<a href="{MEDIA_URL}{row.media}" target="_blank">vedi</a>'
if column == 'del':
return '<button class="btn btn-sm btn-danger" onclick="DeleteMultimedia(%s)"><i class="fas fa-trash"></i></button>' % row.pk
else:
-
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Layout, Field, Submit
from django.contrib.auth.forms import *
from sistema.models import Localita, TipologiaMultimedia, Gestisce, PointOfInterest, Percorso, Multimedia
from socoin_atlas.settings import MEDIA_URL
required=False,
widget=forms.CheckboxInput(attrs={'class': 'form-control'})
)
+ icona = forms.FileField(label='Icona', widget=forms.FileInput(
+ attrs={'class': 'form-control', 'form': 'poi_form'}), )
+ is_danger = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class': 'form-check-input'}), label='Punto di pericolo')
class Meta:
model = PointOfInterest
def __init__(self, *args, **kwargs):
super(PoiForm, self).__init__(*args, **kwargs)
self.fields['icona'].required = False
- for f in self.fields:
- self.fields[f].widget.attrs.update({'class': 'form-control'})
- def save(self, commit=True):
- poi = super().save(commit=False)
- if commit:
- if not self.cleaned_data['media']:
- poi.media = MEDIA_URL + 'icon/default.png'
-
- poi.save()
- return poi
+ for f in self.fields:
+ if self.fields[f].widget.input_type != 'checkbox':
+ self.fields[f].widget.attrs.update({'class': ' form-control'})
+
+
+ # def save(self, commit=True):
+ # poi = super().save(commit=False)
+ # if commit:
+ # if not self.cleaned_data['icona']:
+ # poi.media = MEDIA_URL + 'icon/default.png'
+ #
+ # poi.save()
+ # return poi
class PercorsoForm(forms.ModelForm):
from django.contrib.auth.models import User
from django.utils import timezone
from rest_framework import serializers
+from rest_framework.serializers import SlugRelatedField
+
from socoin_atlas.settings import MEDIA_URL
class MultimediaSerializer(serializers.ModelSerializer):
+ tipologia = SlugRelatedField(
+ read_only=True,
+ slug_field='nome'
+ )
class Meta:
model = Multimedia
fields = ('id', 'nome', 'tipologia', 'media', 'nome', 'descrizione', 'testo')
\ No newline at end of file
<h4 class="clr-config">Aggiungi una nuovo punto di interesse nel sistema</h4>
{% endif %}
</div>
- <form method="POST" id="poi_form" action="{% url 'sistema:poi' %}">{% 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">
<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' %}">{% 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">
from sistema.models import Localita, TipologiaMultimedia, PointOfInterest, Percorso, Tappa, TappaSerializer, Multimedia, \
Feedback, FeedbackSerializer
from socoin_atlas import settings
+from socoin_atlas.settings import MEDIA_ROOT
from utenti.mixins import CustomLoginRequiredMixin
'''
bisogna controllare il salvataggio dei media nel form multimedia
'''
- form = PoiForm(request.POST)
+ form = PoiForm(request.POST, request.FILES)
+ files = request.FILES.getlist('icona')
+ is_danger = request.POST.get('is_danger') == 'on'
if form.is_valid():
- form.save()
+ form_save = form.save(commit=False)
+ form_save.is_danger = is_danger
+ if files:
+ for f in files:
+ form_save.icona = f
+ else:
+ form_save.icona = os.path.join(MEDIA_ROOT, 'icon/default.png')
+ form_save.save()
messages.add_message(request, messages.INFO, 'Nuova punto di interesse inserito con successo.')
else:
messages.add_message(request, messages.ERROR, 'Errore nell\'inserimento del punto di interesse. Controlla il form.')
def add_multimedia(self, request):
- multimedia_form = MultimediaForm(request.POST)
+ multimedia_form = MultimediaForm(request.POST, request.FILES)
+ files = request.FILES.getlist('media')
if multimedia_form.is_valid():
multimedia = multimedia_form.save(commit=False)
multimedia.poi = PointOfInterest.objects.get(pk=int(self.request.POST.get('pk_multimedia')))
+ if files:
+ for f in files:
+ multimedia.media = f
+ else:
+ multimedia.media = os.path.join(MEDIA_ROOT, 'icon/default.png')
multimedia.save()
def mod_poi(self, request):
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'
if form.is_valid():
- form.save()
+ form_save = form.save(commit=False)
+ form_save.is_danger = is_danger
+ if files:
+ for f in files:
+ form_save.icona = f
+ else:
+ 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.')
else: