weather.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import requests
  2. import json
  3. from rest_framework.views import APIView
  4. from rest_framework.response import Response
  5. from smartfarming.models.device import MongoDevice
  6. from smartfarming.models.weather import QXZdata_New, MongoQXZ_Conf
  7. from smartfarming.utils import get_weather
  8. from smartfarming.utils import get_center_lnglat
  9. class WeatherAPIView(APIView):
  10. def post(self, request):
  11. # 调用天气
  12. try:
  13. ip = request.META['HTTP_X_FORWARDED_FOR']
  14. except Exception as e:
  15. ip = request.META['REMOTE_ADDR']
  16. # ip 转化为 省市县
  17. data = get_weather(ip)
  18. content = []
  19. for i in data:
  20. content.append(
  21. {
  22. "week": i.get("week"),
  23. "wea_img": i.get("wea_img"),
  24. "wea_day_img": i.get("wea_day_img"),
  25. "tem": i.get("tem"),
  26. "tem1": i.get("tem1"),
  27. "tem2": i.get("tem2")
  28. }
  29. )
  30. return Response({"code": 0, "msg": "success", "data": content})
  31. class QxzListAPIView(APIView):
  32. def post(self, request):
  33. shang = MongoDevice.objects.filter(device_type_id=8).values_list("device_id", flat=True)
  34. return Response({"code": 0, "msg": "success", "data": shang})
  35. class QxzShangAPIView(APIView):
  36. def post(self, request):
  37. # 墒情统计
  38. request_data = request.data
  39. device_id = request_data.get("device_id")
  40. qx_conf = MongoQXZ_Conf.objects.filter(device_id=device_id).values().order_by("-uptime").first()
  41. qx_data = QXZdata_New.objects.filter(device_id=device_id).values().order_by("-uptime").first()
  42. result = {}
  43. for k, v in qx_conf.items():
  44. if k.startswith("e"):
  45. if qx_data.get(k):
  46. v_tp = v.split("#")
  47. result[v_tp[0]] = (qx_data.get(k)).split("#")[0] + v_tp[1]
  48. return Response({"code": 0, "msg": "success", "data": result})