Esempio n. 1
0
 def __init__(self):
     self.asset_mgr = AssetManager(DB_LOCATION)
     self.event_mgr = EventManager(DB_LOCATION)
Esempio n. 2
0
class Controller(object):

    def __init__(self):
        self.asset_mgr = AssetManager(DB_LOCATION)
        self.event_mgr = EventManager(DB_LOCATION)

    def get_events_assets(self, request):
        date_filter = request.POST.get('dateFilter')
        region_filter = request.POST.get('regionFilter')
        type_filter = request.POST.get('type')
        print date_filter, region_filter, type_filter
        if type_filter.lower() == 'events':
            if date_filter and region_filter:
                events = []
                for event in self.event_mgr.get_events_by_date_region(date_filter, region_filter):
                    events.append({'event': event.__dict__})
                print events
                return {'assets':[], 'events': events, 'response': 'success'}
        elif type_filter.lower() =='assets':
            if region_filter:
                assets = []
                for asset in self.asset_mgr.get_assets_by_region(region_filter):
                    assets.append({'asset': asset.__dict__})
                print assets
                return {'assets':assets, 'events': [], 'response': 'success'}
        return {'assets':[], 'events': [], 'response': 'failed'}

    def retrieve_data(self, request):
        data_type = request.POST.get('type')
        if data_type == 'event':
            return self.retrieve_assets_by_event(request)
        elif data_type == 'asset':
            return self.retrieve_events_by_asset(request)
        return {}

    def retrieve_assets_by_event(self, request):
        print 'retrieve_assets_by_event'
        assets = []
        events = []
        country = request.POST.get('country')
        lat = request.POST.get('lat')
        lng = request.POST.get('lng')
        date = request.POST.get('date')
        distance_filter = request.POST.get('distance')
        if country and lat and lng and distance_filter:
            region = [key for key, value in REGIONS.iteritems() if country in value]
            if region:
                for asset in self.asset_mgr.get_assets_by_region(region[0]):
                    distance = get_distance(float(lat), float(lng), asset.lat, asset.lng)
                    if distance <= float(distance_filter):
                        assets.append({'asset': asset.__dict__,
                                      'distance': distance})
                for event in self.event_mgr.get_events_by_date_region(date, region[0]):
                    distance = get_distance(float(lat), float(lng), event.lat, event.lng)
                    if distance <= float(distance_filter):
                        events.append({'event': event.__dict__,
                                      'distance': distance})
        if assets:
            assets.sort(key=lambda x:x.get('distance'))
        return {'assets':assets, 'events': events, 'response': 'success'}

    def retrieve_events_by_asset(self, request):
        print 'retrieve_assets_by_event'
        assets = [] 
        events = []
        country = request.POST.get('country')
        lat = request.POST.get('lat')
        lng = request.POST.get('lng')
        date = request.POST.get('date')
        distance_filter = request.POST.get('distance')
        if country and lat and lng and distance_filter:
            region = [key for key, value in REGIONS.iteritems() if country in value]
            if region:
                for asset in self.asset_mgr.get_assets_by_region(region[0]):
                    distance = get_distance(float(lat), float(lng), asset.lat, asset.lng)
                    if distance <= float(distance_filter):
                        assets.append({'asset': asset.__dict__,
                                      'distance': distance})
                for event in self.event_mgr.get_events_by_date_region(date, region[0]):
                    distance = get_distance(float(lat), float(lng), event.lat, event.lng)
                    if distance <= float(distance_filter):
                        events.append({'event': event.__dict__,
                                      'distance': distance})
        if events:
            events.sort(key=lambda x:x.get('distance'))
        return {'assets':assets, 'events': events, 'response': 'success'}