views.py 970 B

1234567891011121314151617181920212223242526
  1. from django.views.generic import DetailView
  2. from django.contrib.auth.mixins import LoginRequiredMixin
  3. from django.views.decorators.http import require_POST
  4. from django.http import HttpResponseForbidden, HttpResponse
  5. from django.conf import settings
  6. from django.views.decorators.csrf import csrf_exempt
  7. from .models import Service
  8. from .utils import fastping_update
  9. class ServiceDetail(LoginRequiredMixin, DetailView):
  10. def get_queryset(self):
  11. adhesions = self.request.user.profile.adhesions.values_list('pk')
  12. return Service.objects.filter(adhesion__pk__in=adhesions).order_by('service_type')
  13. @csrf_exempt
  14. @require_POST
  15. def fastping(request):
  16. if request.POST.get('key', None) != settings.FASTPING_KEY:
  17. return HttpResponseForbidden('Invalid key.')
  18. if 'fastping' not in request.FILES:
  19. return HttpResponse(status=400) # Bad Request
  20. stats = fastping_update(request.FILES['fastping'])
  21. return HttpResponse(stats + '\n')