From 38284eef1f54c1bcb09d7ea2d8b24addc3ac6fe6 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Sat, 14 Dec 2019 23:53:09 +0200 Subject: [PATCH] Add safe guards --- server/apimodels/__init__.py | 3 +++ server/service_repo/endpoint.py | 12 ++++++++++-- server/services/events.py | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/server/apimodels/__init__.py b/server/apimodels/__init__.py index cba2266..2406f7f 100644 --- a/server/apimodels/__init__.py +++ b/server/apimodels/__init__.py @@ -78,6 +78,9 @@ class DictField(fields.BaseField): if not self.value_types: return + if not value: + return + for item in value.values(): self.validate_single_value(item) diff --git a/server/service_repo/endpoint.py b/server/service_repo/endpoint.py index 79ca7aa..099c176 100644 --- a/server/service_repo/endpoint.py +++ b/server/service_repo/endpoint.py @@ -1,5 +1,6 @@ +from enum import Enum from typing import Callable, Sequence, Text - +from boltons.iterutils import remap from jsonmodels import models from jsonmodels.errors import FieldNotSupported @@ -87,7 +88,14 @@ class Endpoint(object): Provided data_model schema if available """ try: - return data_model.to_json_schema() + res = data_model.to_json_schema() + + def visit(path, key, value): + if isinstance(value, Enum): + value = str(value) + return key, value + + return remap(res, visit=visit) except (FieldNotSupported, TypeError): return str(data_model.__name__) diff --git a/server/services/events.py b/server/services/events.py index dc9133d..0f95a58 100644 --- a/server/services/events.py +++ b/server/services/events.py @@ -211,7 +211,7 @@ def vector_metrics_iter_histogram(call, company_id, req_model): @endpoint("events.get_task_events", required_fields=["task"]) def get_task_events(call, company_id, _): task_id = call.data["task"] - batch_size = call.data.get("batch_size") + batch_size = call.data.get("batch_size", 500) event_type = call.data.get("event_type") scroll_id = call.data.get("scroll_id") order = call.data.get("order") or "asc"