Ejemplo n.º 1
0
def fetch_new_alarms():
    fetch_count = 0 
    alarms = Alarm.fetch_online(cancel=False)       
    if Alarm.objects.filter(url=alarms[0]['url']).count() > 0:
        return 0
    all_areas = City.get_all_areas()
    cities_below = {}
    for am in reversed(alarms):
        #print am['color_id'],am['title'],am['url'],am['pub_time']
        url = am['url']
        if Alarm.objects.filter(url=url).count()>0:                
            continue            
        alarm_obj =Alarm()
        for key,val in am.iteritems():        
            setattr(alarm_obj,key,val)        
        title = am['title']
        for code,area in all_areas:
            if area in title:
                alarm_obj.area_code = code
                break    
        else:        
            raise ValueError(u'%s failed to match any areas' % title)        
        #匹配城市
        if len(code) < 9:
            title = title[len(area):-1]
            if not cities_below.has_key(code):
                cities_below[code] = City.get_below_cities(code)                
            for cid,city in cities_below[code]:
                #print code,cid,city            
                if city in title:
                    alarm_obj.area_code = cid
                    break
            
        #print alarm_obj.area_code,alarm_obj.title
        alarm_obj.save()
        fetch_count+=1
        Log(level=1,event="new alarm:%s-%s(%s)" % (
        alarm_obj.title,alarm_obj.pub_time,alarm_obj.area_code)).save()
        
    return fetch_count