change uri of parse call from /autotimer?parse= to /autotimer/parse
authorMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Fri, 6 Nov 2009 18:22:43 +0000 (18:22 +0000)
committerMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Fri, 6 Nov 2009 18:22:43 +0000 (18:22 +0000)
/autotimer displays a more webif friendly version of the config now

autotimer/src/AutoTimer.py
autotimer/src/AutoTimerConfiguration.py
autotimer/src/AutoTimerResource.py
autotimer/src/webinterface/AutoTimer.py

index d75c60a..b5919f8 100644 (file)
@@ -1,7 +1,7 @@
 # Plugins Config
 from xml.etree.cElementTree import parse as cet_parse
 from os import path as os_path
-from AutoTimerConfiguration import parseConfig, writeConfig
+from AutoTimerConfiguration import parseConfig, buildConfig
 
 # Navigation (RecordTimer)
 import NavigationInstance
@@ -100,8 +100,13 @@ class AutoTimer:
                )
                self.uniqueTimerId = len(self.timers)
 
+       def getXml(self):
+               return buildConfig(self.defaultTimer, self.timers, webif = True)
+
        def writeXml(self):
-               writeConfig(XML_CONFIG, self.defaultTimer, self.timers)
+               file = open(XML_CONFIG, 'w')
+               file.writelines(buildConfig(self.defaultTimer, self.timers))
+               file.close()
 
 # Manage List
 
index 3000376..e490650 100644 (file)
@@ -476,7 +476,7 @@ def parseConfigOld(configuration, list, uniqueTimerId = 0):
                                tags = tags
                ))
 
-def writeConfig(filename, defaultTimer, timers):
+def buildConfig(defaultTimer, timers, webif = False):
        # Generate List in RAM
        list = ['<?xml version="1.0" ?>\n<autotimer version="', CURRENT_CONFIG_VERSION, '">\n\n']
 
@@ -531,17 +531,30 @@ def writeConfig(filename, defaultTimer, timers):
        # Close still opened defaults tag
        list.append('>\n')
 
-       # Services
-       for serviceref in defaultTimer.services:
-               list.extend(('  <serviceref>', serviceref, '</serviceref>'))
-               ref = ServiceReference(str(serviceref))
-               list.extend((' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n'))
+       if webif:
+               # Services + Bouquets
+               for serviceref in defaultTimer.services + defaultTimer.bouquets:
+                       ref = ServiceReference(str(serviceref))
+                       list.extend((
+                               '  <e2service>\n',
+                               '   <e2servicereference>', str(serviceref), '</e2servicereference>\n',
+                               '   <e2servicename>', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), '</e2servicename>\n',
+                               '  </e2service>\n',
+                       ))
+       else:
+               # Services
+               for serviceref in defaultTimer.services:
+                       ref = ServiceReference(str(serviceref))
+                       list.extend(('  <serviceref>', serviceref, '</serviceref>',
+                                               ' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n',
+                       ))
 
-       # Bouquets
-       for bouquet in defaultTimer.bouquets:
-               list.extend(('  <bouquet>', str(bouquet), '</bouquet>'))
-               ref = ServiceReference(str(bouquet))
-               list.extend((' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n'))
+               # Bouquets
+               for bouquet in defaultTimer.bouquets:
+                       ref = ServiceReference(str(bouquet))
+                       list.extend(('  <bouquet>', str(bouquet), '</bouquet>',
+                                               ' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n',
+                       ))
 
        # AfterEvent
        if defaultTimer.hasAfterEvent():
@@ -647,17 +660,30 @@ def writeConfig(filename, defaultTimer, timers):
                # Close still opened timer tag
                list.append('>\n')
 
-               # Services
-               for serviceref in timer.services:
-                       list.extend(('  <serviceref>', serviceref, '</serviceref>'))
-                       ref = ServiceReference(str(serviceref))
-                       list.extend((' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n'))
-
-               # Bouquets
-               for bouquet in timer.bouquets:
-                       list.extend(('  <bouquet>', str(bouquet), '</bouquet>'))
-                       ref = ServiceReference(str(bouquet))
-                       list.extend((' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n'))
+               if webif:
+                       # Services + Bouquets
+                       for serviceref in timer.services + timer.bouquets:
+                               ref = ServiceReference(str(serviceref))
+                               list.extend((
+                                       '  <e2service>\n',
+                                       '   <e2servicereference>', str(serviceref), '</e2servicereference>\n',
+                                       '   <e2servicename>', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), '</e2servicename>\n',
+                                       '  </e2service>\n',
+                               ))
+               else:
+                       # Services
+                       for serviceref in timer.services:
+                               ref = ServiceReference(str(serviceref))
+                               list.extend(('  <serviceref>', serviceref, '</serviceref>',
+                                                       ' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n',
+                               ))
+
+                       # Bouquets
+                       for bouquet in timer.bouquets:
+                               ref = ServiceReference(str(bouquet))
+                               list.extend(('  <bouquet>', str(bouquet), '</bouquet>',
+                                                       ' <!-- ', stringToXML(ref.getServiceName().replace('\xc2\x86', '').replace('\xc2\x87', '')), ' -->\n',
+                               ))
 
                # AfterEvent
                if timer.hasAfterEvent():
@@ -704,9 +730,5 @@ def writeConfig(filename, defaultTimer, timers):
        # End of Configuration
        list.append('</autotimer>\n')
 
-       # Save to Flash
-       file = open(filename, 'w')
-       file.writelines(list)
-
-       file.close()
+       return list
 
index c959f50..c0d34dd 100644 (file)
@@ -2,38 +2,30 @@ from twisted.web import http, resource
 from AutoTimer import AutoTimer
 from . import _
 
-# pretty basic resource which is just present to have a way to start a
-# forced run through the webif
-class AutoTimerResource(resource.Resource):
-       def __init__(self):
-               resource.Resource.__init__(self)
-
-       def render(self, req):
+class AutoTimerBaseResource(resource.Resource):
+       def getAutoTimerInstance(self):
                from plugin import autotimer
-
-               remove = False
-               res = False
                if autotimer is None:
-                       autotimer = AutoTimer()
-                       remove = True
+                       self._remove = True
+                       return AutoTimer()
+               self._remove = False
+               return autotimer
 
-               if req.args.has_key("parse"):
-                       ret = autotimer.parseEPG()
-                       output = _("Found a total of %d matching Events.\n%d Timer were added and %d modified.") % (ret[0], ret[1], ret[2])
-                       res = True
-               else:
-                       output = "unknown command"
+class AutoTimerDoParseResource(AutoTimerBaseResource):
+       def render(self, req):
+               autotimer = self.getAutoTimerInstance()
+               ret = autotimer.parseEPG()
+               output = _("Found a total of %d matching Events.\n%d Timer were added and %d modified.") % (ret[0], ret[1], ret[2])
 
-               if remove:
+               if self._remove:
                        autotimer.writeXml()
-                       autotimer = None
 
                result = """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
                        <e2simplexmlresult>
-                               <e2state>%s</e2state>
+                               <e2state>true</e2state>
                                <e2statetext>%s</e2statetext>
                        </e2simplexmlresult>
-                       """ % ('true' if res else 'false', output)
+                       """ % (output)
        
                req.setResponseCode(http.OK)
                req.setHeader('Content-type', 'application; xhtml+xml')
@@ -41,3 +33,13 @@ class AutoTimerResource(resource.Resource):
                
                return result
 
+class AutoTimerListAutoTimerResource(AutoTimerBaseResource):
+       def render(self, req):
+               autotimer = self.getAutoTimerInstance()
+
+               # show xml
+               req.setResponseCode(http.OK)
+               req.setHeader('Content-type', 'application; xhtml+xml')
+               req.setHeader('charset', 'UTF-8')
+               return ''.join(autotimer.getXml())
+
index cd9c3d0..3b9cce8 100644 (file)
@@ -1,5 +1,8 @@
 from Plugins.Extensions.WebInterface.WebChilds.Toplevel import addExternalChild
-from Plugins.Extensions.AutoTimer.AutoTimerResource import AutoTimerResource
+from Plugins.Extensions.AutoTimer.AutoTimerResource import AutoTimerDoParseResource, \
+       AutoTimerListAutoTimerResource
 
-addExternalChild( ("autotimer", AutoTimerResource()) )
+root = AutoTimerListAutoTimerResource()
+root.putChild('parse', AutoTimerDoParseResource())
+addExternalChild( ("autotimer", root ) )