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 )
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 } )
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)
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') })
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 })
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 })
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 } )
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)
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 })
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 })