예제 #1
0
 def on_ext(self, request):
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         method = get_path_info(request.environ)
         data = request.get_data()
         if type(data) != str:
             data = to_unicode(data, 'utf-8')
         params = json.loads(data)
         task = self.get_task()
         try:
             data = None
             if self.under_maintenance:
                 status = common.UNDER_MAINTAINANCE
             elif task.on_ext_request:
                 status = common.RESPONSE
                 self._busy += 1
                 try:
                     data = task.on_ext_request(task, method, params)
                 finally:
                     self._busy -= 1
             else:
                 status = None
             r['result'] = {'status': status, 'data': data, 'version': task.version}
         except AbortException as e:
             traceback.print_exc()
             r['result'] = {'data': [None, error_message(e)]}
             r['error'] = error_message(e)
         except Exception as e:
             traceback.print_exc()
             #~ if common.SETTINGS['DEBUGGING']:
                 #~ raise
             r['result'] = {'data': [None, error_message(e)]}
             r['error'] = error_message(e)
         return self.create_post_response(request, r)
예제 #2
0
 def on_ext(self, request):
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         method = get_path_info(request.environ)
         data = request.get_data()
         if type(data) != str:
             data = to_unicode(data, 'utf-8')
         try:
             params = json.loads(data)
         except:
             params = None
         if self.task:
             try:
                 data = None
                 if self.under_maintenance:
                     status = common.UNDER_MAINTAINANCE
                 elif self.task.on_ext_request:
                     status = common.RESPONSE
                     self._busy += 1
                     try:
                         data = self.task.on_ext_request(self.task, method, params)
                     finally:
                         self._busy -= 1
                 else:
                     status = None
                 r['result'] = {'status': status, 'data': data, 'modification': self.MODIFICATION}
             except AbortException as e:
                 traceback.print_exc()
                 r['result'] = {'data': [None, error_message(e)]}
                 r['error'] = error_message(e)
             except Exception as e:
                 traceback.print_exc()
                 r['result'] = {'data': [None, error_message(e)]}
                 r['error'] = error_message(e)
         else:
             r['result'] = {'status': self.state, 'data': None, 'modification': None}
         return self.create_post_response(request, r)
예제 #3
0
파일: wsgi.py 프로젝트: jam-py/jam-py
 def on_ext(self, request):
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         method = get_path_info(request.environ)
         data = request.get_data()
         if type(data) != str:
             data = to_unicode(data, 'utf-8')
         try:
             params = json.loads(data)
         except:
             params = None
         if self.task:
             try:
                 data = None
                 if self.under_maintenance:
                     status = common.UNDER_MAINTAINANCE
                 elif self.task.on_ext_request:
                     status = common.RESPONSE
                     self._busy += 1
                     try:
                         data = self.task.on_ext_request(self.task, method, params)
                     finally:
                         self._busy -= 1
                 else:
                     status = None
                 r['result'] = {'status': status, 'data': data, 'version': self.task.version}
             except AbortException as e:
                 traceback.print_exc()
                 r['result'] = {'data': [None, error_message(e)]}
                 r['error'] = error_message(e)
             except Exception as e:
                 traceback.print_exc()
                 r['result'] = {'data': [None, error_message(e)]}
                 r['error'] = error_message(e)
         else:
             r['result'] = {'status': self.state, 'data': None, 'version': None}
         return self.create_post_response(request, r)
예제 #4
0
 def on_api(self, request):
     error = ''
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         try:
             data = request.get_data()
             if type(data) != str:
                 data = to_unicode(data, 'utf-8')
             method, task_id, item_id, params, modification, date = json.loads(data)
             if task_id == 0:
                 task = self.admin
             else:
                 task = self.task
                 if not task:
                     task = self.get_task()
                     if not task:
                         lang = self.admin.lang
                         result = {'status': None, 'data': {'error': lang['error'], \
                             'info': lang['info']}, 'modification': None}
                         result['status'] = self.state
                         if self.state == common.PROJECT_LOADING:
                             result['data']['project_loading'] = lang['project_loading']
                         elif self.state == common.PROJECT_NO_PROJECT:
                             result['data']['no_project'] = lang['no_project']
                         elif self.state == common.PROJECT_ERROR:
                             result['data']['project_error'] = lang['project_error']
                         r ['result'] = result
                         return self.create_post_response(request, r)
             if not task:
                 result = {'status': common.PROJECT_NO_PROJECT, 'data': None, 'modification': None}
             else:
                 self.check_build()
                 result = {'status': common.RESPONSE, 'data': None, 'modification': self.MODIFICATION}
                 if task_id and modification and modification != self.MODIFICATION:
                     result['status'] = common.PROJECT_MODIFIED
                 elif self.under_maintenance:
                     result['status'] = common.PROJECT_MAINTAINANCE
                 elif method == 'connect':
                     self.connect(request, task)
                     result['data'] = self.connect(request, task)
                 elif method == 'login':
                     result['data'] = self.login(request, task, params[0])
                 elif method == 'logout':
                     self.logout(request, task);
                     result['status'] = common.PROJECT_NOT_LOGGED
                     result['data'] = common.PROJECT_NOT_LOGGED
                 else:
                     if not self.check_session(request, task):
                         result['status'] = common.PROJECT_NOT_LOGGED
                         result['data'] = common.PROJECT_NOT_LOGGED
                     else:
                         item = task
                         if task and item_id:
                             item = task.item_by_ID(item_id)
                         self._busy += 1
                         try:
                             data = self.get_response(item, method, params)
                         finally:
                             self._busy -= 1
                         result['data'] = data
             r ['result'] = result
         except AbortException as e:
             traceback.print_exc()
             error = error_message(e)
             r['result'] = {'data': [None, error]}
             r['error'] = error
         except Exception as e:
             traceback.print_exc()
             error = error_message(e)
             if self.DEBUGGING and task_id != 0:
                 raise
             r['result'] = {'data': [None, error]}
             r['error'] = error
         response = self.create_post_response(request, r)
         request.save_session(response, self, task)
         return response
예제 #5
0
 def on_api(self, request):
     error = ''
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         try:
             data = request.get_data()
             if type(data) != str:
                 data = to_unicode(data, 'utf-8')
             method, task_id, item_id, params, date = json.loads(data)
             if task_id == 0:
                 task = self.admin
             else:
                 task = self.get_task()
             result = {'status': common.RESPONSE, 'data': None, 'version': task.version}
             if not task:
                 result['status'] = common.NO_PROJECT
             elif self.under_maintenance:
                 result['status'] = common.UNDER_MAINTAINANCE
             elif method == 'connect':
                 self.connect(request, task)
                 result['data'] = self.connect(request, task)
             elif method == 'login':
                 result['data'] = self.login(request, task, params[0], params[1])
             elif method == 'logout':
                 self.logout(request, task);
                 result['status'] = common.NOT_LOGGED
                 result['data'] = common.NOT_LOGGED
             else:
                 if not self.check_session(request, task):
                     result['status'] = common.NOT_LOGGED
                     result['data'] = common.NOT_LOGGED
                 else:
                     item = task
                     if task and item_id:
                         item = task.item_by_ID(item_id)
                     self._busy += 1
                     try:
                         data = None
                         started = datetime.datetime.now()
                         if task.on_before_request:
                             data = task.on_before_request(item, method, params)
                         if not data:
                             data = self.get_response(item, method, params)
                         if task.on_after_request:
                             task.on_after_request(item, method, params, datetime.datetime.now() - started)
                     finally:
                         self._busy -= 1
                     result['data'] = data
             r ['result'] = result
         except AbortException as e:
             traceback.print_exc()
             error = error_message(e)
             r['result'] = {'data': [None, error]}
             r['error'] = error
         except Exception as e:
             traceback.print_exc()
             error = error_message(e)
             if common.SETTINGS['DEBUGGING'] and task_id != 0:
                 raise
             r['result'] = {'data': [None, error]}
             r['error'] = error
         response = self.create_post_response(request, r)
         request.save_session(response, self, task)
         return response
예제 #6
0
파일: wsgi.py 프로젝트: jam-py/jam-py
 def on_api(self, request):
     error = ''
     if request.method == 'POST':
         r = {'result': None, 'error': None}
         try:
             data = request.get_data()
             if type(data) != str:
                 data = to_unicode(data, 'utf-8')
             method, task_id, item_id, params, date = json.loads(data)
             if task_id == 0:
                 task = self.admin
             else:
                 task = self.task
                 if not task:
                     task = self.get_task()
                     if not task:
                         lang = self.admin.lang
                         result = {'status': None, 'data': {'error': lang['error'], \
                             'info': lang['info']}, 'version': None}
                         result['status'] = self.state
                         if self.state == common.PROJECT_LOADING:
                             result['data']['project_loading'] = lang['project_loading']
                         elif self.state == common.PROJECT_NO_PROJECT:
                             result['data']['no_project'] = lang['no_project']
                         elif self.state == common.PROJECT_ERROR:
                             result['data']['project_error'] = lang['project_error']
                         r ['result'] = result
                         return self.create_post_response(request, r)
             result = {'status': common.RESPONSE, 'data': None, 'version': task.version}
             if not task:
                 result['status'] = common.PROJECT_NO_PROJECT
             elif self.under_maintenance:
                 result['status'] = common.PROJECT_MAINTAINANCE
             elif method == 'connect':
                 self.connect(request, task)
                 result['data'] = self.connect(request, task)
             elif method == 'login':
                 result['data'] = self.login(request, task, params[0])
             elif method == 'logout':
                 self.logout(request, task);
                 result['status'] = common.PROJECT_NOT_LOGGED
                 result['data'] = common.PROJECT_NOT_LOGGED
             else:
                 if not self.check_session(request, task):
                     result['status'] = common.PROJECT_NOT_LOGGED
                     result['data'] = common.PROJECT_NOT_LOGGED
                 else:
                     item = task
                     if task and item_id:
                         item = task.item_by_ID(item_id)
                     self._busy += 1
                     try:
                         data = None
                         started = datetime.datetime.now()
                         if task.on_before_request:
                             data = task.on_before_request(item, method, params)
                         if not data:
                             data = self.get_response(item, method, params)
                         if task.on_after_request:
                             task.on_after_request(item, method, params, datetime.datetime.now() - started)
                     finally:
                         self._busy -= 1
                     result['data'] = data
             r ['result'] = result
         except AbortException as e:
             traceback.print_exc()
             error = error_message(e)
             r['result'] = {'data': [None, error]}
             r['error'] = error
         except Exception as e:
             traceback.print_exc()
             error = error_message(e)
             if common.SETTINGS['DEBUGGING'] and task_id != 0:
                 raise
             r['result'] = {'data': [None, error]}
             r['error'] = error
         response = self.create_post_response(request, r)
         request.save_session(response, self, task)
         return response