DeviceConfirmRegion.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @software: PyCharm
  6. @Version: python3.6
  7. """
  8. import datetime
  9. import traceback
  10. import time
  11. import logging
  12. import jwt
  13. import simplejson
  14. import simplejson as json
  15. import requests
  16. from django.contrib.auth.hashers import make_password, check_password # 对密码加密模块
  17. from django.db.models import Q
  18. from django.http import HttpResponseRedirect
  19. from django.utils.decorators import method_decorator
  20. from django.utils.timezone import utc
  21. from django.views.decorators.csrf import csrf_exempt
  22. from django.views.generic import TemplateView
  23. from jwt.algorithms import RSAAlgorithm
  24. from ratelimit.decorators import ratelimit
  25. from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CONFIG, FCM_CONFIG, TUTK_PUSH_DOMAIN
  26. from Controller.CheckUserData import DataValid, date_handler, RandomStr
  27. from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
  28. UserAppFrequencyModel, CountryIPModel, CountryModel, RegionModel
  29. from Object.AWS.SesClassObject import SesClassObject
  30. from Object.AliSmsObject import AliSmsObject
  31. from Object.RedisObject import RedisObject
  32. from Object.ResponseObject import ResponseObject
  33. from Object.TokenObject import TokenObject
  34. from Service.CommonService import CommonService
  35. from Service.ModelService import ModelService
  36. from Service.TemplateService import TemplateService
  37. from django.views.generic import View
  38. import base64
  39. import random
  40. from io import BytesIO
  41. from PIL import Image, ImageDraw, ImageFont
  42. from django.shortcuts import HttpResponse
  43. from Ansjer.config import BASE_DIR
  44. #确认设备所在地区
  45. class ConfirmRegion(TemplateView):
  46. @method_decorator(csrf_exempt)
  47. def dispatch(self, *args, **kwargs):
  48. return super(ConfirmRegion, self).dispatch(*args, **kwargs)
  49. def get(self, request, *args, **kwargs):
  50. response = ResponseObject()
  51. request.encoding = 'utf-8'
  52. # number = request.POST.get('number', None)
  53. # selectRegion = CountryModel.objects.filter(number=number).values('region__api_url')
  54. # if not selectRegion.exists():
  55. # return response.json(0,{"api_url":"https://test.dvema.com"})
  56. # else:
  57. # return response.json(0,{"api_url":selectRegion[0]['region__api_url']})
  58. # serial_number = request.POST.get('serial_number', None)
  59. ip = CommonService.get_ip_address(request)
  60. # ip = '14.102.176.0'
  61. ipInfo = CommonService.getIpIpInfo(ip,"CN")
  62. if ipInfo['country_code']:
  63. device_request_url = CountryModel.objects.filter(country_code=ipInfo['country_code']).values("region__api")
  64. if device_request_url.exists():
  65. return response.json(0,{"request_api_url":device_request_url[0]['region__api']})
  66. # 不存在默认返回美洲地区api。
  67. api = RegionModel.objects.filter(continent_code='NA').values("api")
  68. return response.json(0,{"request_api_url":api[0]['api']})
  69. #确认设备所在地区
  70. class Device_Region(object):
  71. def get_device_region(self, ip):
  72. ipInfo = CommonService.getIpIpInfo(ip, "CN")
  73. #暂时测试国外
  74. if ipInfo['country_code']:
  75. device_request_url = CountryModel.objects.filter(country_code=ipInfo['country_code']).values("region__api","region__id")
  76. if device_request_url.exists():
  77. return device_request_url[0]['region__id']
  78. # 不存在默认返回美洲地区api
  79. api = RegionModel.objects.filter(continent_code='NA').values("id")
  80. return api[0]['id']