Beispiel #1
0
  def stored_number(self, lang):
    """
    use for local
    """
    result = 0
    currentNumber = memcache.get("currentNumber")
    if currentNumber is not None:
      # result = currentNumber.serial_number
      result = currentNumber
      logging.info("### get currentNumberl from Memcache!")
    else:
      query = Adminkun.all()
      query.filter('lang =', lang)
      query.order('-serial_number')
      data = query.get()
      if data is not None:
        result = int(data.serial_number)
        if not memcache.add("currentNumber", result, 60 * 60 * 12):
          logging.error("*** Memcache set failed for currentNumber.")
        else:
          logging.info("### Set new currentNumber to Memcache.")

    logging.info(u"### Current stored number is %s.", result)
    return result
    pass
Beispiel #2
0
  def get(self):
    """
    呼び出し方:?serial_number=1&lang=ja
    指定した連載番号記事のインデックス情報をデータストアから取得し、JSON形式で返す。
    errorCode:000 success
              011 引数の数が不正
              012 引数が不正
              013 連載番号が指定されていない
              014 言語パラメータが存在しない
              015 言語パラメータの値が存在しない
              016 言語パラメータの値が不正(ja or en)
    """
    statusCode = '000'
    result = ""
    resultArray = []
    if len(self.params) < 2+2: # action, controller, serial_number, lang
      statusCode = '011'
      result = self.to_json({'status_code' : statusCode})
    elif self.params.has_key('serial_number') is False:
      statusCode = '012' # no parameter
      result = self.to_json({'status_code' : statusCode})
    elif len(self.params['serial_number']) == 0:
      statusCode = '013' # no number
      result = self.to_json({'status_code' : statusCode})
    elif self.params.has_key('lang') is False:
      statusCode = '014' # no lang parameter
      result = self.to_json({'status_code' : statusCode})
    elif len(self.params['lang']) == 0:
      statusCode = '015' # no lang
      result = self.to_json({'status_code' : statusCode})
    elif self.params['lang'] != 'ja' and self.params['lang'] != 'en':
      statusCode = '016' # out of param. (ja or en only)
      result = self.to_json({'status_code' : statusCode})
    else:
      query = Adminkun.all()
      query.filter('lang =', self.params['lang'])
      # current_number = query.count()
      current_number = self.stored_number(self.params['lang'])
      if int(self.params['serial_number']) > current_number:
        statusCode = '17' # 登録されているデータの範囲を超えた
        result = self.to_json({'status_code' : statusCode})
        self.render(json = result)
        return
    
      number = self.params['serial_number']
      lang = self.params['lang']
      query = Adminkun.all()
      query.filter('serial_number =', int(number))
      query.filter('lang =', lang)
      query.order('-serial_number')

      data = query.get()
      result = self.to_json({'serial_number'  : data.serial_number,
                            'index_title'     : data.index_title,
                            'index_overview'  : data.index_overview,
                            'index_image_url' : data.index_image_url,
                            'body_url'        : data.body_url,
                            'body_image_url'  : data.body_image_url,
                            'status_code'     : statusCode,
                            'lang'            : lang
                            })

    self.render(json = result)
    pass