import tornado.auth
import tornado.escape
import tornado.web
+import tornado.wsgi
+import wsgiref.simple_server
from tinydb import TinyDB,Query,where
-from tinydb.storages import MemoryStorage
from tinydb.operations import delete
from datetime import datetime
class TitleHandler(NaviHandler):
def get(self):
- self.render('title.htm',coll=self.name(),full=self.full,
- count=self.count,title=self.title,update=self.update)
-
- def count(self,dbname):
- if dbname in self.application.db.tables():
- return len(self.application.db.table(dbname))
- else:
- return ''
-
- def title(self,dbname):
- if dbname in self.application.db.tables():
- table = self.application.db.table(dbname)
+ rec = sorted(self.title(),key=lambda x: x['date2'])
+ self.render('title.htm',coll=rec,full=self.full)
+
+ def title(self):
+ for x in self.name():
+ item = {}
+ item['name'] = x
+ table = self.application.db.table(x)
+ i = len(table)
+ item['count'] = i
if table.contains(where('number') == 1) == True:
- dic = table.get(where('number') == 1)
- return dic['title']
+ s = table.get(where('number') == 1)['title']
else:
- return ''
-
- def update(self,dbname):
- if dbname in self.application.db.tables():
- table = self.application.db.table(dbname)
- i = len(table)
+ s = ''
+ item['title'] = s
if i == 0:
- return ''
+ item['date'] = ''
+ item['date2'] = 0
else:
- rec = sorted(table.all(),key=lambda x: x['number'])
- return rec[i-1]['date']
+ rec = sorted(table.all(),key=lambda k: k['number'])
+ s = rec[i-1]['date']
+ item['date'] = s
+ i = datetime.strptime(s,'%Y/%m/%d %H:%M')
+ year = datetime.now().year-i.year
+ if year == 0:
+ j = 800
+ elif year == 1:
+ j = 400
+ else:
+ j = 0
+ item['date2'] = j+31*(i.month-1)+i.day
+ yield item
class RegistHandler(tornado.web.RequestHandler):
def post(self,dbname):
break
for line in com.splitlines(True):
for word in words:
- if word in line:
+ if word in line.lower():
error = error + u'タグ違反.('+word+')'
i += len(line)
text = text+'<p>'+self.link(line)+'<br></p>'
item = sorted(article.all(),key=lambda x: x['number'])[len(article)-1]
no = item['number']+1
if error == '':
- reg = {'number':no,'name':na,'title':sub,'comment':text,'raw':com,'password':pw,'date':datetime.now().strftime('%Y/%m/%d %H:%M')}
+ s = datetime.now()
+ reg = {'number':no,'name':na,'title':sub,'comment':text,'raw':com,'password':pw,'date':s.strftime('%Y/%m/%d %H:%M')}
article.insert(reg)
- restart()
self.set_cookie('username',tornado.escape.url_escape(na))
self.redirect('/'+dbname+'#article')
else:
start = len(table)-i
if start < 0:
start = 0
- restart()
- self.application.db = TinyDB(st.json)
self.render('modules/admin.htm',position=pos,records=rec[start:start+i],mente=check,password=mente['password'],db=dbname)
class AdminConfHandler(BaseHandler):
table = self.application.db.table(dbname)
for x in self.get_arguments('item'):
table.remove(where('number') == int(x))
- restart()
self.redirect('/'+dbname+'/admin/0/')
def store(self):
if x in bak.tables():
table = database.table(x)
table.insert_multiple(bak.table(x).all())
- restart()
class UserHandler(tornado.web.RequestHandler):
def post(self,dbname):
- num = int(self.get_argument('number'))
- pas = self.get_argument('password')
- table = self.application.db.table(dbname)
- qwr = Query()
- obj = table.get(qwr.number == num)
- if obj and(obj['password'] == pas):
- table.remove(qwr.number == num)
+ num = self.get_argument('number')
+ if num.isdigit() == True:
+ num = int(num)
+ pas = self.get_argument('password')
+ table = self.application.db.table(dbname)
+ qwr = Query()
+ obj = table.get(qwr.number == num)
+ if obj and(obj['password'] == pas):
+ table.remove(qwr.number == num)
self.redirect('/'+dbname)
class SearchHandler(tornado.web.RequestHandler):
self.word = tornado.escape.url_unescape(self.get_argument('word1'))
self.radiobox = self.get_argument('filter')
self.set_cookie('search',tornado.escape.url_escape(self.word))
- rec = self.search(dbname)
+ rec = sorted(self.search(dbname),key=lambda x: x['number'])
self.render('modules/search.htm',records=rec,word1=self.word,db=dbname)
def get(self,dbname):
if self.application.collection(dbname) == False:
raise tornado.web.HTTPError(404)
return
- word = self.get_cookie('search')
+ word = self.get_cookie('search','')
+ word = tornado.escape.url_unescape(word)
self.render('modules/search.htm',records=[],word1=word,db=dbname)
- def search(self,name):
- table = self.application.db.table(name)
+ def search(self,dbname):
+ table = self.application.db.table(dbname)
element = self.word.split()
if len(element) == 0:
element = ['']
while len(element) < 3:
element.append(element[0])
if self.radiobox == 'comment':
- query = (Query()[self.radiobox].search(element[0])) | (Query()[self.radiobox].search(element[1])) | (Query()[self.radiobox].search(element[2]))
+ query = (Query().raw.search(element[0])) | (Query().raw.search(element[1])) | (Query().raw.search(element[2]))
else:
- query = (Query()[self.radiobox] == element[0]) | (Query()[self.radiobox] == element[1]) | (Query()[self.radiobox] == element[2])
- if self.radiobox == 'comment':
- rec = []
- mem = TinyDB(storage=MemoryStorage)
+ query = (Query().name == element[0]) | (Query().name == element[1]) | (Query().name == element[2])
+ if self.radiobox == 'comment':
for x in table.search(query):
- result = ''
+ com = ''
for text in x['raw'].splitlines(True):
for word in self.word.split():
if text.find(word) > -1:
- result = result+'<p style=background-color:yellow>'+text+'<br></p>'
+ com = com +'<p style=background-color:yellow>'+text+'<br></p>'
break
else:
- result = result+'<p>'+text+'<br></p>'
- i = mem.insert(x)
- mem.update({'comment':result},eids=[i])
- rec = sorted(mem.all(),key=lambda x: x['number'])
- mem.close()
- return rec
+ com = com+'<p>'+text+'<br></p>'
+ x['comment'] = com
+ yield x
else:
- rec = table.search(query)
- return sorted(rec,key=lambda x: x['number'])
+ for x in table.search(query):
+ yield x
class FooterModule(tornado.web.UIModule):
def render(self,number,url,link):
'ui_modules':{'Footer':FooterModule},
'cookie_secret':'bZJc2sWbQLKos6GkHn/VB9oXwQt8SOROkRvJ5/xJ89E=',
'xsrf_cookies':True,
- 'debug':True,
+ #'debug':True,
'login_url':'/login'
}
tornado.web.Application.__init__(self,handlers,**settings)
return pos
def collection(self,name):
- for x in self.db.tables():
- if x == name:
- return True
+ if name in self.db.tables():
+ return True
else:
return False
bak = 'static/db/bak.json'
st = static()
-app = Application()
-
-def restart():
- pass
- #app.db.close()
- #app.db = TinyDB(st.json)
+app = tornado.wsgi.WSGIAdapter(Application())
+if __name__ == '__main__':
+ server = wsgiref.simple_server.make_server('',8888,app)
+ server.serve_forever()