From 872d1e1a0c8fe6289d71d6d7cce57c43987c3c37 Mon Sep 17 00:00:00 2001 From: gn64_jp Date: Sat, 22 Aug 2009 12:20:57 +0000 Subject: [PATCH] implement new count. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@125 4e526526-5e11-4fc0-8910-f8fd03428081 --- Rec10WEB/trunk/src/rec10web.py | 78 ++++++++++++++++++++++++++++----- Rec10WEB/trunk/src/rec10web_dbMySQL.py | 11 +++++ Rec10WEB/trunk/src/rec10web_dbSQLite.py | 10 +++++ 3 files changed, 89 insertions(+), 10 deletions(-) diff --git a/Rec10WEB/trunk/src/rec10web.py b/Rec10WEB/trunk/src/rec10web.py index 954c52f..ee77e1f 100644 --- a/Rec10WEB/trunk/src/rec10web.py +++ b/Rec10WEB/trunk/src/rec10web.py @@ -135,13 +135,80 @@ def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday): else: rett="over" return rett +def count_schedule(btime,etime): + """ + return rec num (int return[0]:TE /int return[1]:BS/CS) + """ + #typet,bctypet, chtxtt,titlet,btime,etime + def rectime_count(btimeb,etimee,liststemp): + ##btimeからetimeまでの中に入る数を数えるとともに + #リストのbtime,etimeを変更する + #[[tenum,bscsnum],retlists] + #typet,bctypet, chtxtt,titlet,btime,etime + bt=datetime.datetime(*time.strptime(btimeb,"%Y-%m-%d %H:%M:%S")[:-3]) + et=datetime.datetime(*time.strptime(etimee,"%Y-%m-%d %H:%M:%S")[:-3]) + lists=liststemp + count=[0,0]#te,bscs + bttemp + retlists=[] + for list in lists: + btt=datetime.datetime(*time.strptime(list[4],"%Y-%m-%d %H:%M:%S")[:-3]) + ett=datetime.datetime(*time.strptime(list[5],"%Y-%m-%d %H:%M:%S")[:-3]) + #NOT( ( rectime.etime <= ? ) OR ( rectime.btime >= ? ) + if not ((ett<= bt) or (btt >= et)): + if list[1].find("cs")>-1: + count[1]=count[1]+1 + elif list[1].find("bs")>-1: + count[1]=count[1]+1 + elif list[1].find("te")>-1: + count[0]=count[0]+1 + """if ettemp>ett: + ettemp=et""" + if bttet: + btt=et + if btt>=et: + btimett=btt.strftime("%Y-%m-%d %H:%M:%S") + etimett=ett.strftime("%Y-%m-%d %H:%M:%S") + retlists.append([list[0],list[1],list[2],list[3],btimett,etimett]) + return [count,retlists] + #btime=dbt.strftime("%Y-%m-%d %H:%M:%S") + #etime=det.strftime("%Y-%m-%d %H:%M:%S") + dls=database.schedule_rectime(btime,etime) + btemp=datetime.datetime(*time.strptime(dis[0][4],"%Y-%m-%d %H:%M:%S")[:-3]) + etemp=datetime.datetime(*time.strptime(dis[0][5],"%Y-%m-%d %H:%M:%S")[:-3]) + retcount=[0,0] + while retend==0: + btemp=datetime.datetime(*time.strptime(dis[0][4],"%Y-%m-%d %H:%M:%S")[:-3]) + etemp=datetime.datetime(*time.strptime(dis[0][5],"%Y-%m-%d %H:%M:%S")[:-3]) + for dl in dls: + btemptt=datetime.datetime(*time.strptime(dl[4],"%Y-%m-%d %H:%M:%S")[:-3]) + etemptt=datetime.datetime(*time.strptime(dl[5],"%Y-%m-%d %H:%M:%S")[:-3]) + if btemp>btemptt: + btemp=btemptt + etemp=etemptt + elif btemp==btemptt: + if etemp>etemptt: + etemp=etemptt + bt2=btemp.strftime("%Y-%m-%d %H:%M:%S") + et2=etemp.strftime("%Y-%m-%d %H:%M:%S") + ret2=rectime_count(bt2,et2,dls) + if retcount[0]",getchtxt()) htmdate=htmdate.replace("",btime) @@ -273,8 +337,6 @@ htmdate=htmdate.replace("",chtxt) htmdate=htmdate.replace("",title) htmdate=htmdate.replace("",size) htmdate=htmdate.replace("",opts) - - #ここから曜日検索の設定 if f.getfirst('type')=="keyday": rett="" @@ -299,16 +361,12 @@ if f.getfirst('type')=="keyday": dayt=f.getfirst('day_Sun') if dayt: rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt) - if rett=="": htmdate=readRecFinisSimple() else: htmdate=readRecFinisOver() chtxt="" exect="" - - - if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(exect=="yes"): restxt=reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday) if restxt=="": diff --git a/Rec10WEB/trunk/src/rec10web_dbMySQL.py b/Rec10WEB/trunk/src/rec10web_dbMySQL.py index c843ed4..cf12430 100644 --- a/Rec10WEB/trunk/src/rec10web_dbMySQL.py +++ b/Rec10WEB/trunk/src/rec10web_dbMySQL.py @@ -148,6 +148,17 @@ class DB_MySQL: db[1].execute('INSERT IGNORE INTO rectime (type,chtxt,title,btime,etime,deltatime,deltaday,opt) values (%s,%s,%s,%s,%s,%s,%s,%s)', (type, chtxt, title, btime, etime, deltatime, deltaday, opt)) #db.commit() self.close_db(db) + def schedule_rectime(self,btime,etime): + db=self.connect_db() + dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title,rectime.btime,rectime.etime FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt" + dbexe=dbexe+" WHERE NOT( ( rectime.etime <= %s ) OR ( rectime.btime >= %s ) )" + db[1].execute(dbexe,(btime,etime)) + rets=[] + for typet,bctypet, chtxtt, titlet,btimet,etimet in db[1].fetchall(): + ret=[typet,bctypet,chtxtt,titlet,btimet,etimet] + rets.append(ret) + self.close_db(db) + return rets def count_schedule_rectime(self,btime,etime): """ count rectasknum diff --git a/Rec10WEB/trunk/src/rec10web_dbSQLite.py b/Rec10WEB/trunk/src/rec10web_dbSQLite.py index 52d0e50..c3601fb 100644 --- a/Rec10WEB/trunk/src/rec10web_dbSQLite.py +++ b/Rec10WEB/trunk/src/rec10web_dbSQLite.py @@ -128,6 +128,16 @@ class DB_SQLite: db.execute('INSERT OR IGNORE INTO rectime (type,chtxt,title,btime,etime,deltatime,deltaday,opt) values (?,?,?,datetime(?),datetime(?),?,?,?)', (type, chtxt, title, btime, etime, deltatime, deltaday, opt)) db.commit() self.close_db(db) + def schedule_rectime(self,btime,etime): + db=self.connect_db(120) + dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title,rectime.btime,rectime.etime FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt" + dbexe=dbexe+" WHERE NOT( ( rectime.etime <= ? ) OR ( rectime.btime >= ? ) )" + rets=[] + for typet,bctypet, chtxtt, titlet,btimet,etimet in db.execute(dbexe,(btime,etime)): + ret=[typet,bctypet,chtxtt,titlet,btimet,etimet] + rets.append(ret) + self.close_db(db) + return rets def count_schedule_rectime(self,btime,etime): """ count rectasknum -- 2.11.0