Exemplo n.º 1
0
 def flag_document(self, data):
     user_id, document_id = data['user_id'], data['document_id']
     annotation_set = op.get_annotation_set(user_id, document_id)
     op.update_object(annotation_set,
                      {'flagged': not annotation_set.flagged})
     data = AnnotationSetSchema().dump(annotation_set)
     return js.success(data)
Exemplo n.º 2
0
 def put(self, project_id, task_id):
     # authenticate
     task = get_task(task_id)
     # validate input
     data = request.get_json()
     data.update({'project_id': project_id})
     schema = TaskSchema()
     data_labels = data['labels']
     data = schema.load(data, unknown=EXCLUDE)
     # update object
     task.labels[:] = []
     for data_label in data_labels:
         label = None
         if 'id' in data_label:
             label_id = data_label['id']
             label = Label.query.get(label_id)
         if label is None:  # create if label not found
             label_schema = LabelSchema()
             data_label = label_schema.load(data_label)
             label = Label(**data_label)
         else:
             op.update_object(label, data_label, commit=False)
         task.labels.append(label)
     op.update_object(task, data)
     # return status
     data = schema.dump(task)
     return js.success(data)
Exemplo n.º 3
0
 def put(self, project_id):
     data = request.get_json()
     schema = ProjectSchema()
     schema.load(data, partial=True, unknown=EXCLUDE)
     project = get_project(project_id)
     op.update_object(project, data)
     data = schema.dump(project)
     return js.success(data)
Exemplo n.º 4
0
 def put(self, project_id, document_id):
     # get params
     data = request.get_json()
     # Authenticate and get
     document = get_document(document_id)
     # update object
     op.update_object(document, data)
     # return updated
     data = DocumentSchema().dump(document)
     return js.success(data)
Exemplo n.º 5
0
 def put(self, user_id):
     # Assert project authorization for authenticated user
     assert g.current_user.id == user_id, {
         '_root': ['You are not authorized to update another account.']
     }
     payload = request.get_json()
     schema = UserSchema()
     data = schema.load(payload, unknown=EXCLUDE)
     if 'password' in data:
         data['password'] = hash_password(data['password'])
     user = User.query.get(user_id)
     op.update_object(user, data)
     data = schema.dump(user)
     return js.success(data)
Exemplo n.º 6
0
 def save_document(self, data):
     user_id, document_id, annotations = data['user_id'], data[
         'document_id'], data['annotations']
     # Delete existing annotations
     annotation_set = op.get_annotation_set(user_id, document_id)
     query = Annotation.query.filter_by(annotation_set_id=annotation_set.id)
     op.delete_object(query, True)
     # Create new annotations
     schema = AnnotationSchema()
     for a in annotations:
         a['annotation_set_id'] = annotation_set.id
     data = schema.load(annotations, many=True)
     annotations = []
     for a in data:
         span = None
         if 'span' in a:
             s = a.pop('span')
             span = AnnotationSpan(**s)
         a = Annotation(**a)
         a.span = span
         annotations.append(a)
     op.create_object(annotations, many=True)
     op.update_object(annotation_set, {'completed': True})
     return js.success()
Exemplo n.º 7
0
 def skip_document(self, data):
     user_id, document_id = data['user_id'], data['document_id']
     annotation_set = op.get_annotation_set(user_id, document_id)
     op.update_object(annotation_set, {'skipped': True})
     data = AnnotationSetSchema().dump(annotation_set)
     return js.success(data)