views.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import django_filters
  2. from django.conf import settings
  3. from django.http import JsonResponse
  4. from django.shortcuts import redirect, render
  5. from django.views.decorators.csrf import csrf_exempt
  6. from django.views.generic import ListView, TemplateView
  7. from .models import RapportoRicezione, TipoRadio, User
  8. # Create your views here.
  9. class ViewMap(TemplateView):
  10. template_name = "index.html"
  11. def get_context_data(self, **kwargs):
  12. ctx = super().get_context_data(**kwargs)
  13. ctx["tipiradio"] = TipoRadio.objects.all()
  14. return ctx
  15. def add_page(request):
  16. # TODO: replace with /api/tipiradio/get etc.
  17. return render(
  18. request,
  19. template_name="add.html",
  20. context=dict(tipiradio=TipoRadio.objects.all()),
  21. )
  22. class RapportiFilter(django_filters.FilterSet):
  23. class Meta:
  24. model = RapportoRicezione
  25. fields = ["tipo_radio__id"]
  26. def rapporti_get(request):
  27. pf = RapportiFilter(request.GET, queryset=RapportoRicezione.objects.all())
  28. return JsonResponse(dict(rapporti=[r.serialize() for r in pf.qs]))
  29. def rapporto_edit_redirect(request, pk):
  30. r = RapportoRicezione.objects.get(pk=pk) # request.GET["rid"])
  31. return redirect(r.edit_link)
  32. @csrf_exempt
  33. def rapporto_add(request):
  34. user = request.user
  35. if user.is_anonymous:
  36. if settings.RX_ADD_DEFAULT_USER:
  37. user = User.objects.get(pk=int(settings.RX_ADD_DEFAULT_USER))
  38. else:
  39. user = User.objects.filter().order_by("id").first()
  40. r = RapportoRicezione(
  41. author=user,
  42. lat=float(request.POST["lat"]),
  43. lng=float(request.POST["lng"]),
  44. comprensibile=int(request.POST["comprensibile"]),
  45. stabilita=int(request.POST["stabilita"]),
  46. indirizzo=request.POST.get("indirizzo", ""),
  47. tipo_radio=TipoRadio.objects.get(pk=request.POST["tiporadio"]),
  48. )
  49. r.save()
  50. return JsonResponse(r.serialize())
  51. @csrf_exempt
  52. def rapporto_delete(request):
  53. RapportoRicezione.objects.get(pk=request.POST["rid"]).delete()
  54. return JsonResponse(True, safe=False)