Add webwml time query response
authorGerfried Fuchs <rhonda@debian.at>
Wed, 11 Feb 2009 18:26:23 +0000 (19:26 +0100)
committerJoerg Jaspert <joerg@debian.org>
Wed, 11 Feb 2009 20:14:16 +0000 (21:14 +0100)
Dak/config.py
Dak/plugin.py

index e38df9b..a029e38 100644 (file)
@@ -31,4 +31,7 @@ conf.registerGlobalValue(Dak, 'channel',
 conf.registerGlobalValue(Dak, 'dinstallminute',
                          registry.NonNegativeInteger(52, """At which minute does DINSTALL start?"""))
 
+conf.registerGlobalValue(Dak, 'webwmlminute',
+                         registry.NonNegativeInteger(24, """At which minute does webwml start?"""))
+
 # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
index a7ce2c3..d370b5a 100644 (file)
@@ -1,6 +1,7 @@
 ###
 # Copyright (c) 2008, Joerg Jaspert <joerg@debian.org>
 # Copyright (c) 2008, Thomas Viehmann
+# Copyright (c) 2009, Gerfried Fuchs <rhonda@debian.at>
 # GPL v2 (not later)
 ###
 
@@ -31,6 +32,8 @@ class Dak(callbacks.Plugin):
         self.fname = "dinstallcheck"
         self.dinstallhour = [1, 7, 13, 19]
         self.dinstallmin = self.registryValue('dinstallminute')
+        self.webwmlhour = [3, 7, 11, 15, 19, 23]
+        self.webwmlmin = self.registryValue('webwmlminute')
         self.warntime=10
         self.dinstallduration=4
         self.channel = self.registryValue('channel')
@@ -282,6 +285,51 @@ class Dak(callbacks.Plugin):
 
     setlastnew = wrap(setlastnew)
 
+    def webwml(self, irc, msg, args):
+        """takes no arguments
+
+        Returns the time until next webwml run
+        """
+
+        def deltatime(start, stop):
+            def toSeconds(timeString):
+                hour, min, sec = map(int, timeString.split(':'))
+                return (hour * 60 + min) * 60 + sec
+            d_time_min, d_time_sec = divmod(toSeconds(stop) - toSeconds(start), 60)
+            d_time_hr, d_time_min = divmod(d_time_min, 60)
+            return '%dhr %dmin %ssec' % (d_time_hr % 24, d_time_min, d_time_sec)
+
+        (year, month, day, hour, minute, second, undef, undef, undef) = time.gmtime()
+
+        log.debug("The latest run is at %s:%s" % (self.webwmlhour[-1], self.webwmlmin))
+        log.debug("I think we now have %s:%s" % (hour, minute))
+
+        newhour = hour
+        if minute >= self.webwmlmin and newhour in self.webwmlhour:
+            # If we already passed webwmlminute, we are running and want the next runtime.
+            log.debug("We are past this hours webwml run already")
+            newhour+=1
+
+        if newhour > self.webwmlhour[-1]:
+            log.debug("We are also past the last webwml run for today")
+            # We are past the last webwml today, so next one must be the first tomorrow, start searching at midnight
+            newhour = self.webwmlhour[0]
+        else:
+            while newhour not in self.webwmlhour:
+                newhour+=1
+                log.debug("Looking at possible hour %s" % (newhour))
+                if newhour > 23:
+                    newhour=0
+
+        log.debug("I found that next webwml run will be at %s:%s" % (newhour, self.webwmlmin))
+
+        start="%s:%s:%s" % (hour, minute, second)
+        stop="%s:%s:00" % (newhour, self.webwmlmin)
+        difference=deltatime(start, stop)
+        irc.reply("I guess the next webwml run will be in %s" % (difference))
+    webwml = wrap(webwml)
+
+
 Class = Dak
 
 # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: