#!/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, LangKeyModel, LangValModel import time from object.TokenObject import TokenObject # http://127.0.0.1:8000/user/register?username=admin&password=admin class LangWordView(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) from var_dump import var_dump var_dump(request_dict) 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) elif operation == 'delete': return self.do_delete(request_dict, response) # search index table elif operation == 'query': return self.do_query(request_dict, response, userID) else: return response.json(414) else: return response.json(tko.code) def do_add(self, request_dict, response): word_key = request_dict.get('word_key', None) word_arr = request_dict.get('word_arr', None) nowTime = int(time.time()) lang_key_dict = { 'word_key': word_key, 'addTime': nowTime, 'updTime': nowTime } try: lk = LangKeyModel.objects.create(**lang_key_dict) for w in word_arr: LangValModel.objects.create(la_id=w['la_id'], lk_id=lk.id, addTime=nowTime, updTime=nowTime, word_val=w['val']) 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): old_word_key = request_dict.get('old_word_key', None) word_key = request_dict.get('word_key', None) word_arr = request_dict.get('word_arr', None) # from var_dump import var_dump # var_dump(request_dict) lk = LangKeyModel.objects.filter(word_key=old_word_key) nowTime = time.time() if lk.exists(): lk_id = lk[0].id if old_word_key != word_key: lk.update(word_key=word_key) for w in word_arr: lv_qs = LangValModel.objects.filter(lk__id=lk_id, la__lang=w) if lv_qs.exists(): lv_qs.update(updTime=nowTime, word_val=word_arr[w]) else: la_qs = LangAreaModel.objects.filter(lang=w) if la_qs.exists(): la_id = la_qs[0].id LangValModel.objects.create(la_id=la_id, lk_id=lk_id, addTime=nowTime, updTime=nowTime, word_val=word_arr[w]) return response.json(0) else: return response.json(404) def do_delete(self, request_dict, response): word_key = request_dict.get('word_key', None) try: LangKeyModel.objects.filter(word_key=word_key).delete() LangValModel.objects.filter(lk__word_key=word_key).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)) if page and line: la_qs = LangAreaModel.objects.filter().values('lang', 'id') lk_qs = LangKeyModel.objects.filter() count = lk_qs.count() lk_qs = lk_qs[(page - 1) * line:page * line].values_list('word_key', flat=True) lv_qs = LangValModel.objects.filter(lk__word_key__in=lk_qs). \ values('word_val', 'la__id', 'la__lang', 'lk__word_key', 'lk__id') lw_dict = {} for lk in lk_qs: lw_dict[lk] = {} for lv in lv_qs: lw_dict[lv['lk__word_key']][lv['la__lang']] = lv['word_val'] res = { 'la_list': list(la_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')