123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
- @AUTHOR: ASJRD018
- @NAME: langer
- @software: PyCharm
- @DATE: 2019/6/4 11:44
- @Version: python3.6
- @MODIFY DECORD:ansjer dev
- @file: LangArea.py
- @Contact: chanjunkai@163.com
- """
- import json
- from django.http import HttpResponse
- from django.views.generic import TemplateView
- from django.views.decorators.csrf import csrf_exempt
- from django.utils.decorators import method_decorator
- from object.ResponseObject import ResponseObject
- from django.contrib.auth.hashers import make_password, check_password
- from model.models import UserModel, LangSetModel, LangAreaModel, LangValModel, LangKeyModel
- import time
- from object.TokenObject import TokenObject
- from django.http import StreamingHttpResponse
- class LangAreaView(TemplateView):
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- operation = kwargs.get('operation', None)
- request_dict = json.loads(request.body.decode('utf-8'))
- return self.validate(request_dict, operation)
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.GET
- operation = kwargs.get('operation', None)
- return self.validate(request_dict, operation)
- def validate(self, request_dict, operation):
- response = ResponseObject()
- token = request_dict.get('token', None)
- tko = TokenObject(token)
- if tko.code == 0:
- userID = tko.userID
- user_qs = UserModel.objects.filter(id=userID, username='admin')
- if not user_qs.exists():
- return response.json(403)
- if operation == 'add':
- return self.do_add(request_dict, response)
- elif operation == 'update':
- return self.do_update(request_dict, response)
- elif operation == 'delete':
- return self.do_delete(request_dict, response)
- elif operation == 'query':
- return self.do_query(request_dict, response, userID)
- elif operation == 'export':
- return self.do_export(request_dict, response, userID)
- else:
- return response.json(414)
- else:
- return response.json(tko.code)
- def do_add(self, request_dict, response):
- lang = request_dict.get('lang', None)
- if lang:
- nowTime = int(time.time())
- create_dict = {
- 'lang': lang,
- 'addTime': nowTime,
- 'updTime': nowTime
- }
- try:
- LangAreaModel.objects.create(**create_dict)
- except Exception as e:
- return response.json(404, repr(e))
- else:
- return response.json(0)
- else:
- return response.json(414)
- def do_update(self, request_dict, response):
- lang = request_dict.get('lang', None)
- id = request_dict.get('id', None)
- nowTime = int(time.time())
- update_dict = {
- 'lang': lang,
- 'updTime': nowTime
- }
- try:
- LangAreaModel.objects.filter(id=id).update(**update_dict)
- except Exception as e:
- return response.json(404, repr(e))
- else:
- return response.json(0)
- def do_delete(self, request_dict, response):
- id = request_dict.get('id', None)
- try:
- LangAreaModel.objects.filter(id=id).delete()
- except Exception as e:
- return response.json(404, repr(e))
- else:
- return response.json(0)
- def do_query(self, request_dict, response, userID):
- user_qs = UserModel.objects.filter(id=userID, username='admin')
- if not user_qs.exists():
- return response.json(403)
- la_qs = LangAreaModel.objects.filter().values('lang', 'id')
- return response.json(0, list(la_qs))
- def do_export(self, request_dict, response, userID):
- print("进来了")
- id = request_dict.get('id', None)
- type = request_dict.get('type', None)
- # key_list = LangKeyModel.objects.filter().values_list('word_key', flat=True)
- en_qs = LangKeyModel.objects.filter(langvalmodel__la__id=20).values('word_key', 'langvalmodel__word_val')
- en_kv = {}
- for e in en_qs:
- en_kv[e['word_key']] = e['langvalmodel__word_val']
- content = ''
- if type == 'ios':
- res_qs = LangKeyModel.objects.filter(langvalmodel__la__id=id).\
- values('word_key', 'langvalmodel__word_val')
- res = {}
- for r in res_qs:
- print(r['langvalmodel__word_val'])
- if r['langvalmodel__word_val']:
- res[r['word_key']] = r['langvalmodel__word_val']
- elif en_kv[r['word_key']]:
- res[r['word_key']] = en_kv[r['word_key']]
- for l in res:
- content_val = res[l].replace('"', '\'')
- content = content + '"' + l + '"="' + content_val + '";\n'
- elif type == 'android':
- res_qs = LangKeyModel.objects.filter(langvalmodel__la__id=id).\
- values('word_key', 'langvalmodel__word_val').order_by('addTime')
- res = {}
- for r in res_qs:
- print(r['langvalmodel__word_val'])
- if r['langvalmodel__word_val']:
- res[r['word_key']] = r['langvalmodel__word_val']
- elif en_kv[r['word_key']]:
- res[r['word_key']] = en_kv[r['word_key']]
- for l in res:
- lk = l
- lk = lk.replace('.', '_')
- lk = lk.replace('\\n', '_')
- lk = lk.replace('“', '_')
- lk = lk.replace('”', '_')
- lk = lk.replace(' ', '_')
- lk = lk.replace('\\\'', '_')
- lk = lk.replace('\'', '_')
- lk = lk.replace('\\', '_')
- lk = lk.replace('!', '_')
- lk = lk.replace('’', '_')
- lk = lk.replace('...', '_')
- lk = lk.replace('…', '_')
- lk = lk.replace(':', '_')
- lk = lk.replace(':', '_')
- lk = lk.replace('(', '_')
- lk = lk.replace(')', '_')
- lk = lk.replace('?', '_')
- lk = lk.replace(',', '_')
- lk = lk.replace('-', '_')
- lk = lk.replace('%', '_')
- lk = lk.replace(';', '_')
- lk = lk.replace('‘', '_')
- # 正则表达式
- # re.sub("[a-z]+", "$", "123abc78ab9cdeg00t8")
- #安卓的把“转为\"
- content_val = res[l].replace('"', '\\"')
- content = content + '<string name="' + lk + '">' + content_val + '</string>\n'
- response = StreamingHttpResponse(content)
- response['Content-Type'] = 'application/octet-stream'
- response['Content-Disposition'] = 'attachment;filename="lang.txt"'
- return response
- return response.json(0, res)
- from django.http import StreamingHttpResponse
- class exportLangView(TemplateView):
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = json.loads(request.body.decode('utf-8'))
- return self.validate(request_dict)
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.GET
- return self.validate(request_dict)
- def validate(self, request_dict):
- # 得到即将下载文件的路径和名称
- response = StreamingHttpResponse('123l4kjlkfjlksadjlfksdajlf')
- response['Content-Type'] = 'application/octet-stream'
- response['Content-Disposition'] = 'attachment;filename="lang.txt"'
- return response
|