diff -r c02818d7e29f -r 7e61baa047f0 svgui/pyjs/jsonrpc/django/jsonrpc.py --- a/svgui/pyjs/jsonrpc/django/jsonrpc.py Mon Aug 14 22:30:41 2017 +0300 +++ b/svgui/pyjs/jsonrpc/django/jsonrpc.py Mon Aug 14 23:27:15 2017 +0300 @@ -18,11 +18,13 @@ # dump jsonservice into urlpatterns: # (r'^service1/$', 'djangoapp.views.jsonservice'), + class JSONRPCService(JSONRPCServiceBase): def __call__(self, request, extra=None): return self.process(request.raw_post_data) + def jsonremote(service): """Make JSONRPCService a decorator so that you can write : @@ -64,6 +66,7 @@ from django import forms + def builderrors(form): d = {} for error in form.errors.keys(): @@ -91,6 +94,7 @@ 'IPAddressField': ['max_length', 'min_length'], } + def describe_field_errors(field): res = {} field_type = field.__class__.__name__ @@ -102,6 +106,7 @@ res['fields'] = map(describe_field, field.fields) return res + def describe_fields_errors(fields, field_names): res = {} if not field_names: @@ -111,6 +116,7 @@ res[name] = describe_field_errors(field) return res + def describe_field(field): res = {} field_type = field.__class__.__name__ @@ -121,6 +127,7 @@ res['fields'] = map(describe_field, field.fields) return res + def describe_fields(fields, field_names): res = {} if not field_names: @@ -130,6 +137,7 @@ res[name] = describe_field(field) return res + class FormProcessor(JSONRPCService): def __init__(self, forms, _formcls=None): @@ -206,6 +214,7 @@ import datetime from datetime import date + def dict_datetimeflatten(item): d = {} for k, v in item.items(): @@ -218,6 +227,7 @@ d[k] = v return d + def json_convert(l, fields=None): res = [] for item in serialize('python', l, fields=fields):