# -*- coding: utf-8 -*- """ @Author : peng @Time : 2023-8-18 10:45:46 @File :WeatherControl.py """ from Ansjer.config import LOGGER import time from django.views import View from Object.IPWeatherObject import WeatherInfo from Model.models import UidSetModel, CityInformation from Object.ResponseObject import ResponseObject class WeatherView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.GET, operation, request) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.POST, operation, request) def validation(self, request_dict, operation, request): lang = request_dict.get('lang', 'en') response = ResponseObject(lang) if operation == 'get': # 获取天气 return self.get_weather(request_dict, response) else: return response.json(414) @staticmethod def get_weather(request_dict, response): """ 获取天气 @param request_dict: 请求参数 @request_dict uid: 设备uid @param response: 响应对象 @return: response """ uid = request_dict.get('uid') if not uid: return response.json(444, 'uid') uid_set_qs = UidSetModel.objects.filter(uid=uid).values('tb_city_information_id') if not uid_set_qs.exists(): return response.json(173) try: city_obj = WeatherInfo(uid_set_qs[0]['tb_city_information_id']) temp, humidity = city_obj.get_city_weather() if not all([temp, humidity]): return response.json(10, '获取天气失败') return response.json(0, {'temp': temp, 'humidity': humidity}) except Exception as e: print(e) return response.json(500)