def config(self, request): if request.method == 'OPTIONS': request.app.fire('on_preflight', request, methods=('GET', 'PATCH')) return request.response user = self.model.get_instance(request).obj resource = 'applications:%s:config' % user.application_id.hex with self.model.session(request) as session: session.add(user) if request.method == 'GET': Resource(resource, 'read')(request) result = user.application.config or {} else: form_class = get_form_class(request, 'application-config') Resource(resource, 'update')(request) data, files = request.data_and_files() form = form_class(request, data=data, files=files) if form.is_valid(exclude_missing=True): application = user.application result = application.config if result is None: result = {} application.config = result session.add(application) for key, value in form.cleaned_data.items(): if not value: result.pop(key, None) else: result[key] = value flag_modified(application, 'config') else: result = form.tojson() return self.json_response(request, result)