Commits

Moreno Cunha committed 05122f6

Added thread function

Comments (0)

Files changed (3)

twitnerario/apps/core/RepeatTimer.py

+# Copyright (c) 2009 Geoffrey Foster
+# 
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+# 
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+ 
+from threading import Event, Thread
+ 
+class RepeatTimer(Thread):
+    def __init__(self, interval, function, iterations=0, args=[], kwargs={}):
+        Thread.__init__(self)
+        self.interval = interval
+        self.function = function
+        self.iterations = iterations
+        self.args = args
+        self.kwargs = kwargs
+        self.finished = Event()
+ 
+    def run(self):
+        count = 0
+        while not self.finished.is_set() and (self.iterations <= 0 or count < self.iterations):
+            self.finished.wait(self.interval)
+            if not self.finished.is_set():
+                self.function(*self.args, **self.kwargs)
+                count += 1
+ 
+    def cancel(self):
+        self.finished.set()

twitnerario/apps/core/tweet.py

     regs=Registros.objects.filter(horas=h, minutos=m).order_by('ponto')
     previsoes_xml={}
     pnt=''
+    tweet=[]
+    if regs:
+        return tweet
+    
     for reg in regs:
         if pnt != reg.ponto:
             prev=previsao(reg.ponto,reg.linha)
             previsoes_xml.update({reg.ponto:prev})
         pnt=reg.ponto
     
-    tweet=[]
     pontos=uniq(regs.values_list('ponto'))
     for ponto in pontos:
         linhas=uniq(regs.filter(ponto=ponto[0]).values_list('linha'))
         return '@'+str(twitter)+' seu ônibus vai passar '+primeiro+' e daqui a '+str(horario[1])+' minutos às '+addminutes(horario[1])
             
     else:
-        return '@'+str(twitter)+' seu ônibus vai passar daqui a '+primeiro
+        return '@'+str(twitter)+' seu ônibus vai passar '+primeiro
 
 #
 # Envia Tweets
     h=int(strftime("%H"))
     m=int(strftime("%M"))
     tweets=create_tweets(h,m)
+    if tweets:
+        return False
     #tweets=create_tweets(23,00)
     api=twitter.Api(consumer_key='GjDAsmaMQdZdli8pDXA',consumer_secret='lONZF93DzyXPB5974GxbUmqLxyvA9ZG3bXUoliYhG8', access_token_key='397486100-T13Va0sXGROGkNpzLZBpZrZdvl2xycyJWpov4cWV',access_token_secret='5F5ExGiDQM770mQKPTai3pAlq2A9ockVsK5oqtcwM')
     for tweet in tweets:
         api.PostUpdate(tweet)
 
 #
+# Envia Tweets Thread
+#
+@cronjobs.register
+def send_tweets_thread():
+    r=RepeatTimer(900.0,send_tweets)
+    r.start()
+#
 # Previsao
 #
 def previsao(ponto,linha):

twitnerario/meuonibus.db

Binary file modified.