def compile_events(): try: with current_app.test_request_context(): print "[+] Starting events cache reset..." cache = Cache(config={'CACHE_TYPE': 'redis', 'CACHE_REDIS_DB': 0}) cache.init_app(current_app) url = current_app.config['UFRAME_ASSETS_URL'] + '/events' payload = requests.get(url) if payload.status_code is 200: data = payload.json() events = _compile_events(data) if "error" not in events: cache.set('event_list', events, timeout=CACHE_TIMEOUT) print "[+] Events cache reset." else: print "[-] Error in cache update" except Exception as err: message = 'compile_cam_images exception: %s' % err.message current_app.logger.warning(message)
def get_events(): ''' -- M@C 05/12/2015 Added to support event query on stream data. ''' try: ''' Listing GET request of all events. This method is cached for 1 hour. ''' data = {} cached = cache.get('event_list') if cached: data = cached else: url = current_app.config['UFRAME_ASSETS_URL']\ + '/%s' % 'events' payload = requests.get(url) data = payload.json() if payload.status_code != 200: return jsonify({"events": payload.json()}), payload.status_code data = _compile_events(data) if "error" not in data: cache.set('event_list', data, timeout=CACHE_TIMEOUT) if request.args.get('ref_des') and request.args.get('ref_des') != "": ref_des = request.args.get('ref_des') resp = get_events_by_ref_des(data, ref_des) return resp if request.args.get('search') and request.args.get('search') != "": return_list = [] ven_set = [] ven_subset = [] search_term = str(request.args.get('search')).split() search_set = set(search_term) for subset in search_set: if len(return_list) > 0: if len(ven_set) > 0: ven_set = deepcopy(ven_subset) else: ven_set = deepcopy(return_list) ven_subset = [] for item in return_list: if subset.lower() in str(item['eventClass']).lower(): ven_subset.append(item) elif subset.lower() in str(item['id']).lower(): ven_subset.append(item) elif subset.lower() in str(item['startDate']).lower(): ven_subset.append(item) data = ven_subset else: for item in data: if subset.lower() in str(item['eventClass']).lower(): return_list.append(item) elif subset.lower() in str(item['id']).lower(): return_list.append(item) elif subset.lower() in str(item['startDate']).lower(): return_list.append(item) data = return_list result = jsonify({'events': data}) return result except requests.exceptions.ConnectionError as e: error = "Error: Cannot connect to uframe. %s" % e print error return make_response(error, 500)