|
@@ -141,7 +141,7 @@ class ApiManager(http.Controller):
|
|
|
return self.http_post(args)
|
|
|
|
|
|
if http_verb == 'PUT' or http_verb == 'PATCH':
|
|
|
- return json.dumps({'verb': 'PUT OR PATCH'})
|
|
|
+ return self.http_put_or_patch(args)
|
|
|
|
|
|
if http_verb == 'DELETE':
|
|
|
return self.http_delete(args)
|
|
@@ -188,14 +188,41 @@ class ApiManager(http.Controller):
|
|
|
|
|
|
return self.make_response(result.id)
|
|
|
except Exception, e:
|
|
|
- return self.make_response(e)
|
|
|
+ return self.make_response({'response': False})
|
|
|
+
|
|
|
+ # --------------------------------------------------------------------------
|
|
|
+ # Manage PUT or PATCH request
|
|
|
+ # --------------------------------------------------------------------------
|
|
|
+ def http_put_or_patch(self, data):
|
|
|
+ if len(data) <= 2 or not 'uid' in data:
|
|
|
+ return self.make_response({'error': 'cannot be process request'}, 400) # bad request
|
|
|
+
|
|
|
+ uid = data['uid']
|
|
|
+ model, filters = self.resource_inflater(data['resource'])
|
|
|
+ data = self.digest_data(data)
|
|
|
+
|
|
|
+ try:
|
|
|
+ result = request.env[model].sudo().browse(uid)
|
|
|
+
|
|
|
+ if not result.exists():
|
|
|
+ return self.make_response({'error': 'cannot be updated'})
|
|
|
+
|
|
|
+ self.make_info_log('To update object')
|
|
|
+ return self.make_response({'response': result.sudo().write(data)})
|
|
|
+ except Exception, e:
|
|
|
+ return self.make_response({'response': False})
|
|
|
|
|
|
# --------------------------------------------------------------------------
|
|
|
# Digest data for POST request
|
|
|
# --------------------------------------------------------------------------
|
|
|
def digest_data(self, data):
|
|
|
data = dict(data)
|
|
|
- del data['resource']
|
|
|
+
|
|
|
+ if 'resource' in data:
|
|
|
+ del data['resource']
|
|
|
+
|
|
|
+ if 'uid' in data:
|
|
|
+ del data['uid']
|
|
|
|
|
|
return data
|
|
|
|