Пример #1
0
 def temp_save(self, request, pk):
     task = PageTask.objects.get(pk=pk)
     if (task.status != TaskStatus.NOT_READY and task.owner != request.user) or \
     (task.status == TaskStatus.NOT_READY and request.user.is_authenticated):
         if not request.user.is_admin:
             return Response({"status": -1, "msg": "No Permission!"})
     if PageVerifyTask.objects.filter(
             schedule=task.schedule,
             pagerect=task.pagerect,
             status__gte=TaskStatus.HANDLING).first():
         return Response({"status": -1, "msg": "审定任务已开始,保存已屏蔽!"})
     if 'current_x' in request.data:
         task.current_x = request.data['current_x']
         task.current_y = request.data['current_y']
         task.save(update_fields=['current_x', 'current_y'])
     rects = request.data['rects']
     DeletionCheckItem.direct_delete_rects(rects, task)
     _rects = [rect for rect in filter(lambda x: x['op'] != 3, rects)]
     for r in _rects:
         r['page_pid'] = task.pagerect.page.pk
         r['line_no'] = 0
         r['char_no'] = 0
     rectset = RectWriterSerializer(data=_rects, many=True)
     rectset.is_valid()
     Rect.bulk_insert_or_replace(rectset.data)
     PageRect.reformat_rects(task.pagerect.page.pk)
     return Response({"status": 0, "task_id": pk})
Пример #2
0
 def test_bulk_update_rect(self):
     rects = [rect.serialize_set for rect in Rect.objects.all()]
     for r in rects[:10]:
         r['id'] = None
     for r in rects:
         r['x']=10000
     rectset = RectWriterSerializer(data=rects, many=True)
     rectset.is_valid()
     Rect.bulk_insert_or_replace(rectset.data)
     all_changed = Rect.objects.filter(x=10000).count()
     print(all_changed)
     self.assertEquals(Rect.objects.count(), all_changed+10)
Пример #3
0
 def task_done(self, rects, task):
     # 直接過濾掉被刪除的框
     DeletionCheckItem.direct_delete_rects(rects, task)
     _rects = [rect for rect in filter(lambda x: x['op'] != 3, rects)]
     for r in _rects:
         r['page_pid'] = task.pagerect.page.pk
         r['line_no'] = 0
         r['char_no'] = 0
     rectset = RectWriterSerializer(data=_rects, many=True)
     rectset.is_valid()
     Rect.bulk_insert_or_replace(rectset.data)
     PageRect.reformat_rects(task.pagerect.page.pk)
     task.done()
Пример #4
0
 def test_bulk_create_rect(self):
     count = Rect.objects.count()
     rects =  [{
         "w": 34,
         "line_no": 5,
         "ch": "德",
         "wcc": 0.999976,
         "op": 3,
         "cc": 0.999976,
         "x": 944,
         "ts": "",
         "char_no": 9,
         "h": 28,
         "y": 372,
         "column_set": {
             "x1": 987,
             "y1": 780,
             "y": 0,
             "col_id": "YB000790v058p00022005",
             "x": 936
         },
         "cid": "YB000790v058p00022005n09",
         "page_code": "YB000790v058p000220",
         "reel_id": "YB000790r058"
     },
     {
         "w": 34,
         "line_no": 8,
         "ch": "衆",
         "wcc": 0.999971,
         "op": 3,
         "cc": 0.999971,
         "x": 796,
         "ts": "",
         "char_no": 3,
         "h": 30,
         "y": 176,
         "column_set": {
             "x1": 842,
             "y1": 780,
             "y": 0,
             "col_id": "YB000790v058p00022008",
             "x": 792
         },
         "cid": "YB000790v058p00022008n03",
         "page_code": "YB000790v058p000220",
         "reel_id": "YB000790r058"
     }]
     Rect.bulk_insert_or_replace(rects)
     self.assertEquals(Rect.objects.count(), count+2)
Пример #5
0
 def _test_bulk_create_rect(self):
     count = Rect.objects.count()
     rects = [{
         "w": 34,
         "line_no": 5,
         "ch": "德",
         "wcc": 0.999976,
         "op": 3,
         "cc": 0.999976,
         "x": 944,
         "ts": "",
         "char_no": 9,
         "h": 28,
         "y": 372,
         "column_set": {
             "x1": 987,
             "y1": 780,
             "y": 0,
             "col_id": "YB_27_c1014",
             "x": 936
         },
         "cid": "YB000860_001_01_0_12_22",
         "page_pid": "YB000860_001_01_0",
         "reel_id": "1"
     }, {
         "w": 34,
         "line_no": 8,
         "ch": "衆",
         "wcc": 0.999971,
         "op": 3,
         "cc": 0.999971,
         "x": 796,
         "ts": "",
         "char_no": 3,
         "h": 30,
         "y": 176,
         "column_set": {
             "x1": 842,
             "y1": 780,
             "y": 0,
             "col_id": "YB_27_c1014",
             "x": 792
         },
         "cid": "YB000860_001_01_0_12_23",
         "page_pid": "YB000860_001_01_0",
         "reel_id": "1"
     }]
     Rect.bulk_insert_or_replace(rects)
     self.assertEquals(Rect.objects.count(), count + 2)
Пример #6
0
 def task_redo(self, request, pk):
     task = PageVerifyTask.objects.get(pk=pk)
     if (task.owner != request.user):
         return Response({"status": -1, "msg": "No Permission!"})
     if 'current_x' in request.data:
         task.current_x = request.data['current_x']
         task.current_y = request.data['current_y']
         task.save(update_fields=['current_x', 'current_y'])
     rects = request.data['rects']
     DeletionCheckItem.direct_delete_rects(rects, task)
     _rects = [rect for rect in filter(lambda x: x['op'] != 3, rects)]
     for r in _rects:
         r['page_pid'] = task.pagerect.page.pk
         r['line_no'] = 0
         r['char_no'] = 0
     rectset = RectWriterSerializer(data=_rects, many=True)
     rectset.is_valid()
     Rect.bulk_insert_or_replace(rectset.data)
     PageRect.reformat_rects(task.pagerect.page.pk)
     task.redo()
     return Response({"status": 0, "task_id": pk})
Пример #7
0
 def task_done(self, rects, task):
     rectset = RectWriterSerializer(data=rects, many=True)
     rectset.is_valid()
     Rect.bulk_insert_or_replace(rectset.data)
     DeletionCheckItem.create_from_rect(rects, task)
     task.done()