def _set_special_comments(ann_obj, __id, comment, mods, undo_resp={}): # Check if there is already an annotation comment for com_ann in ann_obj.get_oneline_comments(): if (com_ann.type == 'AnnotatorNotes' and com_ann.target == __id): found = com_ann # Note the comment in the undo undo_resp['comment'] = found.tail[1:] break else: found = None if comment: if found is not None: # Change the comment # XXX: Note the ugly tab, it is for parsing the tail before = str(found) found.tail = '\t' + comment mods.change(before, found) else: # Create a new comment new_comment = OnelineCommentAnnotation( __id, ann_obj.get_new_id('#'), # XXX: Note the ugly tab 'AnnotatorNotes', '\t' + comment) ann_obj.add_annotation(new_comment) mods.addition(new_comment) else: # We are to erase the annotation if found is not None: ann_obj.del_annotation(found) mods.deletion(found)
def set_status(directory, document, status=None): real_dir = real_directory(directory) with TextAnnotations(path_join(real_dir, document)) as ann: # Erase all old status annotations for status in ann.get_statuses(): ann.del_annotation(status) if status is not None: # XXX: This could work, not sure if it can induce an id collision new_status_id = ann.get_new_id('#') ann.add_annotation( OnelineCommentAnnotation(new_status, new_status_id, 'STATUS', '')) json_dic = {'status': new_status} return json_dic
def _set_comments(ann_obj, ann, comment, mods, undo_resp={}): # We are only interested in id;ed comments try: ann.id except AttributeError: return None # Check if there is already an annotation comment for com_ann in ann_obj.get_oneline_comments(): if (com_ann.type == 'AnnotatorNotes' and com_ann.target == ann.id): found = com_ann # Note the comment in the undo undo_resp['comment'] = found.tail[1:] break else: found = None if comment: if found is not None: # Change the comment # XXX: Note the ugly tab, it is for parsing the tail before = unicode(found) found.tail = u'\t' + comment mods.change(before, found) else: # Create a new comment new_comment = OnelineCommentAnnotation( ann.id, ann_obj.get_new_id('#'), # XXX: Note the ugly tab u'AnnotatorNotes', u'\t' + comment) ann_obj.add_annotation(new_comment) mods.addition(new_comment) else: # We are to erase the annotation if found is not None: ann_obj.del_annotation(found) mods.deletion(found)