OSDN Git Service

edit mode
[rec10/rec10-git.git] / Rec10WEB / trunk / src / rec10web.py
index a758781..82320aa 100644 (file)
@@ -6,12 +6,47 @@ import cgi
 import cgitb
 import sqlite3
 import os
+import re
 import datetime
 cgitb.enable()
 path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
 dbpath=path+"ch.db"
 
-
+def getRecDate():
+    db=sqlite3.connect(dbpath)
+    recdata="\"id\",\"type\",\"chtxt\",\"title\",\"btime\",\"etime\",\"deltaday\",\"opt\"\n"
+    recdata="id,type,chtxt,title,btime,etime,deltaday,opt\n"
+    for id, typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT id, type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
+        if deltaday==None:
+            deltaday="なし"
+        elif deltaday=="":
+            deltaday="なし"
+        if opt==None:
+            opt="なし"
+        if typet=="res":
+            typet="一回予約"
+        elif typet=="key":
+            typet="検索予約"
+        elif typet=="keyevery":
+            typet="隔週予約"
+        elif typet=="res":
+            typet="録画最終"
+        elif typet=="grid":
+            typet="外部委託"
+        elif typet=="ts2avi":
+            typet="EncQue"
+        btime=btime[5:16]
+        etime=etime[5:16]
+        btime=btime.replace("-","/")
+        etime=etime.replace("-","/")
+        if btime[0:5]==etime[0:5]:
+            etime=etime[6:]
+        s="\""+str(id)+"\",\""+typet+"\",\""+chtxt+"\",\""+title+"\",\""+btime+"\",\""+etime+"\",\""+deltaday+"\",\""+opt+"\"\n"
+        s=str(id)+","+typet+","+chtxt+","+title+","+btime+","+etime+","+deltaday+","+opt+"\n"
+        recdata=recdata+s
+    f=open(path+"/recdatum.csv","w")
+    f.write(recdata)
+    f.close()
 def getchtxt():
     db=sqlite3.connect(dbpath)
     chopt=""
@@ -22,13 +57,124 @@ def getchtxt():
         chopt=chopt+"<option  value="+chtxt+">"+display+"</option>\n                "
     db.close()
     return chopt
+def edit_date(id):
+    db=sqlite3.connect(dbpath)
+    ret={}
+    for idt,typet,chtxt,title,btime,etime,deltatime,opt,deltaday in db.execute("SELECT id,type,chtxt,title,btime,etime,deltatime,opt,deltaday From rectime WHERE id ="+id):
+        ret['id']=idt
+        ret['type']=typet
+        ret['chtxt']=chtxt
+        ret['title']=title
+        ret['btime']=btime
+        ret['etime']=etime
+        try:
+            ret['deltatime']=deltatime
+        except:
+            ret['deltatime']=""
+        ret['opt']=opt
+        try:
+            ret['deltaday']=daltaday
+        except:
+            ret['deltaday']=""
+    db.close()
+    return ret
+
+def reserv_recday(keyword,chtxt,btime,etime,deltatime,opt,deltaday,day):
+    """
+    dayは月曜日を1日曜日を7とした数字
+    """
+    bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
+    et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
+    dt=int(day)-bt.isoweekday()
+    if dt<0:
+        dt=dt+7
+    dbt=bt+datetime.timedelta(days=dt)
+    det=et+datetime.timedelta(days=dt)
+    btime=dbt.strftime("%Y-%m-%d %H:%M:%S")
+    etime=det.strftime("%Y-%m-%d %H:%M:%S")
+    return reserv("keyevery",keyword,chtxt,btime,etime,deltatime,opt,"7")
 def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
+    MaxT=2
+    MaxS=2
     db=sqlite3.connect(dbpath)
-    recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
-    #print recline
-    db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
-    db.commit()
+    bt="\'"+btime+"\'"
+    et="\'"+etime+"\'"
+    dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+    #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+
+    dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
+    for typet,bctypet, chtxtt, titlet in db.execute(dbexe):
+        if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
+            if bctypet.find("cs")>-1:
+                MaxS=MaxS-1
+            elif bctypet.find("bs")>-1:
+                MaxS=MaxS-1
+            elif bctypet.find("te")>-1:
+                MaxT=MaxT-1
+    bctype=""
+    rett=""
+    for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
+        bctype=bctypet
+    if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
+        if bctype.find("cs")>-1:
+            MaxS=MaxS-1
+        elif bctype.find("bs")>-1:
+            MaxS=MaxS-1
+        elif bctype.find("te")>-1:
+            MaxT=MaxT-1
+    if MaxS>-1 and MaxT>-1:
+        recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
+        #print recline
+        db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
+        db.commit()
+    else:
+        rett="over"
     db.close()
+    return rett
+def change_reserv(id,type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
+    """
+    idはテキスト
+    """
+    MaxT=2
+    MaxS=2
+    db=sqlite3.connect(dbpath)
+    bt="\'"+btime+"\'"
+    et="\'"+etime+"\'"
+    idn=int(id)
+    dbexe="SELECT id,type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+    #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
+
+    dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
+    for idt,typet,bctypet, chtxtt, titlet in db.execute(dbexe):
+        if idt != idn:
+            if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
+                if bctypet.find("cs")>-1:
+                    MaxS=MaxS-1
+                elif bctypet.find("bs")>-1:
+                    MaxS=MaxS-1
+                elif bctypet.find("te")>-1:
+                    MaxT=MaxT-1
+    bctype=""
+    rett=""
+    for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
+        bctype=bctypet
+    if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
+        if bctype.find("cs")>-1:
+            MaxS=MaxS-1
+        elif bctype.find("bs")>-1:
+            MaxS=MaxS-1
+        elif bctype.find("te")>-1:
+            MaxT=MaxT-1
+    if MaxS>-1 and MaxT>-1:
+        db.execute('delete from rectime where id='+id)
+        recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
+        #print recline
+        db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
+        db.commit()
+    else:
+        rett="over"
+    db.close()
+    return rett
 def station2chtxt(station):
     db=sqlite3.connect(dbpath)
     ret=""
@@ -36,16 +182,39 @@ def station2chtxt(station):
         ret=chtxt
     db.close()
     return ret
+def station_name2chtxt(station):
+    db=sqlite3.connect(dbpath)
+    ret=""
+    for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station_name=\""+station+"\""):
+        ret=chtxt
+    db.close()
+    return ret
 def readHtmlSrcSimple():
     f = open(path+'rswi.htm')
     ret=f.read()
     f.close()
     return ret
+def readHtmlEdit():
+    f = open(path+'rswi_edit.htm')
+    ret=f.read()
+    f.close()
+    return ret
+
 def readRecFinisSimple():
     f = open(path+'fin.htm')
     ret=f.read()
     f.close()
     return ret
+def readRecFinisOver():
+    f = open(path+'finover.htm')
+    ret=f.read()
+    f.close()
+    return ret
+def readRecSchedule():
+    f = open(path+'schedule.htm')
+    ret=f.read()
+    f.close()
+    return ret
 f=cgi.FieldStorage()
 
 btime=""
@@ -54,7 +223,14 @@ title=""
 chtxt=""
 type="res"
 bt=""
+getRecDate()
+if f.getfirst('mode')=="schedule":
+    getRecDate()
+
 ###ここからiEPG用の読み出し
+if f.getfirst('station_name'):
+    station=f.getfirst('station_name')
+    chtxt=station_name2chtxt(station)
 if f.getfirst('station'):
     station=f.getfirst('station')
     chtxt=station2chtxt(station)
@@ -85,7 +261,7 @@ if f.getfirst('etime'):
             et=et+dd
             etime=et.strftime("%Y-%m-%d %H:%M:%S")
         
-size=""
+size="S"
 if f.getfirst('size'):
     size=f.getfirst('size')
 opts=""
@@ -100,10 +276,10 @@ if f.getfirst('deltaday',""):
 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=htmdate.replace("<!--etime-value//-->",etime)
 htmdate=htmdate.replace("<!--type-value//-->",type)
@@ -112,11 +288,73 @@ htmdate=htmdate.replace("<!--title-value//-->",title)
 htmdate=htmdate.replace("<!--size-value//-->",size)
 htmdate=htmdate.replace("<!--opts-value//-->",opts)
 
+
+#ここから曜日検索の設定
+if f.getfirst('type')=="keyday":
+    rett=""
+    dayt=f.getfirst('day_Mon')
+    if dayt:
+        rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+    dayt=f.getfirst('day_Tue')
+    if dayt:
+        rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+    dayt=f.getfirst('day_Wed')
+    if dayt:
+        rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+    dayt=f.getfirst('day_Thu')
+    if dayt:
+        rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+    dayt=f.getfirst('day_Fri')
+    if dayt:
+        rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
+    dayt=f.getfirst('day_Sat')
+    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 (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(exect=="yes"):
-    reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
-    htmdate=readRecFinisSimple()
+    restxt=reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
+    if restxt=="":
+        htmdate=readRecFinisSimple()
+    elif restxt=="over":
+        htmdate=readRecFinisOver()
     exect=""
 #
-print htmdate
+if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(re.search('edit-exec:',exect)):
+    editnum=exect.replace("edit-exec:","")
+    restxt=change_reserv(editnum,type, title, chtxt, btime, etime, deltahour, opts, deltaday)
+    if restxt=="":
+        htmdate=readRecFinisSimple()
+    elif restxt=="over":
+        htmdate=readRecFinisOver()
+    exect=""
+if exect=="schedule":
+    htmdate=readRecSchedule()
+if re.search('edit:',exect):
+    editnum=exect.replace("edit:","")
+    htmdate= readHtmlEdit()
+    iddata=edit_date(editnum)
+    htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
+    htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
+    htmdate=htmdate.replace("<!--btime-value//-->",iddata["btime"])
+    htmdate=htmdate.replace("<!--etime-value//-->",iddata["etime"])
+    htmdate=htmdate.replace("<!--type-value//-->",iddata["type"])
+    htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
+    htmdate=htmdate.replace("<!--title-value//-->",iddata["title"])
+    htmdate=htmdate.replace("<!--size-value//-->",size)
+    htmdate=htmdate.replace("<!--opts-value//-->",iddata["opt"])
+    htmdate=htmdate.replace("<!--exec-value//-->","edit-exec:"+editnum)
 
+print htmdate