Show
Ignore:
Timestamp:
11/28/08 18:48:18 (22 months ago)
Author:
cfreeze@…
Parents:
189:8190540dae37 (diff), 185:c20e85874308 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Branch:
default
Message:

correct merge problems that are showing up from bad branching

Location:
StormSiren
Files:
1 removed
3 modified

Legend:

Unmodified
Added
Removed
  • StormSiren/StormConfig.py

    r184 r190  
    6464                self.__states          = [] 
    6565                self.devices           = [] 
    66                 self.__history_file    = '' 
     66                self.__history_file  = self.config_dir + '/' + __APPNAME__ + '.history' 
     67                self.log               = logging.getLogger('StormConfig') 
    6768                self.__max_history     = History.DEFAULT_MAX_HISTORICAL_EVENTS 
    68                 self.__history_file    = self.config_dir + '/' + __APPNAME__ + '.history' 
    69                 self.log               = logging.getLogger('StormConfig') 
    70  
    71                 self.log.setLevel(logging.INFO) 
    72  
    73                 self._load() 
     69                self.__proxy           = '' 
     70 
     71                self.log.setLevel(logging.DEBUG) 
     72                self._load() 
    7473 
    7574        def _load(self): 
     
    8887 
    8988                xstates = self.getRequired('main','states') 
    90                 if xstates: 
     89                if(xstates): 
    9190                         self.__states = string.split(xstates, ',') 
     91 
     92                self.__proxy = self.get('main','proxy', None) 
    9293 
    9394                num_watchers = self.getRequired('main','watchers') 
     
    143144                                if(jabber_available): 
    144145                                        to = self.getRequired(str(i),"to") 
    145                                         self.devices.append(JabberAlertDevice(to,jabberInfo,alerts,areas)) 
     146                                        wait_time = int(self.getRequired(str(i),"wait_time")) 
     147                                        self.devices.append(MythtvAlertDevice(MythtvAlertDeviceInfo(to,wait_time),alerts,areas)) 
    146148                                        self.log.debug("Adding jabber device") 
    147149                                else: 
    148150                                        self.log.error("Jabber Support Not Enabled, but Jabber Device Requested!") 
     151                        if(dev == "media"): 
     152                                self.devices.append(MediaAlertDevice(mediaInfo,alerts,areas)) 
     153                                self.log.debug("Adding media device") 
     154                        if(dev == "execution"): 
     155                                self.devices.append(ExecutionAlertDevice(exeInfo,alerts,areas)) 
     156                                self.log.debug("Adding execution device") 
    149157                        if(dev == "osd"): 
    150158                                if(not osdLoadAttempted): 
     
    166174                                                                                                                                                        font), 
    167175                                                                                                                alerts,areas)) 
    168                                         self.log.debug("Adding OSD device") 
     176                                        self.log.debug("Adding jabber device") 
    169177                                else: 
    170178                                        self.log.error("OSD Support Not Enabled, but OSD Device Requested!") 
    171179                        if(dev == "mythtv"): 
    172                                 to = self.getRequired(str(i),"to") 
    173                                 wait_time = int(self.getRequired(str(i),"wait_time")) 
    174                                 self.devices.append(MythtvAlertDevice(MythtvAlertDeviceInfo(to,wait_time),alerts,areas)) 
    175                                 self.log.debug("Adding MythTv device") 
    176                         if(dev == "media"): 
    177                                 self.devices.append(MediaAlertDevice(mediaInfo,alerts,areas)) 
    178                                 self.log.debug("Adding media device") 
    179                         if(dev == "execution"): 
    180                                 self.devices.append(ExecutionAlertDevice(exeInfo,alerts,areas)) 
    181                                 self.log.debug("Adding execution device") 
     180                                to = self.getRequired(str(i),"to") 
     181                                wait_time = int(self.getRequired(str(i),"wait_time")) 
     182                                self.devices.append(MythtvAlertDevice(MythtvAlertDeviceInfo(to,wait_time),alerts,areas)) 
     183                                self.log.debug("Adding mythtv device") 
    182184 
    183185        def __str__(self): 
     
    185187                str += "\n\t".join(self.__states) 
    186188 
    187                 str += "\nHistory: %i\n" % self.max_history 
     189                str += "\nProxy: %s" % self.proxy 
     190                str += "\nHistory: %i" % self.max_history 
    188191                str += "\nDevices: %i\n" % len(self.devices) 
    189192 
     
    230233                return self.__max_history 
    231234 
     235        def getProxy(self): 
     236                return self.__proxy 
     237 
    232238        debug = property(getDebug,None,None) 
    233239        max_history = property(getMaxHistory,None,None) 
     240        proxy = property(getProxy,None,None) 
  • StormSiren/StormWeather.py

    r184 r190  
    4848from WeatherAlert import * 
    4949from XmlWeather import * 
    50 from CAP import CAP 
    5150 
    5251class StormWeather(XmlWeather): 
    53         def __init__(self, state, history, simfetch = False, simalert = False): 
    54                 super(StormWeather,self).__init__(state,history,simfetch) 
     52        def __init__(self, state, history, simfetch = False, simalert = False, proxy = None): 
     53                super(StormWeather,self).__init__(state,simfetch,proxy) 
    5554                self.log = logging.getLogger("StormWeather") 
    5655                self.__alert_devs = [] 
    5756                self.__simalert = simalert 
     57                self.__history = history 
    5858 
    5959                self.log.setLevel(logging.INFO) 
    6060         
    61         def display(self): 
    62                 return self.__str__() 
    63  
    6461        def __str__(self): 
    6562                str  = "StormWeather: " + "\n" 
     
    7269                return str 
    7370 
    74         def display(self): 
    75                 print self.__str__() 
    76  
    7771        def registerDevice(self, dev): 
    7872                self.log.debug("Registering Device") 
    7973                self.__alert_devs.append(dev) 
    8074 
    81         def handleAlert(self, cap_item): 
    82                 alerted = False 
     75        def logAtomShort(self, cap_atom): 
     76                self.log.info("---------CAP ATOM---------") 
     77                for l in (cap_atom.__str__().split('\n')): 
     78                        self.log.info(l) 
     79                self.log.info("---------CAP ATOM---------") 
    8380 
    84                 for dev in self.__alert_devs: 
    85                         if(dev.isAlertWanted(cap_item)): 
    86                                 if(not self.__simalert): 
    87                                         dev.send(WeatherAlert(cap_item)) 
    88                                         alerted = True 
    89                                 else: 
    90                                         self.log.info("Simulated Alert on: %s" % cap_item.id) 
     81        def logAtomFull(self, cap_atom): 
     82                self.log.info("---------CAP ATOM---------") 
     83                for l in (cap_atom.__str__().split('\n')): 
     84                        self.log.info(l) 
     85                self.log.info("========DESCRIPTION=======") 
     86                if(cap_atom.description): 
     87                        for l in (cap_atom.description.split('\n')): 
     88                                self.log.info(l) 
     89                self.log.info("========DESCRIPTION=======") 
     90                self.log.info("---------CAP ATOM---------") 
    9191 
    92                 return alerted 
     92        def handleAtom(self, cap_atom): 
     93                self.logAtomShort(cap_atom) 
     94                if(not self.__history.exists(cap_atom.id)): 
     95                        for dev in self.__alert_devs: 
     96                                if(dev.isAlertWanted(cap_atom)): 
     97                                        if(not self.__simalert): 
     98                                                cap_atom.expand(self.simfetch,self.proxy) 
     99                                                self.logAtomFull(cap_atom) 
     100                                                dev.send(cap_atom) 
     101                                                self.__history.add(cap_atom.id) 
     102                                        else: 
     103                                                self.log.info("Simulated Alert on: %s" % cap_atom.id) 
     104                else: 
     105                        self.log.debug("Ignoring %s: Already alerted on" % cap_atom.id) 
  • StormSiren/XmlWeather.py

    r184 r190  
    4242""" 
    4343 
    44 import urllib 
    4544import logging 
    46 import sys 
    47 from xml.dom import minidom 
    4845 
    4946from WeatherTypes import * 
    50 from CAP import CAP 
     47from XmlFetcher import * 
     48from WeatherAlert import WeatherAlert 
    5149 
    5250class XmlWeather(object): 
    53         def __init__(self, state, history, simfetch = False): 
     51        def __init__(self, state, simfetch = False, proxy = None): 
    5452                super(XmlWeather,self).__init__() 
    5553                self.__data       = '' 
    5654                self.__state      = state 
    5755                self.__dom        = [] 
    58                 self.__baseurl    = 'http://www.weather.gov/alerts/' 
    59                 self.__namespace  = 'http://purl.org/dc/elements/1.1/' 
    60                 self.__url        = self.__baseurl + self.__state.lower() + ".cap"  
    61                 self.__tag_item   = 'cap:info' 
    62                 self.__history    = history 
     56                self.__baseurl    = 'http://www.weather.gov/wwarss-tst/' 
     57                self.__url        = self.__baseurl + self.__state.lower() + ".php?x=0"  
     58                self.__tag_item   = 'entry' 
    6359                self.__simfetch   = simfetch 
    64                 self.log = logging.getLogger("XmlWeather") 
     60                self.__proxy      = proxy 
     61                self.__atoms      = XmlFetcher(self.__url, self.__simfetch, self.__proxy) 
     62                self.log          = logging.getLogger("XmlWeather") 
    6563 
    6664                self.log.setLevel(logging.DEBUG) 
     
    7472 
    7573        def __fetch(self): 
    76                 self.log.info("Fetching: " + self.__url) 
    77                 try: 
    78                         if(self.__simfetch): 
    79                                 self.log.info("Simulating fetch using examples directory") 
    80                                 self.__dom = minidom.parse("examples/" + self.__state.lower() + ".cap") 
    81                         else: 
    82                                 self.__dom = minidom.parse(urllib.urlopen(self.__url)) 
    83                 except IOError,e: 
    84                         # No net connection available, exit. 
    85                         self.log.error("Internet connection not available?, exiting: %s" % e) 
    86                         sys.exit() 
     74                self.__dom = self.__atoms.fetch() 
    8775 
    8876        def __str__(self): 
    8977                str  = "XmlWeather:\n" + \ 
     78                                "SimFetch: " + self.__simfetch + "\n" + \ 
     79                                "Proxy: " + self.__proxy + "\n" + \ 
    9080                                "State: " + self.__state + "\n" + \ 
    9181                                "URL: " + self.__url + "\n" 
    92  
    93                 if(self.__simfetch): 
    94                         str += "Sim Fetch: yes\n" 
    95                 else: 
    96                         str += "Sim Fetch: no\n" 
    9782                return str 
    9883 
     
    10287        def __parse(self): 
    10388                for capXmlText in self.__dom.getElementsByTagName(self.__tag_item): 
    104                         cap_item = CAP(capXmlText, self.__state) 
    105                         #cap_item.display() 
    106                         if(not self.__history.exists(cap_item.id)): 
    107                                 alerted = self.handleAlert(cap_item) 
    108                                 if(alerted): 
    109                                         self.__history.add(cap_item.id) 
    110                         else: 
    111                                 self.log.debug("Ignoring %s: Already alerted on" % cap_item.id) 
     89                        self.handleAtom(WeatherAlert(capXmlText, self.__state)) 
    11290 
     91        def getSimFetch(self): 
     92                return self.__simfetch 
    11393 
    114         def handleAlert(self,cap_item): 
    115                 self.log.debug("handleAlert(%s) - %s/%s" % (cap_item.id, cap_item.county, cap_item.state)) 
    116                 return True 
     94        simfetch = property(getSimFetch,None,None) 
     95 
     96        def getProxy(self): 
     97                return self.__proxy 
     98 
     99        proxy = property(getProxy,None,None)