Browse Source

bug resuelto en la resolución del contexto de lenguaje

robert2206 8 years ago
parent
commit
14e4761641
2 changed files with 33 additions and 22 deletions
  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 jwt
-import json
+import simplejson as json
 import logging
 
 RESOURCES_MAP = None
@@ -34,11 +34,11 @@ class Auth(http.Controller):
 
             if not user:
                 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):
                 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 = {
                 'uid': user.id,
@@ -47,13 +47,13 @@ class Auth(http.Controller):
 
             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')
             return self.make_response({'token': encoded})
         except Exception, e:
             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
@@ -65,19 +65,19 @@ class Auth(http.Controller):
 
             if not user:
                 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'])
 
             if not self.get_crypt_context().verify(decoded['password'], user.password_crypt):
                 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')
-            return self.make_response({'token': 'valid'})
+            return self.make_response({ 'token': 'valid' })
         except Exception, e:
             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
@@ -126,11 +126,12 @@ class ApiManager(http.Controller):
                 auth = 'none',
                 cors = '*')
     def restify(self, **args):
+        print args
         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']):
-            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
 
@@ -147,14 +148,14 @@ class ApiManager(http.Controller):
             return self.http_delete(args)
 
         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
     # --------------------------------------------------------------------------
     def http_get(self, data):
         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']
         model, filters = self.resource_inflater(resource)
@@ -176,7 +177,7 @@ class ApiManager(http.Controller):
     # --------------------------------------------------------------------------
     def http_post(self, 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'])
         data = self.digest_data(data)
@@ -186,14 +187,14 @@ class ApiManager(http.Controller):
 
             return self.make_response(result.id)
         except Exception, e:
-            return self.make_response({'response': False})
+            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
+            return self.make_response({ 'error': 'cannot be process request' }, 400) # bad request
 
         uid = data['uid']
         model, filters = self.resource_inflater(data['resource'])
@@ -203,12 +204,12 @@ class ApiManager(http.Controller):
             result = request.env[model].sudo().browse(uid)
 
             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')
-            return self.make_response({'response': result.sudo().write(data)})
+            return self.make_response({ 'response': result.sudo().write(data) })
         except Exception, e:
-            return self.make_response({'response': False})
+            return self.make_response({ 'response': False })
 
     # --------------------------------------------------------------------------
     # Digest data for POST request
@@ -222,6 +223,15 @@ class ApiManager(http.Controller):
         if 'uid' in data:
             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
 
     # --------------------------------------------------------------------------
@@ -229,7 +239,7 @@ class ApiManager(http.Controller):
     # --------------------------------------------------------------------------
     def http_delete(self, 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']
         uid = data['uid']
@@ -238,10 +248,10 @@ class ApiManager(http.Controller):
         result = request.env[model].sudo().browse(uid)
 
         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')
-        return self.make_response({'response': result.sudo().unlink()})
+        return self.make_response({ 'response': result.sudo().unlink() })
 
     # --------------------------------------------------------------------------
     # Make JSON response
@@ -298,6 +308,7 @@ class ApiManager(http.Controller):
                 return False
 
             self.make_info_log('Token is valid')
+            request.context['lang'] = user.lang
             return True
         except Exception, e:
             self.make_error_log('Token is not valid')

BIN
controllers/http_handler.pyc