views.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. f = RapportiFilter()
  15. params = {}
  16. for field in f.get_filters():
  17. if field in self.request.GET:
  18. params[field] = self.request.GET[field]
  19. ctx["params"] = params
  20. return ctx
  21. def add_page(request):
  22. # TODO: replace with /api/tipiradio/get etc.
  23. return render(
  24. request,
  25. template_name="add.html",
  26. context=dict(tipiradio=TipoRadio.objects.all()),
  27. )
  28. class RapportiFilter(django_filters.FilterSet):
  29. class Meta:
  30. model = RapportoRicezione
  31. fields = {"tipo_radio__id": ["exact"], "created": ["gt", "lt"]}
  32. def rapporti_get(request):
  33. pf = RapportiFilter(request.GET, queryset=RapportoRicezione.objects.all())
  34. return JsonResponse(dict(rapporti=[r.serialize() for r in pf.qs]))
  35. def rapporto_edit_redirect(request, pk):
  36. r = RapportoRicezione.objects.get(pk=pk) # request.GET["rid"])
  37. return redirect(r.edit_link)
  38. @csrf_exempt
  39. def rapporto_add(request):
  40. user = request.user
  41. if user.is_anonymous:
  42. if settings.RX_ADD_DEFAULT_USER:
  43. user = User.objects.get(pk=int(settings.RX_ADD_DEFAULT_USER))
  44. else:
  45. user = User.objects.filter().order_by("id").first()
  46. r = RapportoRicezione(
  47. author=user,
  48. lat=float(request.POST["lat"]),
  49. lng=float(request.POST["lng"]),
  50. comprensibile=int(request.POST["comprensibile"]),
  51. stabilita=int(request.POST["stabilita"]),
  52. indirizzo=request.POST.get("indirizzo", ""),
  53. tipo_radio=TipoRadio.objects.get(pk=request.POST["tiporadio"]),
  54. )
  55. r.save()
  56. return JsonResponse(r.serialize())
  57. @csrf_exempt
  58. def rapporto_delete(request):
  59. RapportoRicezione.objects.get(pk=request.POST["rid"]).delete()
  60. return JsonResponse(True, safe=False)