Selaa lähdekoodia

多语音 新旧协议

chenshibin 5 vuotta sitten
vanhempi
commit
2922ed9850
7 muutettua tiedostoa jossa 1524 lisäystä ja 400 poistoa
  1. 58 1
      controller/LangArea.py
  2. 302 53
      controller/SearchToolController.py
  3. 26 15
      model/models.py
  4. 9 1
      web/langTab.html
  5. 564 164
      web/new_searchTool.html
  6. 564 165
      web/old_searchTool.html
  7. 1 1
      web/zosi_link_index.html

+ 58 - 1
controller/LangArea.py

@@ -20,7 +20,8 @@ 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, LangKeyClassModel
+from model.models import UserModel, LangSetModel, LangAreaModel, LangValModel, LangKeyModel, LangKeyClassModel, \
+    SearchToolBlock, SearchToolKeyModel, LangLocationModel
 import time
 from object.TokenObject import TokenObject
 from django.http import StreamingHttpResponse
@@ -184,12 +185,17 @@ class LangAreaView(TemplateView):
                 content = content + '<string name="' + lk + '">' + content_val + '</string>\n'
         elif type == 'avss':
             content = self.do_download_avss(id)
+        elif type == 'new_searchTool':
+            content = self.do_download_SearchTool(id,0)
+        elif type == 'old_searchTool':
+            content = self.do_download_SearchTool(id,1)
         response = StreamingHttpResponse(content)
         response['Content-Type'] = 'application/octet-stream'
         response['Content-Disposition'] = 'attachment;filename="lang.txt"'
         return response
         return response.json(0, res)
 
+
     def do_download_avss(self, id):
         content = ''
         en_result = self.get_area_language(20)
@@ -242,6 +248,8 @@ class LangAreaView(TemplateView):
 
         return content
 
+
+
     def get_area_language(self, id):
         result = {}
         lkc_qs = LangKeyModel.objects.filter(langvalmodel__la__id=id, type__in=(2, 3, 6, 7)).values('word_key',
@@ -303,6 +311,55 @@ class LangAreaView(TemplateView):
         else:
             return 'en'
 
+    def do_download_SearchTool(self, id, searchtype):
+        content = ''
+        en_result = self.get_area_language(20)
+        block_qs = SearchToolBlock.objects.filter(type__contains=searchtype).values('name', 'id')
+
+        skm_qs = SearchToolBlock.objects.filter(type__contains=searchtype).values('name', 'id',
+                                                                                    "searchtoolkeymodel__lk__id")
+        if block_qs:
+            content += '<TS version=\"2.1\" language=\"' + self.get_avss_language(int(id)) + '\">\n'
+
+            k_list = []
+            for k in skm_qs:
+                k_list.append(k['searchtoolkeymodel__lk__id'])
+
+            key_qs = LangKeyModel.objects.filter(langvalmodel__la__id=id, id__in=k_list).values('id', 'word_key', 'langvalmodel__word_val')
+
+            loc_qs = LangLocationModel.objects.filter(lk__id__in=k_list).values('id', 'filename', 'line', 'lk__id',
+                                                                                   'lk__word_key', 'lk__updTime')
+
+            for bk in block_qs:
+                content += '<context>\n<name>'
+                content += bk['name']
+                content += '</name>\n'
+
+                for lk in key_qs:
+                    content += '<message>\n'
+                    for loc in loc_qs:
+                        if loc['lk__id'] == lk['id'] :
+                            if loc['filename'] != '':
+                                content += '<location filename=\"' + loc['filename'] + '\" line=\"' + str(
+                                    loc['line']) + '\"/>\n'
+                    content += '<source>'
+                    content += lk['word_key']
+                    content += '</source>\n'
+                    content += '<translation>'
+                    translation = lk['langvalmodel__word_val']
+                    # if translation is None or translation == '':
+                    #     content += '23333'
+                    # else:
+                    content += translation
+                    content += '</translation>\n'
+                    content += '</message>\n'
+                content += '</context>\n'
+            content += '</TS>'
+            return content
+        else:
+            print('none')
+
+        return content
 
 class exportLangView(TemplateView):
     def post(self, request, *args, **kwargs):

+ 302 - 53
controller/SearchToolController.py

@@ -19,7 +19,7 @@ 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
+    SearchToolBlock, SearchToolMessage, SearchToolKeyModel, LangLocationModel
 import time
 from object.TokenObject import TokenObject
 from django.db.models import Q
@@ -50,16 +50,28 @@ class SearchToolView(TemplateView):
             elif operation == 'delete':
                 return self.do_delete(request_dict, response)
             # search index table
-            elif operation == 'query':
+            elif operation == 'query_context':
                 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 == '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:
@@ -93,7 +105,7 @@ class SearchToolView(TemplateView):
         word_key:xxx,
         word_arr:[
             {'lang':'','val':''},
-            {'lang':'','val':''},
+            {'lang':'','val':''},   
             {'lang':'','val':''}
         ]
     }
@@ -129,6 +141,7 @@ class SearchToolView(TemplateView):
         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))
@@ -178,7 +191,7 @@ class SearchToolView(TemplateView):
         else:
             return response.json(444, 'page,line')
 
-    def do_query_message(self, request_dict, response, userID):
+    def do_query_key(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)
@@ -190,42 +203,86 @@ class SearchToolView(TemplateView):
             searchKey = searchKey.strip()
         orderByupdate = request_dict.get('orderByupdate', 0)
         if page and line:
-            block_qs = SearchToolBlock.objects.filter(type__contains=type).values('id','name')
+            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))
+            search_qs = SearchToolKeyModel.objects.filter(bk__id__in=k_list).values('lk__id','lk__word_key','lk__updTime','bk__id','bk__name')
+
+            #search_qs = LangKeyModel.objects.filter(id__in=k_list).values('id', 'word_key', 'updTime', 'project__id')
+
 
             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)
+                    search_qs = search_qs.filter(bk__name__contains=searchVal)
+                else :
+                    search_qs = search_qs.filter(lk__word_key__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.order_by('-lk__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']}
+                lw_dict[lk['lk__id']] = {'lk_id': lk['lk__id'], 'word_key': lk['lk__word_key'], 'updTime': lk['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_location(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=type).values('name', 'id', "searchtoolkeymodel__lk__id")
+            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')
+            k_list = []
+            for lk in lk_qs:
+                k_list.append(lk['id'])
+
+            search_qs = LangLocationModel.objects.filter(lk__id__in=k_list).values('id','filename','line','lk__id','lk__word_key','lk__updTime')
+
+            if searchKey and searchVal:
+                if searchKey == "word_key":
+                    search_qs = search_qs.filter(lk__word_key__contains=searchVal)
+                elif searchKey == "filename":
+                    search_qs = search_qs.filter(filename__contains=searchVal)
+                elif searchKey == "line":
+                    search_qs = search_qs.filter(line__contains=searchVal)
 
+            count = search_qs.count()
 
+            if orderByupdate == 1:
+                search_qs = search_qs.order_by('updTime')
+            else:
+                search_qs = search_qs.order_by('-lk__updTime')
+            search_qs = search_qs[(page - 1) * line:page * line]
+
+            lw_dict = {}
+            for lk in search_qs:
+                lw_dict[lk['id']] = {'id': lk['id'], 'filename': lk['filename'], 'line': lk['line'], 'lk_id': lk['lk__id'], 'word_key': lk['lk__word_key']}
 
             res = {
                 'la_list': lw_dict,
@@ -235,21 +292,83 @@ class SearchToolView(TemplateView):
         else:
             return response.json(444, 'page,line')
 
-    def do_query_saveOrEditMessage(self, request_dict, response):
-       messageid = request_dict.get('messageid', None)
+    def do_query_translation(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:
+            lang_set_list = LangSetModel.objects.filter(user__id=userID).values_list('lang__id', flat=True)
+            lang_set_list = list(lang_set_list)
+            la_qs = LangAreaModel.objects.filter(id__in=lang_set_list).values('lang', 'id')
+
+            block_qs = SearchToolBlock.objects.filter(type=type).values('name', 'id', "searchtoolkeymodel__lk__id")
+            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')
+
+            if searchKey and searchVal:
+                if searchKey == 'key':
+                    lk_qs = lk_qs.filter(word_key__contains=searchVal)
+                    # lk_qs = lk_qs.filter(word_key=searchVal)
+                else:
+                    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')
+            k_list = []
+            lw_dict = {}
+            for lk in lk_qs:
+                k_list.append(lk['id'])
+                lw_dict[lk['id']] = {'word_key': lk['word_key'], 'updTime': lk['updTime']}
+            lv_qs = LangValModel.objects.filter(lk__id__in=k_list, la__id__in=lang_set_list). \
+                values('word_val', 'la__id', 'la__lang', 'lk__word_key', 'lk__id', 'status')
+            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)
+                lw_dict[lv['lk__id']][lang] = lv['word_val']
+                if user.role_type == 1:
+                    lw_dict[lv['lk__id']]['status'] = 0
+                elif lang in lang_perm_ls:
+                    lw_dict[lv['lk__id']]['status'] = lv['status']
+            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')
+
+
+    def do_query_saveOrEditKeyFrom(self, request_dict, response):
+       keyid = request_dict.get('keyid', 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')
+       if keyid:
+            search_qs = SearchToolKeyModel.objects.filter(lk__id=keyid).values('lk__id','lk__word_key','lk__updTime','bk__id','bk__name')
             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']}
-
+                lw_dict[lk['lk__id']] = {'lk_id': lk['lk__id'], 'word_key': lk['lk__word_key'],
+                                         'updTime': lk['lk__updTime'],
+                                         'bk_id': lk['bk__id'], 'name': lk['bk__name']}
             res = {
                 'la_list': lw_dict,
                 'lw_dict': list(block_qs)
@@ -263,39 +382,169 @@ class SearchToolView(TemplateView):
            }
            return response.json(0, res)
 
-    def do_saveOrExitMsg(self, request_dict, response):
+    def do_query_saveOrEditLocationFrom(self, request_dict, response):
+       locationid = request_dict.get('locationid', None)
+       type = request_dict.get('type', None)
+
+       block_qs = SearchToolBlock.objects.filter(type=type).values('name', 'id', 'searchtoolkeymodel__lk__id')
+       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', 'updTime')
+       #lk_qs = LangKeyModel.objects.filter(project_id=project_id).values('id', 'word_key')
+       if locationid:
+            search_qs = LangLocationModel.objects.filter(id=locationid).values('id','filename','line','lk__id','lk__word_key','lk__updTime')
+            lw_dict = {}
+            for lk in search_qs:
+                lw_dict[lk['id']] = {'id': lk['id'], 'filename': lk['filename'], 'line': lk['line'], 'lk_id': lk['lk__id'], 'word_key': lk['lk__word_key']}
+            res = {
+                'la_list': lw_dict,
+                'lw_dict': list(lk_qs)
+
+            }
+            return response.json(0, res)
+       else:
+
+           res = {
+               'lw_dict': list(lk_qs)
+           }
+           return response.json(0, res)
+
+    def do_query_saveOrEditTranslationFrom(self, request_dict, response, userID):
+       valueid = request_dict.get('valueid', None)
+       type = request_dict.get('type', None)
+
+       # lk_qs = LangKeyModel.objects.filter(project_id=project_id).values('id', 'word_key')
+       block_qs = SearchToolBlock.objects.filter(type=type).values('name', 'id', 'searchtoolkeymodel__lk__id')
+       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', 'updTime')
+       if valueid:
+           lang_set_list = LangSetModel.objects.filter(user__id=userID).values_list('lang__id', flat=True)
+           lang_set_list = list(lang_set_list)
+           la_qs = LangAreaModel.objects.filter(id__in=lang_set_list).values('lang', 'id')
+
+           # lk_qs = LangKeyModel.objects.filter(project_id=project_id).values('id', 'word_key', 'updTime')
+
+           k_list = []
+           lw_dict = {}
+           for lk in lk_qs:
+               k_list.append(lk['id'])
+               lw_dict[lk['id']] = {'word_key': lk['word_key'], 'updTime': lk['updTime']}
+           lv_qs = LangValModel.objects.filter(lk__id__in=k_list, la__id__in=lang_set_list). \
+               values('word_val', 'la__id', 'la__lang', 'lk__word_key', 'lk__id', 'status')
+           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)
+               lw_dict[lv['lk__id']][lang] = lv['word_val']
+               if user.role_type == 1:
+                   lw_dict[lv['lk__id']]['status'] = 0
+               elif lang in lang_perm_ls:
+                   lw_dict[lv['lk__id']]['status'] = lv['status']
+           res = {
+               'la_list': list(la_qs),
+               'lw_dict': lw_dict,
+               'lk_dict': list(lk_qs)
+           }
+           return response.json(0, res)
+       else:
+
+           res = {
+               'lk_dict': list(lk_qs)
+           }
+           return response.json(0, res)
+
+    def do_saveOrExitKey(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)
+        word_key = request_dict.get('word_key', None)
         type = request_dict.get('type', None)
+        project_id = request_dict.get('project_id', 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,
+                    'word_key': word_key,
                     'updTime': nowTime
                 }
-                SearchToolMessage.objects.filter(id=id).update(**update_dict)
+                LangKeyModel.objects.filter(id=id).update(**update_dict)
+                SearchToolKeyModel.objects.filter(lk__id=id).update(bk_id = bk_id )
             else:
-             SearchToolMessage.objects.create(location=location, line=line, source=source, translation=translation, type=type, bk_id=bk_id,  addTime=nowTime, updTime=nowTime)
+
+             lkModel = LangKeyModel.objects.create(word_key=word_key, type=type, project_id=project_id, addTime=nowTime, updTime=nowTime)
+             SearchToolKeyModel.objects.create(lk = lkModel, bk_id = bk_id)
         except Exception as e:
             print(repr(e))
             return response.json(404, repr(e))
         else:
             return response.json(0)
 
+    def do_saveOrExitLocation(self, request_dict, response):
+        id  = request_dict.get('id', None)
+        filename = request_dict.get('filename', None)
+        line = request_dict.get('line', None)
+        lk_id = request_dict.get('lk_id', None)
+
+        try:
+            if id:
+                update_dict = {
+                    'filename': filename,
+                    'line': line,
+                    'lk_id' : lk_id
+                }
+                LangLocationModel.objects.filter(id=id).update(**update_dict )
+            else:
+                LangLocationModel.objects.create(filename=filename, line=line, lk_id=lk_id)
+
+        except Exception as e:
+            print(repr(e))
+            return response.json(404, repr(e))
+        else:
+            return response.json(0)
+
+    def do_saveOrExitTranslation(self, request_dict, response):
+        id  = request_dict.get('id', None)
+        lk_id = request_dict.get('lk_id', None)
+        word_arr = request_dict.get('word_arr', None)
+        nowTime = int(time.time())
+        try:
+            if id:
+                for w in word_arr:
+                    lm =LangValModel.objects.filter(lk__id=lk_id, la_id=w['la_id'])
+                    if lm :
+                        lm.delete()
+                    LangValModel.objects.create(la_id=w['la_id'], lk_id=lk_id, addTime=nowTime, updTime=nowTime,
+                                                word_val=w['val'], status=1)
+            else:
+                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'], status=1)
+
+        except Exception as e:
+            print(repr(e))
+            return response.json(404, repr(e))
+        else:
+            return response.json(0)
+
+    def do_deleteKey(self, request_dict, response):
+        print('delete')
+        id = request_dict.get('id', None)
+
+        try:
+            LangKeyModel.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)

+ 26 - 15
model/models.py

@@ -47,11 +47,21 @@ class LangSetModel(models.Model):
         verbose_name = '用户关联语种配置'
         db_table = 'lang_set'
 
+class LangProjectModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    name = models.CharField(max_length=32, null=False, verbose_name='项目名')
+    add_time = models.IntegerField(default=0, verbose_name='添加时间')
+    update_time = models.IntegerField(default=0, verbose_name='更新时间')
+
+    class Meta:
+        verbose_name = '语言项目'
+        verbose_name_plural = verbose_name
+        db_table = 'lang_project'
 
-# 词汇
 class LangKeyModel(models.Model):
     id = models.AutoField(primary_key=True)
-    word_key = models.CharField(default='', max_length=64, verbose_name='词汇键', unique=True)
+    word_key = models.CharField(default='', max_length=64, verbose_name='词汇键')
+    project = models.ForeignKey(LangProjectModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联项目表')
     addTime = models.IntegerField(default=0, verbose_name='添加时间')
     updTime = models.IntegerField(default=0, verbose_name='更新时间')
     '''
@@ -60,6 +70,7 @@ class LangKeyModel(models.Model):
     type = models.SmallIntegerField(default=1, verbose_name='词汇键类型')
 
     class Meta:
+        unique_together = ('word_key', 'project')
         ordering = ('-addTime',)
         verbose_name = '词汇k表'
         db_table = 'lang_key'
@@ -209,17 +220,6 @@ class LangLocationModel(models.Model):
         db_table = 'lang_location'
 
 
-class LangProjectModel(models.Model):
-    id = models.AutoField(primary_key=True)
-    name = models.CharField(max_length=32, null=False, verbose_name='项目名')
-    add_time = models.IntegerField(default=0, verbose_name='添加时间')
-    update_time = models.IntegerField(default=0, verbose_name='更新时间')
-
-    class Meta:
-        verbose_name = '语言项目'
-        verbose_name_plural = verbose_name
-        db_table = 'lang_project'
-
 
 # 用户关联可编辑项目配置
 class ProjectPermModel(models.Model):
@@ -232,10 +232,10 @@ class ProjectPermModel(models.Model):
         verbose_name_plural = verbose_name
         db_table = 'project_perm'
 
-class SearchToolBlock(models.Model):
+class  SearchToolBlock(models.Model):
     id = models.AutoField(primary_key=True)
     name = models.CharField(default='', unique=True, max_length=200, verbose_name='块名称')
-    type = models.CharField(default='', unique=True, max_length=20, verbose_name='协议类型')
+    type = models.CharField(default='', max_length=20, verbose_name='协议类型')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)
 
@@ -259,3 +259,14 @@ class SearchToolMessage(models.Model):
         verbose_name = '协议消息存储'
         verbose_name_plural = verbose_name
         db_table = 'search_tool_message'
+
+# key关联可编辑协议内容
+class SearchToolKeyModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    lk = models.ForeignKey(LangKeyModel, to_field='id', on_delete=models.CASCADE, verbose_name='关联词汇键表')
+    bk = models.ForeignKey(SearchToolBlock, to_field='id', on_delete=models.DO_NOTHING, verbose_name='协议块存储')
+
+    class Meta:
+        verbose_name = 'key关联协议表'
+        verbose_name_plural = verbose_name
+        db_table = 'search_tool_block_key'

+ 9 - 1
web/langTab.html

@@ -208,9 +208,11 @@
             let avssw_btn = 'AVSS:<a href="#" title="avss" onclick="dlFunc(\'' + obj['id'] + '\',3)"><i class="fa fa-download"></i></a>';
             let link_ios_tbn = 'Link IOS:<a href="#" title="zosi_link_ios" onclick="dlFunc(\'' + obj['id'] + '\',4)"><i class="fa fa-download"></i></a>';
             let link_android_btn = 'Link 安卓:<a href="#" title="zosi_link_android" onclick="dlFunc(\'' + obj['id'] + '\',5)"><i class="fa fa-download"></i></a>';
+            let new_searchTool_btn = 'New Search Tool:<a href="#" title="new_searchTool" onclick="dlFunc(\'' + obj['id'] + '\',6)"><i class="fa fa-download"></i></a>';
+            let old_searchTool_btn = 'Old Search Tool:<a href="#" title="new_searchTool" onclick="dlFunc(\'' + obj['id'] + '\',7)"><i class="fa fa-download"></i></a>';
             let np = '&nbsp;&nbsp;&nbsp;'
             body_html += '<tr><td>' + obj['id'] + '</td><td>' + obj['lang'] + '</td><td>' + edit_btn + np + del_btn
-                + np + idw_btn + np + adw_btn + np + avssw_btn + np + link_ios_tbn + np + link_android_btn +'</td></tr>'
+                + np + idw_btn + np + adw_btn + np + avssw_btn + np + link_ios_tbn + np + link_android_btn + np + new_searchTool_btn + np + old_searchTool_btn +'</td></tr>'
         })
         $('#tabLangBody').html(body_html)
     }
@@ -320,6 +322,10 @@
             post_type = 'link_ios'
         }else if(type == 5){
             post_type = 'link_android'
+        }else if(type == 6){
+            post_type = 'new_searchTool'
+        }else if(type == 7){
+            post_type = 'old_searchTool'
         }
         let post_data = {
             'token': $.cookie('access_token'),
@@ -346,6 +352,8 @@
         }
     }
 
+
+
     function hideProject() {
         let project_perm = JSON.parse($.cookie('project_perm'));
         console.log('project_perm is ' + project_perm);

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 564 - 164
web/new_searchTool.html


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 564 - 165
web/old_searchTool.html


+ 1 - 1
web/zosi_link_index.html

@@ -464,7 +464,7 @@
                 let inputVal = $(this).val()
                 let langID = $(this).attr('langID')
                 if (langID === 'key') {
-                    post_data['word_key'] = inputVal
+                     post_data['word_key'] = inputVal
                 } else {
                     post_list.push({'la_id': langID, 'val': inputVal})
                 }

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä