292efe039e949695f7ccea60c0d6445cd67ba1e3
[vuplus_dvbapp-plugin] / webinterface / src / WebComponents / Sources / WAPfunctions.py
1 Version = '$Header$';
2
3 from Components.Sources.Source import Source
4 from Components.Sources.ServiceList import ServiceList
5 from Components.config import config
6 from enigma import eServiceReference
7
8 from re import sub
9 from time import strftime, localtime, time
10
11 class WAPfunctions( Source):
12     LISTTIME = 0
13     REPEATED = 1
14     SERVICELIST = 2
15     OPTIONLIST = 3
16     FILLVALUE = 4
17     LOCATIONLIST = 5
18     TAGLIST = 6
19     DELETEOLD = 7
20     
21     lut = {"Name":0
22           ,"Value":1
23           ,"Selected":2
24           }
25     
26     def __init__(self, session,func = LISTTIME):
27         self.func = func
28         Source.__init__(self)        
29         self.session = session
30         self.result = ["unknown command (%s)"  % self.func]
31
32     def handleCommand(self,cmd):
33         print "WAPfunctions: handleCommand", cmd
34         if self.func is self.LISTTIME:
35             self.result = self.fillListTime(cmd)
36         elif self.func is self.REPEATED:
37             self.result = self.fillRepeated(cmd)
38         elif self.func is self.SERVICELIST:
39             self.result = self.serviceList(cmd)
40         elif self.func is self.OPTIONLIST:
41             self.result = self.fillOptionList(cmd)
42         elif self.func is self.FILLVALUE:
43             self.result = self.fillValue(cmd)
44         elif self.func is self.LOCATIONLIST:
45             self.result = self.locationList(cmd)
46         elif self.func is self.TAGLIST:
47             self.result = self.tagList(cmd)
48         elif self.func is self.DELETEOLD:
49             self.result = self.deleteOldSaved(cmd)
50         else:
51             self.result = ["unknown command cmd(%s) self.func(%s)" % (cmd, self.func)]
52
53     def fillListTime(self,param):
54         print "fillListTime",param
55         
56         input = 0
57         start = 1
58         end = 1
59         
60         timeNow = time()
61         timePlusTwo = timeNow + 7200
62
63         if param.has_key('begin'):
64             begin = param['begin'] or 0
65             begin = int(begin)
66             del param['begin']
67             if begin > 0:
68                 timeNow = begin
69         if param.has_key('end'):
70             end = param['end'] or 0
71             end = int(end)
72             del param['end']
73             if end > 0:
74                 timePlusTwo = end
75         
76         t = {}
77         t["day"]=strftime("%d", localtime(timeNow))
78         t["month"]=strftime("%m", localtime(timeNow))
79         t["year"]=strftime("%Y", localtime(timeNow))
80         t["smin"]=strftime("%M", localtime(timeNow))
81         t["shour"]=strftime("%H", localtime(timeNow))
82         t["emin"]=strftime("%M", localtime(timePlusTwo))
83         t["ehour"]=strftime("%H", localtime(timePlusTwo))
84         
85         key = ""
86         for i in param:
87             p = str(i)
88             if p != "sRef":
89                 key = p
90
91         if key == "smin" or key == "emin" :
92             start = 0
93             end = 59
94         elif key == "shour" or key == "ehour":
95             start = 1
96             end = 24
97         elif key == "day":
98             start = 1
99             end = 31
100         elif key == "month":
101             start = 1
102             end = 12
103         else:
104             start = int(t[key])
105             end = int(t[key])+2
106         
107         if param[key] == "now" or param[key] == "end" or param[key] == "begin":
108             input = int(t[key])
109         else:
110             input = param[key] or 0
111             input = int(input)
112         
113         self.result = self.fillOptionListAny(input,start,end)
114         return self.result
115     
116     def fillOptionListAny(self,input,start,end):
117         returnList = []
118         for i in range(start,end+1,1):
119             returnList1 = []
120             j = str(i)
121             if len(j) == 1:
122                 j = "0%s" % j
123             returnList1.append(j)
124             returnList1.append(i)
125             if i==input:
126                 returnList1.append("selected")
127             else:
128                 returnList1.append("")
129             returnList.append(returnList1)
130         return returnList
131         
132     def fillRepeated(self,param):
133         print "fillRepeated",param
134         repeated = param or 0
135         repeated = int(repeated)
136         
137         self.lut = {"Name":0
138           ,"Value":1
139           ,"Description":2
140           ,"Selected":3
141           }
142         
143         mo = ["mo",   1, "Mo "]#"Monday"]
144         tu = ["tu",   2, "Tu "]#"Tuesday"]
145         we = ["we",   4, "We "]#"Wednesday"]
146         th = ["th",   8, "Th "]#"Thursday"]
147         fr = ["fr",  16, "Fr "]#"Friday"]
148         sa = ["sa",  32, "Sa "]#"Saturday"]
149         su = ["su",  64, "Su "]#"Sunday"]
150         mf = ["mf",  31, "Mo-Fr"]
151         ms = ["ms", 127, "Mo-Su"]
152         
153         if repeated == 127:
154             repeated = repeated - 127
155             ms.append("checked")
156         else:
157             ms.append("")
158         
159         if repeated >= 64:
160             repeated = repeated - 64
161             su.append("checked")
162         else:
163             su.append("")
164         
165         if repeated >= 32:
166             repeated = repeated - 32
167             sa.append("checked")
168         else:
169             sa.append("")
170         
171         if repeated == 31:
172             repeated = repeated - 31
173             mf.append("checked")
174         else:
175             mf.append("")
176
177         if repeated >= 16:
178             repeated = repeated - 16
179             fr.append("checked")
180         else:
181             fr.append("")
182
183         if repeated >= 8:
184             repeated = repeated - 8
185             th.append("checked")
186         else:
187             th.append("")
188         
189         if repeated >= 4:
190             repeated = repeated - 4
191             we.append("checked")
192         else:
193             we.append("")
194         
195         if repeated >= 2:
196             repeated = repeated - 2
197             tu.append("checked")
198         else:
199             tu.append("")
200         
201         if repeated == 1:
202             repeated = repeated - 1
203             mo.append("checked")
204         else:
205             mo.append("")
206             
207         returnList = []
208         returnList.append(mo)
209         returnList.append(tu)
210         returnList.append(we)
211         returnList.append(th)
212         returnList.append(fr)
213         returnList.append(sa)
214         returnList.append(su)
215         returnList.append(mf)
216         returnList.append(ms)
217
218         return returnList
219     
220     def serviceList(self,param):
221         print "serviceList: ",param
222         sRef = str(param["sRef"])
223         bouquet = str(param["bouquet"])
224         returnList = []
225         sRefFound = 0
226         
227         if bouquet == '':
228             bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'
229         ref = eServiceReference(bouquet)
230         self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
231         self.servicelist.setRoot(ref)
232         for (ref2, name) in self.servicelist.getServicesAsList():
233             print "ref2: (",ref2, ") name: (",name,")"
234             returnListPart = []
235             returnListPart.append(name)
236             returnListPart.append(ref2)
237             if ref2 == str(sRef):
238                 returnListPart.append("selected")
239                 sRefFound = 1
240             else:
241                 returnListPart.append("")
242             returnList.append(returnListPart)
243
244         if sRefFound == 0 and sRef != '':
245             returnListPart = ["Inserted", sRef, "selected"]
246             returnList.append(returnListPart)
247         #print returnList
248         return returnList
249
250     def getServiceList(self, ref):
251         self.servicelist.root = ref
252
253     def locationList(self,param):
254         print "locationList",param
255         dirname = param
256         lst = config.movielist.videodirs.value
257         if not dirname:
258             dirname = "/hdd/movie/"
259         if not dirname in lst:
260             lst = [dirname] + lst
261         returnList = [[lst[i], i, dirname == lst[i] and "selected" or ""] for i in range(len(lst))]
262         return returnList
263
264     def tagList(self,param):
265         print "tagList",param
266         tag = param
267         try:
268             file = open("/etc/enigma2/movietags")
269             taglist = [x.rstrip() for x in file.readlines()]
270             while "" in taglist:
271                 taglist.remove("")
272             file.close()
273         except IOError, ioe:
274             taglist = []
275         if not tag in taglist:
276             taglist = [tag]+taglist
277         if not "" in taglist:
278             taglist.append("")
279         returnList = [[taglist[i], i, tag == taglist[i] and "selected" or ""] for i in range(len(taglist))]
280         return returnList
281
282     def fillOptionList(self,param):
283         print "fillOptionList",param
284         returnList = []
285         if param.has_key("justplay"):
286             number = param["justplay"] or 0
287             number = int(number)
288             returnList.append(["Record",0,number==0 and "selected" or ""])
289             returnList.append(["Zap",1,number==1 and "selected" or ""])
290         elif param.has_key("afterevent"):
291             number = param["afterevent"] or 0
292             number = int(number)
293             returnList.append(["Nothing",0,number==0 and "selected" or ""])
294             returnList.append(["Standby",1,number==1 and "selected" or ""])
295             returnList.append(["Deepstandby/Shutdown",2,number==2 and "selected" or ""])
296             returnList.append(["Auto",3,number==3 and "selected" or ""])
297         return returnList
298     
299     def deleteOldSaved(self,param):
300         print "deleteOldSaved",param
301         returnList = []
302         returnList.append(["deleteOldOnSave",param["deleteOldOnSave"],""])
303         returnList.append(["command",param["command"],""])
304         if int(param["deleteOldOnSave"]) == 1:
305             returnList.append(["channelOld",param["sRef"],""])
306             returnList.append(["beginOld",param["begin"],""])
307             returnList.append(["endOld",param["end"],""])
308         return returnList
309             
310     
311     def fillValue(self,param):
312         print "fillValue: ",param
313         return [["",param,""]]
314
315     def getText(self):
316         (result,text) = self.result
317         return text
318     
319     def filterXML(self, item):
320         item = item.replace("&", "&amp;").replace("<", "&lt;").replace('"', '&quot;').replace(">", "&gt;")
321         return item
322
323     def getList(self):
324         return self.result
325
326     text = property(getText)
327     list = property(getList)