add create problem api

This commit is contained in:
virusdefender
2017-02-02 16:59:15 +08:00
parent ffc85e9587
commit 8ce6040a5b
12 changed files with 384 additions and 35 deletions

View File

@@ -1,14 +1,7 @@
import json
from django.utils import timezone
from rest_framework import serializers
class JSONField(serializers.Field):
def to_representation(self, value):
return json.loads(value)
class DateTimeTZField(serializers.DateTimeField):
def to_representation(self, value):
self.format = "%Y-%-m-%d %H:%M:%S %Z"

View File

@@ -1,6 +1,7 @@
import functools
import json
import logging
from collections import OrderedDict
from django.http import HttpResponse, QueryDict
from django.utils.decorators import method_decorator
@@ -80,12 +81,21 @@ class APIView(View):
def error(self, msg, err="error"):
return self.response({"error": err, "data": msg})
def _serializer_error_to_str(self, errors):
for k, v in errors.items():
if isinstance(v, list):
return k, v[0]
elif isinstance(v, OrderedDict):
for _k, _v in v.items():
return self._serializer_error_to_str({_k: _v})
def invalid_serializer(self, serializer):
for k, v in serializer.errors.items():
if k != "non_field_errors":
return self.error(err="invalid-" + k, msg=k + ": " + v[0])
else:
return self.error(err="invalid-field", msg=k[0])
print(serializer.errors)
k, v = self._serializer_error_to_str(serializer.errors)
if k != "non_field_errors":
return self.error(err="invalid-" + k, msg=k + ": " + v)
else:
return self.error(err="invalid-field", msg=v)
def server_error(self):
return self.error(err="server-error", msg="server error")