<h4 class="clr-config">Percorsi che puoi acquistare</h4>
</div>
<div class="card-body">
- <div class="row">
+ <div class="row" id="available-routes">
{% for percorso in list_percorsi %}
- <div class="card" style="width: 18rem;">
+ <div class="card p-3 route__filter" style="width: 18rem;">
- <img class="card-img-top" src="{% static 'assets/img/logo.png' %}">
+ {% if percorso.icona %}
+ <img class="card-img-top" src="/media/{{ percorso.icona }}">
+ {% else %}
+ <img class="card-img-top" src="{% static 'assets/img/logo.png' %}">
+ {% endif %}
<div class="card-body">
- <h5 class="card-title">{{ percorso.nome}}</h5>
- <p class="card-text">{{ percorso.descrizione }}</p>
+ <h5 class="card-title route__text">{{ percorso.nome}}</h5>
+ <p class="card-text route__text">{{ percorso.descrizione }}</p>
</div>
- <div class="card-footer">
+ <div class="card-footer p-3">
<div class="d-flex justify-content-between">
<h4>{{ percorso.prezzo|floatformat:2 }} €</h4>
- <a href="#" class="btn btn-success">Compralo subito</a>
+ <a href="{% url 'pagamenti:checkout' percorso.pk %}" class="btn btn-success">Acquista ora</a>
</div>
</div>
- <a href="{% url 'sistema:percorso_info' percorso.pk %}" class="stretched-link"></a>
+ <a href="{% url 'sistema:percorso_info' percorso.pk %}" class="btn btn-warning rounded-4">Dettaglio percorso</a>
</div>
+ {% empty %}
+ <p>Non ci sono percorsi disponibili per l'acquisto.</p>
{% endfor %}
</div>
</div>
from sistema.datatables import LocalitaDatatables, MultimediaDatatables, TipoMultimediaDatatables, PercorsoDatatables, \
PoiDatatables, FeedbackDatatables, GestisceLocalitaDatatables
from sistema.views import Home, LocalitaListView, MultimediaListView, PuntiInteresseListView, \
- TipologiaMultimediaListView, PercorsiListView, LocalitaView, TipoMultimediaView, PoiView, PercorsoView, \
- FeedbackView, PercorsoInfo, QRCodeView
- TipologiaMultimediaListView, PercorsiListView, TuoiPercorsiListView, LocalitaView, TipoMultimediaView, PoiView, PercorsoView, FeedbackView, PercorsoInfo
++ TipologiaMultimediaListView, PercorsiListView, TuoiPercorsiListView, LocalitaView, TipoMultimediaView, PoiView, PercorsoView, FeedbackView, PercorsoInfo, QRCodeView
urlpatterns = [
path('', Home.as_view(), name='home'),
from django.views.generic import TemplateView
from rest_framework import status
-from sistema.forms import LocalitaForm, TipoMultimediaForm, PoiForm, PercorsoForm, MultimediaForm
+ from pagamenti.views import CheckoutView, GetPayPalToken
- from sistema.models import Localita, TipologiaMultimedia, PointOfInterest, Percorso, Tappa, TappaSerializer, Multimedia, \
+from sistema.forms import LocalitaForm, TipoMultimediaForm, PoiForm, PercorsoForm, MultimediaForm, IconaPercorsoForm
+ from sistema.models import Localita, TipologiaMultimedia, Pagamenti, PointOfInterest, Percorso, Tappa, TappaSerializer, Multimedia, \
Feedback, FeedbackSerializer
from socoin_atlas import settings
from socoin_atlas.settings import MEDIA_ROOT
class PercorsiListView(View):
def get(self, request):
if request.session['roles'] == settings.CLIENTI_GROUPS:
- list_percorsi = Percorso.objects.filter(is_active=True)
- return render(request, 'percorsi_cliente_home.html', {'list_percorsi': list_percorsi})
+ # Ottieni gli ID dei percorsi già pagati
+ percorsi_pagati_id = Pagamenti.objects.filter(user=request.user).values_list('percorso_id', flat=True)
+
+ # Ottieni i percorsi pagati
+ list_pagati = Percorso.objects.filter(id__in=percorsi_pagati_id)
+
+ # Ottieni i percorsi disponibili (non pagati)
+ list_percorsi = Percorso.objects.exclude(id__in=percorsi_pagati_id)
+
+ return render(request, 'percorsi_cliente_home.html', {
+ 'list_pagati': list_pagati,
+ 'list_percorsi': list_percorsi,
+ })
else:
- return render(request, 'percorsi_list.html', {'form': form})
+ form = IconaPercorsoForm()
- return render(request, 'percorsi_list.html', {'percorsi': percorsi_disponibili})
+ percorsi_disponibili = Percorso.objects.all()
++ return render(request, 'percorsi_list.html', {'percorsi': percorsi_disponibili, 'form': form})
+
+
+ class TuoiPercorsiListView(View):
+ def get(self, request):
+ if request.session['roles'] == settings.CLIENTI_GROUPS:
+ user_id = request.user.id
+ pagamenti_utente = Pagamenti.objects.filter(user_id=user_id)
+ id_percorsi_pagati = pagamenti_utente.values_list('percorso_id', flat=True)
+ list_percorsi_pagati = Percorso.objects.filter(id__in=id_percorsi_pagati, is_active=True)
+ return render(request, 'tuoi_percorsi_cliente.html', {'list_percorsi_pagati': list_percorsi_pagati})
+ else:
+ return render(request, 'percorsi_cliente_home.html', {})
class Home(CustomLoginRequiredMixin, View): # CustomLoginRequiredMixin