예제 #1
0
def update_relations(request):
    if request.body:
        data = simplejson.loads(request.body)
        if len(data) > 0:
            Relation.objects.filter(
                term1=Term.objects.get_term_from_dict(data[0], 'term1')
            ).exclude(
                id__in=[r['id'] for r in data if 'id' in r],
            ).delete()
        for r_data in data:
            if 'id' in r_data:
                relation = Relation.objects.get(id=r_data['id'], state='v')
            else:
                relation = Relation()
            relation.text1 = r_data['text1']
            relation.text2 = r_data['text2']
            relation.type = RelationType.objects.from_identifier(
                identifier=r_data['name'],
                source=get_source(request),)
            relation.term1 = Term.objects.get_term_from_dict(r_data, 'term1')
            relation.term2 = Term.objects.get_term_from_dict(r_data, 'term2')
            add_fma_id(relation.term1, r_data.get('text1'))
            add_fma_id(relation.term2, r_data.get('text2'))
            relation.save()
        response = {
            'type': 'success',
            'msg': u'Změny byly uloženy',
        }
    return render_json(request, response)
예제 #2
0
def relation_tree_update(request):
    data = simplejson.loads(request.body)

    def _get_term(data):
        if 'id' in data:
            term = Term.objects.get(pk=data['id'])
        else:
            term = Term()
        term.name_en = data.get('name_en', '')
        term.name_la = data.get('name_la', '')
        term.name_cs = data.get('name_cs', '')
        term.system = data.get('system', '')
        term.bodypart = data.get('body_part', '')
        term.fma_id = data.get('fma_id', -1)
        term.save()
        return term

    result = []
    for rel in data:
        if 'id' in rel:
            relation = Relation.objects.get(pk=rel['id'])
        else:
            relation = Relation()
        relation.type = get_object_or_404(RelationType, identifier=rel['name'])
        relation.term1 = _get_term(rel['term1'])
        relation.term2 = _get_term(rel['term2'])
        relation.labels = '|'.join(set(rel.get('labels', [])))
        relation.state = rel.get('state', 'unknown')[0]
        relation.save()
        result.append(relation.to_serializable())
    return render_json(request, result)