Beispiel #1
0
def insert_paper():
    if request.method == 'POST':
        paper = db.session.query(Paper).filter_by(doi=request.json['doi']).first()
        if not paper:
            paper = Paper(year=request.json['year'],
                         title=request.json['title'],
                         abstract=request.json['abstract'],
                         user_id=g.user.id,
                         doi=request.json['doi'])
            db.session.add(paper)
            db.session.flush()
            for author in request.json['authors']:
                paper_author = db.session.query(Author).filter_by(name=author).first()
                if paper_author:
                    paper_author.start_owning(paper)
                else:
                    paper_author = Author(name=author)
                    db.session.add(paper_author)
                    db.session.flush()
                    paper_author.start_owning(paper)
            db.session.commit()
            for doi in request.json['doi_refs']:
                ref_paper = db.session.query(Paper).filter_by(doi=doi).first()
                if ref_paper:
                    paper.start_referencing(ref_paper)
                else:
                    ref_paper = Paper(doi=doi)
                    db.session.add(ref_paper)
                    db.session.flush()
                    paper.start_referencing(ref_paper)
            db.session.commit()
    return json.dumps(dict(data=request.json))