@handler.authenticated()
  @handler.asynchronous(datastore=True, obj_store=True)
  # TODO(marc): use AdminHandler for service and require permissions
  def post(self, method_name):
    def _OnSuccess(method, start_time, response_dict):
      validictory.validate(response_dict, method.response)
      self.set_status(200)
      self.set_header('Content-Type', 'application/json; charset=UTF-8')
      self.write(response_dict)  # tornado automatically serializes json

      request_time = time.time() - start_time
      logging.debug('serviced %s request in %.4fs: %s' %
                    (method_name, request_time, response_dict))
      self.finish()

    def _OnException(type, value, tb):
      status, message = www_util.HTTPInfoFromException(value)
      self.set_status(status)
      if status == 500:
        logging.error('failure processing %s:\n%s' % (method_name, self.request.body),
                      exc_info=(type, value, tb))

      error_dict = {'error': {'method': method_name,
                              'message': '%s %s' % (type, value)}}
      validictory.validate(error_dict, json_schema.ERROR_RESPONSE)
      self.set_header('Content-Type', 'application/json; charset=UTF-8')
      self.write(error_dict)
      self.finish()

    start_time = time.time()

    # Check service method; (501: Not Implemented).
    if not AdminServiceHandler.SERVICE_MAP.has_key(method_name):
      self.send_error(status_code=501)
      return

    # Verify application/json; (415: Unsupported Media Type).
    # TODO(ben): Refactor BaseHandler so we can use _LoadJSONRequest here.
    content_type = self.request.headers['Content-Type']
    if not content_type.startswith('application/json'):
      self.send_error(status_code=415)
      return

    method = AdminServiceHandler.SERVICE_MAP[method_name]
    with util.MonoBarrier(partial(_OnSuccess, method, start_time),
                          on_exception=_OnException) as b:
      request_dict = json.loads(self.request.body)
      validictory.validate(request_dict, method.request)
      method.handler(self._client, self._obj_store, self.get_current_user(),
                     request_dict, b.Callback())
Returns class meta
dataset/ETHPy150Open viewfinderco/viewfinder/backend/www/admin/service.py/AdminServiceHandler.post--crossover with--dataset/ETHPy150Open faxad/djangoCRUD/djangocrud/core/models.py/AbstractEntity.class_meta