db.py
from google.appengine.ext import blobstore
from google.appengine.ext import db
from google.appengine.ext.db import polymodel
 
#頁面模型
class Pagedb(db.Model):
    author = db.UserProperty(auto_current_user_add = True)
    pagetitle = db.StringProperty()
    title = db.StringProperty()
    content = db.TextProperty()
    date = db.DateTimeProperty(auto_now_add=True)
    previous = db.SelfReferenceProperty()
    isnew = db.BooleanProperty()
    tag = db.StringListProperty()
 
    #複製方法
    @staticmethod
    def copy(pagedb):
        newPagedb = Pagedb(parent = pagedb.parent())
        newPagedb.author = pagedb.author
        newPagedb.pagetitle = pagedb.pagetitle
        newPagedb.title = pagedb.title
        newPagedb.content = pagedb.content
        newPagedb.previous = pagedb.previous
        newPagedb.isnew = pagedb.isnew
        newPagedb.tag = pagedb.tag
        return newPagedb
 
class Userdb(db.Model):
    user = db.UserProperty(auto_current_user_add = True)
    tags = db.StringListProperty()
    css = db.TextProperty()
    css_filename = db.StringProperty()
    cssurl = db.LinkProperty()
    using_way = db.StringProperty(default = 'default')
    using_way_default = db.StringProperty(default = 'default')
    sitetitle = db.StringProperty()
    def get_css(self):
        if self.using_way == "link":
            return (self.cssurl, None)
        elif self.using_way == 'file':
            return ('/usercss/' + self.user.nickname() +'.css', None)
        else:
            return ('default', self.using_way_default)
 
class Filedb(polymodel.PolyModel):
    uploader = db.ReferenceProperty(Userdb)
    file = blobstore.BlobReferenceProperty()