Bladeren bron

bug resuelto en la resolución del contexto de lenguaje

robert2206 8 jaren geleden
bovenliggende
commit
14e4761641
2 gewijzigde bestanden met toevoegingen van 33 en 22 verwijderingen
  1. 33 22
      controllers/http_handler.py
  2. BIN
      controllers/http_handler.pyc

+ 33 - 22
controllers/http_handler.py

@@ -6,7 +6,7 @@ from werkzeug.wrappers import Response
 
 
 import os
 import os
 import jwt
 import jwt
-import json
+import simplejson as json
 import logging
 import logging
 
 
 RESOURCES_MAP = None
 RESOURCES_MAP = None
@@ -34,11 +34,11 @@ class Auth(http.Controller):
 
 
             if not user:
             if not user:
                 self.make_warn_log('Invalid user received')
                 self.make_warn_log('Invalid user received')
-                return self.make_response({'error': 'Invalid user'}, 400) # bad request
+                return self.make_response({ 'error': 'Invalid user' }, 400) # bad request
 
 
             if not self.get_crypt_context().verify(args['password'], user.password_crypt):
             if not self.get_crypt_context().verify(args['password'], user.password_crypt):
                 self.make_warn_log('invalid password received')
                 self.make_warn_log('invalid password received')
-                return self.make_response({'error': 'Invalid password'}, 400) # bad request
+                return self.make_response({ 'error': 'Invalid password' }, 400) # bad request
 
 
             payload = {
             payload = {
                 'uid': user.id,
                 'uid': user.id,
@@ -47,13 +47,13 @@ class Auth(http.Controller):
 
 
             encoded = jwt.encode(payload, JWT_SECRET_KEY, algorithm = 'HS256')
             encoded = jwt.encode(payload, JWT_SECRET_KEY, algorithm = 'HS256')
 
 
-            user.write({'jwt_token': encoded})
+            user.write({ 'jwt_token': encoded })
 
 
             self.make_info_log('To send token')
             self.make_info_log('To send token')
             return self.make_response({'token': encoded})
             return self.make_response({'token': encoded})
         except Exception, e:
         except Exception, e:
             self.make_error_log('Fields required to generate token')
             self.make_error_log('Fields required to generate token')
-            return self.make_response({'error': 'fields required'}, 400) # bad request
+            return self.make_response({ 'error': 'fields required' }, 400) # bad request
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Check JWT token auth
     # Check JWT token auth
@@ -65,19 +65,19 @@ class Auth(http.Controller):
 
 
             if not user:
             if not user:
                 self.make_warn_log('Invalid token received')
                 self.make_warn_log('Invalid token received')
-                return self.make_response({'error' : 'invalid token'}, 400) # bad request
+                return self.make_response({ 'error' : 'invalid token' }, 400) # bad request
 
 
             decoded = jwt.decode(args['token'], JWT_SECRET_KEY, algorithms = ['HS256'])
             decoded = jwt.decode(args['token'], JWT_SECRET_KEY, algorithms = ['HS256'])
 
 
             if not self.get_crypt_context().verify(decoded['password'], user.password_crypt):
             if not self.get_crypt_context().verify(decoded['password'], user.password_crypt):
                 self.make_warn_log('Invalid token received')
                 self.make_warn_log('Invalid token received')
-                return self.make_response({'error' : 'invalid token'}, 400) # bad request
+                return self.make_response({ 'error' : 'invalid token' }, 400) # bad request
 
 
             self.make_info_log('Token received is valid')
             self.make_info_log('Token received is valid')
-            return self.make_response({'token': 'valid'})
+            return self.make_response({ 'token': 'valid' })
         except Exception, e:
         except Exception, e:
             self.make_error_log('Token not received')
             self.make_error_log('Token not received')
-            return self.make_response({'error': 'token required'}, 400) # bad request
+            return self.make_response({ 'error': 'token required' }, 400) # bad request
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Get context for encryption
     # Get context for encryption
@@ -126,11 +126,12 @@ class ApiManager(http.Controller):
                 auth = 'none',
                 auth = 'none',
                 cors = '*')
                 cors = '*')
     def restify(self, **args):
     def restify(self, **args):
+        print args
         if not self.valid_token():
         if not self.valid_token():
-            return self.make_response({'error': 'unauthorized resource'}, 401) # access denied
+            return self.make_response({ 'error': 'unauthorized resource' }, 401) # access denied
 
 
         if not self.resource_exists(args['resource']):
         if not self.resource_exists(args['resource']):
-            return self.make_response({'error': 'resource not available'}, 404) # not found
+            return self.make_response({ 'error': 'resource not available' }, 404) # not found
 
 
         http_verb = request.httprequest.method
         http_verb = request.httprequest.method
 
 
@@ -147,14 +148,14 @@ class ApiManager(http.Controller):
             return self.http_delete(args)
             return self.http_delete(args)
 
 
         self.make_warn_log('Request method not allowed')
         self.make_warn_log('Request method not allowed')
-        return self.make_response({'error': 'method not allowed'}, 405) # method not allowed
+        return self.make_response({ 'error': 'method not allowed' }, 405) # method not allowed
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Manage GET request
     # Manage GET request
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     def http_get(self, data):
     def http_get(self, data):
         if len(data) > 2:
         if len(data) > 2:
-            return self.make_response({'error': 'cannot be process request'}, 400) # bad request
+            return self.make_response({ 'error': 'cannot be process request' }, 400) # bad request
 
 
         resource = data['resource']
         resource = data['resource']
         model, filters = self.resource_inflater(resource)
         model, filters = self.resource_inflater(resource)
@@ -176,7 +177,7 @@ class ApiManager(http.Controller):
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     def http_post(self, data):
     def http_post(self, data):
         if len(data) <= 1 or 'uid' in data:
         if len(data) <= 1 or 'uid' in data:
-            return self.make_response({'error': 'cannot be process request'}, 400) # bad request
+            return self.make_response({ 'error': 'cannot be process request' }, 400) # bad request
 
 
         model, filters = self.resource_inflater(data['resource'])
         model, filters = self.resource_inflater(data['resource'])
         data = self.digest_data(data)
         data = self.digest_data(data)
@@ -186,14 +187,14 @@ class ApiManager(http.Controller):
 
 
             return self.make_response(result.id)
             return self.make_response(result.id)
         except Exception, e:
         except Exception, e:
-            return self.make_response({'response': False})
+            return self.make_response({' response': False })
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Manage PUT or PATCH request
     # Manage PUT or PATCH request
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     def http_put_or_patch(self, data):
     def http_put_or_patch(self, data):
         if len(data) <= 2 or not 'uid' in data:
         if len(data) <= 2 or not 'uid' in data:
-            return self.make_response({'error': 'cannot be process request'}, 400) # bad request
+            return self.make_response({ 'error': 'cannot be process request' }, 400) # bad request
 
 
         uid = data['uid']
         uid = data['uid']
         model, filters = self.resource_inflater(data['resource'])
         model, filters = self.resource_inflater(data['resource'])
@@ -203,12 +204,12 @@ class ApiManager(http.Controller):
             result = request.env[model].sudo().browse(uid)
             result = request.env[model].sudo().browse(uid)
 
 
             if not result.exists():
             if not result.exists():
-                return self.make_response({'error': 'cannot be updated'})
+                return self.make_response({ 'error': 'cannot be updated' })
 
 
             self.make_info_log('To update object')
             self.make_info_log('To update object')
-            return self.make_response({'response': result.sudo().write(data)})
+            return self.make_response({ 'response': result.sudo().write(data) })
         except Exception, e:
         except Exception, e:
-            return self.make_response({'response': False})
+            return self.make_response({ 'response': False })
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Digest data for POST request
     # Digest data for POST request
@@ -222,6 +223,15 @@ class ApiManager(http.Controller):
         if 'uid' in data:
         if 'uid' in data:
             del data['uid']
             del data['uid']
 
 
+        if 'remote_id' in data:
+            del data['remote_id']
+
+        for key in data:
+            try:
+                data[key] = json.loads(data[key])
+            except Exception, e:
+                continue;
+
         return data
         return data
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
@@ -229,7 +239,7 @@ class ApiManager(http.Controller):
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     def http_delete(self, data):
     def http_delete(self, data):
         if len(data) > 2 or not 'uid' in data:
         if len(data) > 2 or not 'uid' in data:
-            return self.make_response({'error': 'cannot be process request'}, 400) # bad request
+            return self.make_response({ 'error': 'cannot be process request' }, 400) # bad request
 
 
         resource = data['resource']
         resource = data['resource']
         uid = data['uid']
         uid = data['uid']
@@ -238,10 +248,10 @@ class ApiManager(http.Controller):
         result = request.env[model].sudo().browse(uid)
         result = request.env[model].sudo().browse(uid)
 
 
         if not result.exists():
         if not result.exists():
-            return self.make_response({'error': 'cannot be deleted'})
+            return self.make_response({ 'error': 'cannot be deleted' })
 
 
         self.make_info_log('To delete object')
         self.make_info_log('To delete object')
-        return self.make_response({'response': result.sudo().unlink()})
+        return self.make_response({ 'response': result.sudo().unlink() })
 
 
     # --------------------------------------------------------------------------
     # --------------------------------------------------------------------------
     # Make JSON response
     # Make JSON response
@@ -298,6 +308,7 @@ class ApiManager(http.Controller):
                 return False
                 return False
 
 
             self.make_info_log('Token is valid')
             self.make_info_log('Token is valid')
+            request.context['lang'] = user.lang
             return True
             return True
         except Exception, e:
         except Exception, e:
             self.make_error_log('Token is not valid')
             self.make_error_log('Token is not valid')

BIN
controllers/http_handler.pyc