소스 검색

新增newSearchTool的多语言录入下载功能

locky 4 년 전
부모
커밋
ab413942da
1개의 변경된 파일150개의 추가작업 그리고 47개의 파일을 삭제
  1. 150 47
      controller/SearchToolController.py

+ 150 - 47
controller/SearchToolController.py

@@ -39,47 +39,50 @@ class SearchToolView(TemplateView):
 
     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_context':
-                return self.do_query(request_dict, response, userID)
-            elif operation == 'query_key':
-                return self.do_query_key(request_dict, response, userID)
-            elif operation == 'query_location':
-                return self.do_query_location(request_dict, response, userID)
-            elif operation == 'query_translation':
-                return self.do_query_translation(request_dict, response, userID)
-            elif operation == 'query_saveOrEditKeyFrom':
-                return self.do_query_saveOrEditKeyFrom(request_dict, response)
-            elif operation == 'query_saveOrEditLocationFrom':
-                return self.do_query_saveOrEditLocationFrom(request_dict, response)
-            elif operation == 'query_saveOrEditTranslationFrom':
-                return self.do_query_saveOrEditTranslationFrom(request_dict, response, userID)
-            elif operation == 'saveOrExitKey':
-                return self.do_saveOrExitKey(request_dict, response)
-            elif operation == 'saveOrExitLocation':
-                return self.do_saveOrExitLocation(request_dict, response)
-            elif operation == 'saveOrExitTranslation':
-                return self.do_saveOrExitTranslation(request_dict, response)
-            elif operation == 'deleteKey':
-                return self.do_deleteKey(request_dict, response)
-            elif operation == 'reset':
-                return self.do_reset(request_dict, response, userID)
-            else:
-                return response.json(414)
-
-
+        if (operation == 'add_single'):
+            return self.do_add_single(request_dict, response)
         else:
-            return response.json(tko.code)
+            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_context':
+                    return self.do_query(request_dict, response, userID)
+                elif operation == 'query_key':
+                    return self.do_query_key(request_dict, response, userID)
+                elif operation == 'query_location':
+                    return self.do_query_location(request_dict, response, userID)
+                elif operation == 'query_translation':
+                    return self.do_query_translation(request_dict, response, userID)
+                elif operation == 'query_saveOrEditKeyFrom':
+                    return self.do_query_saveOrEditKeyFrom(request_dict, response)
+                elif operation == 'query_saveOrEditLocationFrom':
+                    return self.do_query_saveOrEditLocationFrom(request_dict, response)
+                elif operation == 'query_saveOrEditTranslationFrom':
+                    return self.do_query_saveOrEditTranslationFrom(request_dict, response, userID)
+                elif operation == 'saveOrExitKey':
+                    return self.do_saveOrExitKey(request_dict, response)
+                elif operation == 'saveOrExitLocation':
+                    return self.do_saveOrExitLocation(request_dict, response)
+                elif operation == 'saveOrExitTranslation':
+                    return self.do_saveOrExitTranslation(request_dict, response)
+                elif operation == 'deleteKey':
+                    return self.do_deleteKey(request_dict, response)
+                elif operation == 'deleteLocation':
+                    return self.do_deleteLocation(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)
@@ -223,7 +226,7 @@ class SearchToolView(TemplateView):
             count = search_qs.count()
 
             if orderByupdate == 1:
-                search_qs = search_qs.order_by('updTime')
+                search_qs = search_qs.order_by('lk__updTime')
             else:
                 search_qs = search_qs.order_by('-lk__updTime')
             search_qs = search_qs[(page - 1) * line:page * line]
@@ -274,10 +277,12 @@ class SearchToolView(TemplateView):
 
             count = search_qs.count()
 
-            if orderByupdate == 1:
-                search_qs = search_qs.order_by('updTime')
-            else:
-                search_qs = search_qs.order_by('-lk__updTime')
+            # if orderByupdate == 1:
+            #     search_qs = search_qs.order_by('updTime')
+            # else:
+            #     search_qs = search_qs.order_by('-lk__updTime')
+            # 根据 word_key 字母排序
+            search_qs = search_qs.order_by('lk__word_key')
             search_qs = search_qs[(page - 1) * line:page * line]
 
             lw_dict = {}
@@ -312,7 +317,7 @@ class SearchToolView(TemplateView):
             k_list = []
             for bk in block_qs:
                 k_list.append(bk['searchtoolkeymodel__lk__id'])
-            lk_qs = LangKeyModel.objects.filter(id__in=k_list).values('id', 'word_key')
+            lk_qs = LangKeyModel.objects.filter(id__in=k_list).values('id', 'word_key', 'updTime')
 
             if searchKey and searchVal:
                 if searchKey == 'key':
@@ -322,11 +327,12 @@ class SearchToolView(TemplateView):
                     lk_qs = lk_qs.filter(langvalmodel__word_val__contains=searchVal, langvalmodel__la__lang=searchKey)
             count = lk_qs.count()
             # lk_qs = lk_qs[(page - 1) * line:page * line].values_list('word_key', flat=True)
+
             if orderByupdate == 1:
                 lk_qs = lk_qs.order_by('updTime')
             else:
                 lk_qs = lk_qs.order_by('-updTime')
-            lk_qs = lk_qs[(page - 1) * line:page * line].values('id', 'word_key', 'updTime')
+            lk_qs = lk_qs[(page - 1) * line:page * line]
             k_list = []
             lw_dict = {}
             for lk in lk_qs:
@@ -337,6 +343,7 @@ class SearchToolView(TemplateView):
             user = UserModel.objects.get(id=userID)
             lang_perm_ql = LangPermModel.objects.filter(user__id=userID).values_list('lang__lang', flat=True)
             lang_perm_ls = list(lang_perm_ql)
+
             for lv in lv_qs:
                 lang = lv['la__lang']
                 # print('lang=%s' % lang)
@@ -545,6 +552,18 @@ class SearchToolView(TemplateView):
         else:
             return response.json(0)
 
+
+    def do_deleteLocation(self, request_dict, response):
+        id = request_dict.get('id', None)
+        try:
+            LangLocationModel.objects.get(id=id).delete()
+
+        except Exception as 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)
@@ -562,3 +581,87 @@ class SearchToolView(TemplateView):
         return response.json(10,"数据已重置")
 
 
+    def do_add_single(self, request_dict, response):
+        word_class = request_dict.get('word_class', None)
+        word_key = request_dict.get('word_key', None)
+        word_array = request_dict.get('word_array', None)
+        location_array = request_dict.get('location_array', None)
+
+        if (word_class and word_key and word_array and location_array):
+            # SearchToolBlock
+            # 检查是否已有该 name
+            searchToolBlock_qs = SearchToolBlock.objects.filter(name=word_class)
+            if searchToolBlock_qs.exists(): # 更新 updTime
+                addTime = int(time.time())
+                searchToolBlock_model = searchToolBlock_qs[0]
+                searchToolBlock_model.updTime = addTime
+                searchToolBlock_model.save()
+            else:   # 插入新数据
+                addTime = int(time.time())
+                dataDict = {
+                    'name' : word_class,
+                    'type': '0',
+                    'addTime': addTime,
+                    'updTime': addTime,
+                }
+                searchToolBlock_model = SearchToolBlock.objects.create(**dataDict)
+                searchToolBlock_model = searchToolBlock_qs[0]
+                dataDict.clear()
+
+            # LangKeyModel,SearchToolKeyModel
+            word_key = word_class + '_' + word_key  # 拼接word_class和word_key,避免word_key重复时写不进
+            # 检查是否已有该 word_key
+            langKey_qs = LangKeyModel.objects.filter(word_key=word_key)
+            if langKey_qs.exists(): # 更新 updTime
+                addTime = int(time.time())
+                langKey_model = langKey_qs[0]
+                langKey_model.updTime = addTime
+                langKey_model.save()
+            else:   # 插入新数据, 更新SearchToolKeyModel
+                addTime = int(time.time())
+                dataDict = {
+                    'word_key': word_key,
+                    'project_id': 4,
+                    'addTime': addTime,
+                    'updTime': addTime,
+                }
+                langKey_model = LangKeyModel.objects.create(**dataDict)
+                dataDict.clear()
+                # SearchToolKeyModel.objects.create(bk_id=searchToolBlock_model.id, lk_id=langKey_model.id)
+                SearchToolKeyModel.objects.create(bk=searchToolBlock_model, lk=langKey_model)
+
+            # LangLocationModel
+            locations = list(location_array)
+            for location in locations:
+                # 不更新ls,filename和line三者都相等的
+                if not LangLocationModel.objects.filter(lk=langKey_model, filename=location['filename'], line=location['line']).exists():
+                    dataDict = {
+                        'lk': langKey_model,
+                        'filename': location['filename'],
+                        'line': location['line']
+                    }
+                    LangLocationModel.objects.create(**dataDict)
+                    dataDict.clear()
+
+            # LangValModel
+            translations = list(word_array)
+            for translation in translations:
+                la_id = translation['la_id']
+                langArea = LangAreaModel.objects.filter(id=la_id)[0]
+                translationValue = translation['val']
+                addTime = int(time.time())
+
+                dataDict = {
+                    'lk': langKey_model,
+                    'la': langArea,
+                    'word_val': translationValue,
+                    'addTime': addTime,
+                    'updTime': addTime,
+                    'status': 1,
+                }
+                LangValModel.objects.create(**dataDict)
+                dataDict.clear()
+
+            return response.json(0)
+        else:
+            return response.json(444)