|
@ -1,5 +1,6 @@ |
|
|
from datetime import timedelta as td |
|
|
from datetime import timedelta as td |
|
|
|
|
|
|
|
|
|
|
|
from django.core.exceptions import FieldError |
|
|
from django.db.models import F |
|
|
from django.db.models import F |
|
|
from django.http import HttpResponse, HttpResponseBadRequest, JsonResponse |
|
|
from django.http import HttpResponse, HttpResponseBadRequest, JsonResponse |
|
|
from django.utils import timezone |
|
|
from django.utils import timezone |
|
@ -56,11 +57,23 @@ def checks(request): |
|
|
|
|
|
|
|
|
elif request.method == "POST": |
|
|
elif request.method == "POST": |
|
|
|
|
|
|
|
|
unique = bool(request.json.get("unique", False)) |
|
|
|
|
|
|
|
|
unique_fields = request.json.get("unique", []) |
|
|
name = str(request.json.get("name", "")) |
|
|
name = str(request.json.get("name", "")) |
|
|
|
|
|
|
|
|
if unique: |
|
|
|
|
|
existing_checks = Check.objects.filter(user=request.user, name=name) |
|
|
|
|
|
|
|
|
if len(unique_fields) > 0: |
|
|
|
|
|
existing_checks = Check.objects.filter(user=request.user) |
|
|
|
|
|
|
|
|
|
|
|
for unique_field in unique_fields: |
|
|
|
|
|
|
|
|
|
|
|
field_value = request.json.get(unique_field) |
|
|
|
|
|
|
|
|
|
|
|
if unique_field == "timeout" or unique_field == "grace": |
|
|
|
|
|
field_value = td(seconds=field_value) |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
existing_checks = existing_checks.filter(**{unique_field: field_value}) |
|
|
|
|
|
except FieldError: |
|
|
|
|
|
return HttpResponse(status=400) |
|
|
|
|
|
|
|
|
if existing_checks.count() > 0: |
|
|
if existing_checks.count() > 0: |
|
|
# There might be more than one check with the same name since name |
|
|
# There might be more than one check with the same name since name |
|
|