OSDN Git Service

implement new count.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 22 Aug 2009 12:20:57 +0000 (12:20 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 22 Aug 2009 12:20:57 +0000 (12:20 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@125 4e526526-5e11-4fc0-8910-f8fd03428081

Rec10WEB/trunk/src/rec10web.py
Rec10WEB/trunk/src/rec10web_dbMySQL.py
Rec10WEB/trunk/src/rec10web_dbSQLite.py

index 954c52f..ee77e1f 100644 (file)
@@ -135,13 +135,80 @@ def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
     else:
         rett="over"
     return rett
     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 btt<et and ett>et:
+                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]<ret2[0][0]:
+            retcount[0]=ret2[0][0]
+        if retcount[1]<ret2[0][1]:
+            retcount[1]=ret2[0][1]
+        dls=ret2[1]
+        if len(dis)==0:
+            break
+        elif dis[0][4]==btime:
+            break
+    return retcount
 def change_reserv(id,type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
     """
     idはテキスト
     """
     MaxT=2
     MaxS=2
 def change_reserv(id,type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
     """
     idはテキスト
     """
     MaxT=2
     MaxS=2
-    tsnum=database.count_schedule_rectime(btime,etime)
+    tsnum=count_schedule(btime, etime)
     MaxT=MaxT-tsnum[0]
     MaxS=MaxS-tsnum[1]
     bctype=""
     MaxT=MaxT-tsnum[0]
     MaxS=MaxS-tsnum[1]
     bctype=""
@@ -246,7 +313,6 @@ if f.getfirst('etime'):
             dd=d2-d1
             et=et+dd
             etime=et.strftime("%Y-%m-%d %H:%M:%S")
             dd=d2-d1
             et=et+dd
             etime=et.strftime("%Y-%m-%d %H:%M:%S")
-        
 size="S"
 if f.getfirst('size'):
     size=f.getfirst('size')
 size="S"
 if f.getfirst('size'):
     size=f.getfirst('size')
@@ -262,8 +328,6 @@ if f.getfirst('deltaday',""):
 exect=""
 if f.getfirst('exec',""):
     exect=f.getfirst('exec',"")
 exect=""
 if f.getfirst('exec',""):
     exect=f.getfirst('exec',"")
-
-
 htmdate= readHtmlSrcSimple()
 htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
 htmdate=htmdate.replace("<!--btime-value//-->",btime)
 htmdate= readHtmlSrcSimple()
 htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
 htmdate=htmdate.replace("<!--btime-value//-->",btime)
@@ -273,8 +337,6 @@ htmdate=htmdate.replace("<!--ch-value//-->",chtxt)
 htmdate=htmdate.replace("<!--title-value//-->",title)
 htmdate=htmdate.replace("<!--size-value//-->",size)
 htmdate=htmdate.replace("<!--opts-value//-->",opts)
 htmdate=htmdate.replace("<!--title-value//-->",title)
 htmdate=htmdate.replace("<!--size-value//-->",size)
 htmdate=htmdate.replace("<!--opts-value//-->",opts)
-
-
 #ここから曜日検索の設定
 if f.getfirst('type')=="keyday":
     rett=""
 #ここから曜日検索の設定
 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)
     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 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=="":
 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=="":
index c843ed4..cf12430 100644 (file)
@@ -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)
         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
     def count_schedule_rectime(self,btime,etime):
         """
         count rectasknum
index 52d0e50..c3601fb 100644 (file)
@@ -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)
         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
     def count_schedule_rectime(self,btime,etime):
         """
         count rectasknum