diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index 25492ee..d2bc813 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -8,12 +8,6 @@ from mosquito.models import DeviceInfo as MosquitoDeviceInfo from mosquito.models import MosqPostStatistic, DevicePostStatistic -class DeviceSourceException(Exception): - """ - source should be counter | mosquito - """ - - def get_vol(device_id, cur_vol): vol_min_key = '{}_vol_min'.format(device_id) vol_max_key = '{}_vol_max'.format(device_id) @@ -65,49 +59,6 @@ class DeviceInfoBaseSerializer(serializers.ModelSerializer): fields = '__all__' -device_source_map = { - 'counter': DeviceCountBaseSerializer, - 'mosquito': DeviceInfoBaseSerializer, -} - - -def get_device(device_id: str, source: str) -> Optional[dict]: - """ - Get device data serialized by DeviceCountBaseSerializer (counter) or DeviceInfoBaseSerializer (mosquito), - For source 'counter', we get device from device_counter table not device_info, because - the [lon, lat] info is located in device_counter. - For source 'mosquito', we get device from mosquito/DeviceInfo model, - due to the [point_x, point_y] is what we want. - - params: device_id, - params: source, counter | mosquito - return: dict - """ - device_key = 'device_lon_{}'.format(device_id) - device = cache.get(device_key) - if device: - return device - - if source == 'counter': - qs = DeviceCount.objects.filter(~Q(longitude=0), - device_id=device_id).order_by('-data_time') - elif source == 'mosquito': - qs = MosquitoDeviceInfo.objects.filter(device_id=device_id) - else: - raise DeviceSourceException("source should be counter or mosquito") - - if qs.count() == 0: - return None - - device = qs.first() - s = device_source_map[source](device) - print(s) - data = s.data - print(data) - cache.set(device_key, data, 60 * 10) - return data - - class DeviceCountSerializer(serializers.ModelSerializer): device_name = serializers.SerializerMethodField() mosq_count = serializers.SerializerMethodField() @@ -305,11 +256,6 @@ class DeviceInfoSerializer(serializers.ModelSerializer): lon, lat = [self.cur_device.longitude, self.cur_device.latitude] if lon and lat: return [lon, lat] - - # query = DeviceCount.objects.filter(~Q(longitude=0), device_id=obj.device_id).order_by('-data_time') - device = get_device(obj.device_id, source='counter') - if device: - return [device['longitude'], device['latitude']] return None def get_time(self, obj): diff --git a/apps/mosquito/api/serializers.py b/apps/mosquito/api/serializers.py index 4c3bbcd..8576409 100644 --- a/apps/mosquito/api/serializers.py +++ b/apps/mosquito/api/serializers.py @@ -71,48 +71,6 @@ class WeatherStationInfoBaseSerializer(serializers.ModelSerializer): fields = '__all__' -device_source_map = { - 'counter': WeatherLogBaseSerializer, - 'mosquito': WeatherStationInfoBaseSerializer, -} - - -def get_device(device_id: str, source: str) -> Optional[dict]: - """ - Get device data serialized by DeviceCountBaseSerializer (counter) or DeviceInfoBaseSerializer (mosquito), - For source 'counter', we get device from device_counter table not device_info, because - the [lon, lat] info is located in device_counter. - For source 'mosquito', we get device from mosquito/DeviceInfo model, - due to the [point_x, point_y] is what we want. - - params: device_id, - params: source, counter | mosquito - return: dict - """ - device_key = 'device_lon_{}'.format(device_id) - device = cache.get(device_key) - if device: - return device - - if source == 'counter': - qs = WeatherLog.objects.filter(~Q(longitude=0), - device_id=device_id).order_by('-data_time') - elif source == 'mosquito': - qs = WeatherStationInfo.objects.filter(device_id=device_id) - else: - raise DeviceSourceException("source should be counter or mosquito") - - if qs.count() == 0: - return None - - device = qs.first() - s = device_source_map[source](device) - data = s.data - cache.set(device_key, data, 60 * 10) - print(data) - return data - - class WeatherLogSerializer(serializers.ModelSerializer): power = serializers.SerializerMethodField() device_name = serializers.SerializerMethodField()