Beispiel #1
0
  def get(self):
    # 新着名言を指定数取得する
    query = Meigen.all().order('-created_on')
    meigens = query.fetch(limit = 1000)

    # フィード作成
    feed = feedgenerator.Rss201rev2Feed(
      title = "名言ペディアRSS",
      link = "http://meigen-pedia.appspot.com/rss",
      description = "名言ペディアの全名言です",
      language = u"ja")

    for meigen in meigens:
      # フィードにエントリを追加
      feed.add_item(
        title = meigen.text,
        link = "http://meigen-pedia.appspot.com/word/" + str(meigen.key()),
        description = "by " + meigen.person.name )

    # RSS 文字列にする
    rss = feed.writeString("utf-8")

    # 画面を表示する
    self.response.headers['Content-Type'] = 'text/xml; charset=utf-8'
    self.response.out.write( rss )
Beispiel #2
0
  def get(self):
    # 編集確認
    person_id = self.request.get("id")
    person_obj = ''
    if (person_id):
      person_obj = Person.get( person_id )

    # 所有しない発言者IDを指定された場合は一覧へリダイレクトする
    if person_obj and person_obj.owner != users.get_current_user():
      self.redirect(urls.APP_PERSON_URL)
      return

    # 所有する発言者を取得します
    query = Person.all()
    query.filter( 'owner = ', users.get_current_user() )
    query.order('-created_on')
    owned_persons = query.fetch(limit = 1000)

    # 所有する発言者の名言を取得する
    meigens = ''
    if person_obj:
      query = Meigen.all()
      query.filter( 'owner = ', users.get_current_user() )
      query.filter( 'person = ', person_obj )
      meigens = query.fetch(limit = 1000)

    # 画面を表示する
    Viewer.generate(Viewer(), self.response, TEMPLATE_PATH, { 'persons': owned_persons, 'current_person': person_obj, 'meigens': meigens } )
Beispiel #3
0
 def get(self, meigen_id):
   # 名言個別ページを表示する
   if meigen_id:
     PortalMeigenHandler.individual(self, meigen_id)
   # 名言一覧ページを表示する
   else:
     Viewer.generate(Viewer(), self.response, LIST_TEMPLATE_PATH, { 'meigens': Meigen.all().order('-created_on') })
Beispiel #4
0
  def delete(self):
    # 必須パラメータ取得
    person_id = self.request.get("id")
    if (not person_id):
      self.redirect(urls.APP_PERSON_URL)

    # Person取得
    person_obj = Person.get( person_id )
    if (not person_obj):
      self.redirect(urls.APP_PERSON_URL)

    # Personが所有する名言を取得する
    query = Meigen.all()
    query.filter( 'person = ', person_obj )
    meigens = query.fetch(limit = 1)

    if (meigens):
      # 名言が1つ以上あるから削除できません。メッセージを出す
      self.redirect(urls.APP_PERSON_URL)
      return

    # Person 削除
    person_obj.delete()

    # 発言者一覧へリダイレクト
    self.redirect(urls.APP_PERSON_URL)
Beispiel #5
0
  def get(self):
    # 新着名言を指定数取得する
    query = Meigen.all().order('-created_on')
    meigens = query.fetch( limit = DISPLAY_NUMBER )

    # 画面を表示する
    # http://morchin.sakura.ne.jp/effective_python/method.html
    Viewer.generate(Viewer(), self.response, TEMPLATE_PATH, { 'meigens': meigens })
Beispiel #6
0
  def individual(self, meigen_id):
    meigen_obj = Meigen.get(meigen_id)
    message = ''
    if (not meigen_obj):
      message = '指定された名言は登録されていません'

    # 発言者の名言を取得
    query = Meigen.all().order('-created_on')
    query.filter( 'person = ', meigen_obj.person )
    meigens_of_person = query.fetch( limit = 6 )

    Viewer.generate(Viewer(), self.response, INDIVIDUA_TEMPLATE_PATH, 
    {
      'current_meigen': meigen_obj,
      'meigens_of_person': meigens_of_person,
      'meigens': Meigen.all().order('-created_on'),
      'message': message })
Beispiel #7
0
  def get(self):
    # 所有する新着名言を指定数取得する
    query = Meigen.all()
    query.filter( 'owner = ', users.get_current_user() )
    query.order('-created_on')
    owned_meigens = query.fetch( limit = DISPLAY_NUMBER )

    # 画面を表示する
    Viewer.generate(Viewer(), self.response, TEMPLATE_PATH, { 'meigens': owned_meigens } )
Beispiel #8
0
  def insert_or_update(self):
    # パラメータ取得
    person_name = self.request.get("person")
    text = self.request.get("text")
    is_lock = self.request.get("is_lock")

    # パラメタが不正なときは一覧画面へリダイレクトする
    if (person_name == '' or text == '' or is_lock == ''):
      self.redirect(urls.APP_MEIGEN_URL)
      return

    # is_lock 補正
    if (is_lock == 'True'):
      is_lock = True
    else:
      is_lock = False
    
    # 発言者登録
    person_obj = Person.get_or_insert(
                   person_name,
                   owner = users.get_current_user(),
                   name = person_name,
                   description = '',
                   twitter_id = DEFAULT_TWITTER_ID,
                   is_lock = is_lock )

    # 名言文(Meigen.text)が変更されたら、変更前のオブジェクトは削除する
    if self.request.get("id"):
      meigen_obj = Meigen.get( self.request.get("id") )
      if meigen_obj and meigen_obj.text != text:
        meigen_obj.delete()

    # 名言登録
    meigen_obj = Meigen.get_or_insert( 
                   text,
                   owner = users.get_current_user(),
                   text = text,
                   person = person_obj,
                   is_lock = is_lock )
    meigen_obj.person = person_obj
    meigen_obj.save()

    # 一覧ページへリダイレクトする
    self.redirect( urls.APP_MEIGEN_URL )
Beispiel #9
0
  def insert_or_update(self):
    # パラメータ取得
    person_name = self.request.get("name")
    person_description = self.request.get("description")
    is_lock = self.request.get("is_lock")

    # パラメタが不正なときは一覧画面へリダイレクトする
    if (person_name == '' or is_lock == ''):
      self.redirect(urls.APP_PERSON_URL)
      return

    # is_lock を Boolean型にする
    if (is_lock == 'True'):
      is_lock = True
    else:
      is_lock = False

    # TwitterID
    twitter_id = self.request.get("twitter_id")

    # 更新
    if self.request.get("id"):
      # Person取得
      person_obj = Person.get( self.request.get("id") )
      if (not person_obj):
        self.redirect(urls.APP_PERSON_URL)

      # Personの所有する名言を取得
      query = Meigen.all()
      query.filter( 'person = ', person_obj )
      owned_meigens = query.fetch(limit = 1)

      # 名言が1つ以上所属している場合は発言者名を変更できない!!とエラーであることを知らせる
      if person_obj.name != person_name and owned_meigens:
        self.redirect(urls.APP_PERSON_URL)
      # Person 削除
      else:
      	person_obj.delete()

    # Person 登録
    person_obj = Person.get_or_insert(
                   person_name,
                   owner = users.get_current_user(),
                   name = person_name,
                   description = person_description,
                   twitter_id = twitter_id,
                   is_lock = is_lock )

    # 発言者一覧へリダイレクト
    self.redirect(urls.APP_PERSON_URL)
Beispiel #10
0
  def get(self):
    # 所有する発言者のみ取得する
    query = Person.all()
    query.filter( 'owner = ', users.get_current_user() )
    query.order('-created_on')
    owned_persons = query.fetch(limit = 1000)

    # 所有する名言のみ取得する
    query = Meigen.all()
    query.filter( 'owner = ', users.get_current_user() )
    query.order('-created_on')
    owned_meigens = query.fetch(limit = 1000)

    # 編集確認
    meigen_id = self.request.get("id")
    meigen_obj = ''
    if (meigen_id):
      meigen_obj = Meigen.get( meigen_id )

    # 画面を表示する
    Viewer.generate(Viewer(), self.response, TEMPLATE_PATH, 
      {'persons': owned_persons,
       'meigens': owned_meigens,
       'current_meigen': meigen_obj })
Beispiel #11
0
  def individual(self, person_id):
    # 発言者取得
    person_obj = Person.get(person_id)
    message = ''
    if (not person_obj):
      message = '指定された発言者は登録されていません'

    # 発言者の名言を取得
    query = Meigen.all().order('-created_on')
    query.filter( 'person = ', person_obj )
    meigens_of_person = query.fetch( limit = 1000 )

    Viewer.generate(Viewer(), self.response, INDIVIDUAL_TEMPLATE_PATH, 
    { 'current_person': person_obj,
      'current_meigens': meigens_of_person,
      'persons': Person.all().order('-created_on'),
      'message': message })
Beispiel #12
0
  def delete(self):
    # 必須パラメータ取得
    meigen_id = self.request.get("id")
    if (not meigen_id):
      self.redirect(urls.APP_MEIGEN_URL)
      return

    # Person取得
    meigen_obj = Meigen.get( meigen_id )
    if (not meigen_obj):
      self.redirect(urls.APP_MEIGEN_URL)
      return

    # Person 削除
    meigen_obj.delete()

    # 発言者一覧へリダイレクト
    self.redirect(urls.APP_MEIGEN_URL)