#!/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: 2020/8/21 15:44 @Version: python3.6 @MODIFY DECORD:ansjer dev """ from var_dump import var_dump 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, LangKeyModel, LangValModel, LangPermModel, \ SearchToolBlock, SearchToolMessage import time from object.TokenObject import TokenObject from django.db.models import Q class SearchToolView(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 if operation == 'add': return self.do_add(request_dict, response) elif operation == 'update': return self.do_update(request_dict, response, userID) elif operation == 'delete': return self.do_delete(request_dict, response) # search index table elif operation == 'query': return self.do_query(request_dict, response, userID) elif operation == 'query_message': return self.do_query_message(request_dict, response, userID) elif operation == 'query_saveOrEditMessage': return self.do_query_saveOrEditMessage(request_dict, response) elif operation == 'saveOrExitMsg': return self.do_saveOrExitMsg(request_dict, response) elif operation == 'deletemessage': return self.do_deletemessage(request_dict, response) elif operation == 'reset': return self.do_reset(request_dict, response, userID) else: return response.json(414) else: return response.json(tko.code) def do_add(self, request_dict, response): mokuainame = request_dict.get('name', None) type = request_dict.get('type', None) if not type: return response.json(444, 'type') lk = SearchToolBlock.objects.filter(name=mokuainame) if lk.exists(): return response.json(404, repr("已存在模块名")) nowTime = int(time.time()) try: SearchToolBlock.objects.create(name=mokuainame,type=type, addTime=nowTime, updTime=nowTime) except Exception as e: print(repr(e)) return response.json(404, repr(e)) else: return response.json(0) ''' post_data = { word_key_id:1, word_key:xxx, word_arr:[ {'lang':'','val':''}, {'lang':'','val':''}, {'lang':'','val':''} ] } ''' def do_update(self, request_dict, response, userID): mokuainame = request_dict.get('name', None) mokuaitype = request_dict.get('type', None) mokuaiid = request_dict.get('id', None) mk = SearchToolBlock.objects.filter(name=mokuainame) if mk.exists(): return response.json(404, repr("已存在模块名")) lk = SearchToolBlock.objects.filter(id=mokuaiid) nowTime = int(time.time()) if lk.exists(): lk.update(updTime=nowTime,name=mokuainame) return response.json(0) else: return response.json(404) def do_delete(self, request_dict, response): print('delete') mokuaiid = request_dict.get('id', None) try: SearchToolBlock.objects.get(id=mokuaiid).delete() except Exception as e: return response.json(404, repr(e)) else: return response.json(0) def do_query(self, request_dict, response, userID): page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) searchKey = request_dict.get('searchKey', None) searchVal = request_dict.get('searchVal', None) type = request_dict.get('type', None) if searchKey: searchKey = searchKey.strip() if searchVal: searchKey = searchKey.strip() orderByupdate = request_dict.get('orderByupdate', 0) if page and line: search_qs = SearchToolBlock.objects.filter(type__contains=type).values('name', 'type', 'id','updTime') if type == 0: search_qs = SearchToolBlock.objects.filter(type__in=(0)) elif type == 1: search_qs = SearchToolBlock.objects.filter(type__in=(1)) if searchKey and searchVal: search_qs = search_qs.filter(name__contains=searchVal) count = search_qs.count() if orderByupdate == 1: search_qs = search_qs.order_by('updTime') else: search_qs = search_qs.order_by('-updTime') search_qs = search_qs[(page - 1) * line:page * line] k_list = [] lw_dict = {} for lk in search_qs: k_list.append(lk['name']) lw_dict[lk['name']] = {'updTime': lk['updTime']} res = { 'la_list': list(search_qs), 'lw_dict': lw_dict, # 'lk_list': list(lk_qs), # 'lv_list': list(lv_qs) 'count': count } return response.json(0, res) else: return response.json(444, 'page,line') def do_query_message(self, request_dict, response, userID): page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) searchKey = request_dict.get('searchKey', None) searchVal = request_dict.get('searchVal', None) type = request_dict.get('type', None) if searchKey: searchKey = searchKey.strip() if searchVal: searchKey = searchKey.strip() orderByupdate = request_dict.get('orderByupdate', 0) if page and line: block_qs = SearchToolBlock.objects.filter(type__contains=type).values('id','name') k_list = [] for bk in block_qs: k_list.append(bk['id']) search_qs = SearchToolMessage.objects.filter(type__contains=type,bk__id__in=k_list).values('location','line','source','translation','type','updTime','id','bk__id','bk__name') if type == 0: search_qs = SearchToolBlock.objects.filter(type__in=(0)) elif type == 1: search_qs = SearchToolBlock.objects.filter(type__in=(1)) if searchKey and searchVal: if searchKey == 'bk_name': search_qs = search_qs.filter(bk__name__contains=searchVal) if searchKey == 'location': search_qs = search_qs.filter(location__contains=searchVal) if searchKey == 'line': search_qs = search_qs.filter(line__contains=searchVal) if searchKey == 'source': search_qs = search_qs.filter(source__contains=searchVal) if searchKey == 'translation': search_qs = search_qs.filter(translation__contains=searchVal) count = search_qs.count() if orderByupdate == 1: search_qs = search_qs.order_by('updTime') else: search_qs = search_qs.order_by('-updTime') search_qs = search_qs[(page - 1) * line:page * line] lw_dict = {} for lk in search_qs: lw_dict[lk['id']] = {'location': lk['location'], 'line': lk['line'], 'source': lk['source'],'translation': lk['translation'], 'updTime': lk['updTime'], 'bk_id': lk['bk__id'],'name': lk['bk__name']} res = { 'la_list': lw_dict, 'count': count } return response.json(0, res) else: return response.json(444, 'page,line') def do_query_saveOrEditMessage(self, request_dict, response): messageid = request_dict.get('messageid', None) type = request_dict.get('type', None) block_qs = SearchToolBlock.objects.filter(type=type).values('id', 'name') if messageid: search_qs = SearchToolMessage.objects.filter(id=messageid).values('location','line','source','translation','type','updTime','id','bk__id','bk__name') search_qs = search_qs.order_by('-updTime') lw_dict = {} for lk in search_qs: lw_dict[lk['id']] = {'location': lk['location'], 'line': lk['line'], 'source': lk['source'], 'translation': lk['translation'], 'updTime': lk['updTime'], 'bk_id': lk['bk__id'], 'name': lk['bk__name']} res = { 'la_list': lw_dict, 'lw_dict': list(block_qs) } return response.json(0, res) else: res = { 'lw_dict': list(block_qs) } return response.json(0, res) def do_saveOrExitMsg(self, request_dict, response): id = request_dict.get('id', None) bk_id = request_dict.get('bk_id', None) location = request_dict.get('location', None) line = request_dict.get('line', None) source = request_dict.get('source', None) translation = request_dict.get('translation', None) type = request_dict.get('type', None) if not type: return response.json(444, 'type') nowTime = int(time.time()) try: if id: nowTime = int(time.time()) update_dict = { 'bk_id': bk_id, 'location': location, 'line': line, 'source': source, 'translation': translation, 'type': type, 'updTime': nowTime } SearchToolMessage.objects.filter(id=id).update(**update_dict) else: SearchToolMessage.objects.create(location=location, line=line, source=source, translation=translation, type=type, bk_id=bk_id, addTime=nowTime, updTime=nowTime) except Exception as e: print(repr(e)) return response.json(404, repr(e)) else: return response.json(0) def do_deletemessage(self, request_dict, response): print('delete') messageid = request_dict.get('id', None) try: SearchToolMessage.objects.get(id=messageid).delete() except Exception as e: return response.json(404, repr(e)) else: return response.json(0) def do_reset(self, request_dict, response, userID): return response.json(10,"数据已重置")