1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import json
- from django.http import QueryDict
- from django.views import View
- from Ansjer.config import LOGGER
- from Model.models import DeviceVersionInfo, CountryAPN, LanguageModel, CountryLanguageModel, CountryModel
- from Object.Enums.RedisKeyConstant import RedisKeyConstant
- from Object.RedisObject import RedisObject
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- from Service.CommonService import CommonService
- class APNConfigView(View):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.GET, request, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation')
- return self.validation(request.POST, request, operation)
- def validation(self, request_dict, request, operation):
- response = ResponseObject('en')
- tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
- if tko.code != 0:
- return response.json(tko.code)
- response.lang = tko.lang
- userID = tko.userID
- if operation == 'APNConfigList':
- return self.get_apn_config(request_dict, response)
- elif operation == 'CountryCodeList':
- return self.get_country_code_list(request_dict, response)
- else:
- return response.json(414)
- @staticmethod
- def get_apn_config(request_dict, response):
- # 从请求字典中获取国家代码
- country_code = request_dict.get('countryCode')
- # 检查 country_code 是否存在,如果不存在,返回错误代码444
- if not country_code:
- return response.json(444)
- # 查询数据库,获取与国家代码匹配的 APN 配置信息
- country_apn_qs = CountryAPN.objects.filter(iso=country_code).values(
- 'apn_name', 'apn_address', 'username', 'password', 'auth_type'
- )
- return response.json(0, list(country_apn_qs))
- @staticmethod
- def get_country_code_list(request_dict, response):
- lang = request_dict.get('lang', 'en')
- # 获取语言 ID
- language = LanguageModel.objects.filter(lang=lang).first()
- if not language:
- language = LanguageModel.objects.filter(lang='en').first()
- # 查询tb_country_language和tb_country,获取国家名称和国家iso2代码
- countries = CountryLanguageModel.objects.filter(language=language).select_related('country').order_by(
- 'country__country_name')
- # 返回国家名和对应的 country_code
- country_iso_list = [{
- 'countryName': country.country_name,
- 'countryCode': country.country.country_code
- } for country in countries]
- return response.json(0, country_iso_list)
|