Handler.Perform
from google.appengine.ext import webapp
from google.appengine.api import users
from . import BaseHTML
from ..parser.mylist import Mylist
from django.utils.safestring import mark_safe
import py.util as siteutil
import py.util.page as pageutil
 
class Perform(webapp.RequestHandler):
    '''頁面的對應類別,對應表示使用者內容的頁面'''
    def get(self, username, request_page):
        '''一般存取回應,回傳指定頁面'''
        html = BaseHTML('web1.html')#建立網頁樣板
        request_page = siteutil.unquote(request_page)
        try:#嘗試存取網頁
            page = siteutil.findPage(siteutil.findUsedUser(username), request_page)[0]
            mylist = self.getMylist(username)
        except pageutil.NotFindPageError:#一旦有例外,回傳404找不到網頁
            BaseHTML('warning.html').update({'path': request_page}).render(self)
        else:
            #對標籤轉換以放入網頁中
            tags = []
            for tag in page.tag:
                if tag:
                    tags.append({'tag':tag,'url':siteutil.quote(tag)})
            using_css, using_css_default = siteutil.find_css(username)
            #輸入網頁所需變數資料
            html.content.update({
                    'using_css': using_css,
                    'using_css_default': using_css_default,
                    'current_user' : users.get_current_user(),
                    'author' : page.author,
                    'sitetitle' : page.parent().sitetitle,
                    'toplist'   : tags,
                    'sidelist'  : mylist,
                    'title'     : page.title,
                    'content'   : page.content})
            html.content.update(siteutil.loginout_url(self.request.url))#調用方法來取得登入登出處理
            self.response.out.write(html.render())
 
    def delete(self, username, request_page):
        '''刪除請求,發生於要求刪除指定頁面時'''
        request_page = siteutil.unquote(request_page)
        try:#嘗試存取網頁
            page = siteutil.findPage(siteutil.findUsedUser(username), request_page)
            pageutil.deletePage(page[0])
        except pageutil.NotFindPageError:#一旦有例外,回傳404找不到網頁
            self.response.set_status(404,"can't find content.maybe is wrong name.")
        except:
            self.response.set_status(204, "unknown error.")
 
    def getMylist(self, username):
        try:
            mylist = siteutil.findPage( siteutil.findUsedUser(username), 'mylist')[0]
            return mark_safe(Mylist().conver(mylist.content, mylist))
        except:
            return mark_safe('找不到list頁<br>請建立一個頁面<br>頁面名稱為:  mylist<br>內容為:  [[module pagelist]]')
 
class TagList(webapp.RequestHandler):
    '''頁面的對應類別,表示標籤列表的頁面'''
    def get(self):
        '''一般存取回應,回傳指定頁面'''
        html = BaseHTML('tagList.html')
        #tag = urllib.unquote(self.request.get('tag'))
        tag = siteutil.unquote(self.request.get('tag'))
        user = siteutil.findUsedUser(self.request.get('username'))
        pages = siteutil.findPage(user, tag = tag)#取得使用者所建立的頁面(前100個)
        html.content['pagelist'] = pages
        html.content['tag'] = tag
        html.content.update(siteutil.loginout_url(self.request.url))
        html.render(self)