diff options
-rw-r--r-- | fatcat/models.py | 4 | ||||
-rw-r--r-- | fatcat/sql.py | 13 |
2 files changed, 10 insertions, 7 deletions
diff --git a/fatcat/models.py b/fatcat/models.py index 6672ce2e..9abb286e 100644 --- a/fatcat/models.py +++ b/fatcat/models.py @@ -39,7 +39,7 @@ class ReleaseRef(db.Model): __tablename__ = "release_ref" id = db.Column(db.Integer, primary_key=True, nullable=False) release_rev= db.Column(db.ForeignKey('release_revision.id'), nullable=False) - target_release_id= db.Column(db.ForeignKey('release_id.id'), nullable=False) + target_release_id= db.Column(db.ForeignKey('release_id.id'), nullable=True) index = db.Column(db.Integer, nullable=True) stub = db.Column(db.String, nullable=True) doi = db.Column(db.String, nullable=True) @@ -122,9 +122,7 @@ class ReleaseRevision(db.Model): issue = db.Column(db.String, nullable=True) creators = db.relationship('ReleaseContrib', lazy='subquery') - #backref=db.backref('releases', lazy=True)) refs = db.relationship('ReleaseRef', lazy='subquery') - #backref=db.backref('backrefs', lazy=True)) class CreatorId(db.Model): __tablename__ = 'creator_id' diff --git a/fatcat/sql.py b/fatcat/sql.py index c3c928a8..ad0a045f 100644 --- a/fatcat/sql.py +++ b/fatcat/sql.py @@ -184,10 +184,15 @@ def add_crossref(meta): extra_json = ExtraJson(json=extra, sha1=hashlib.sha1(extra).hexdigest()) release.extra_json = extra_json.sha1 - # references (TODO) - #refs = [] - #for rm in meta['reference']: - # rm: author, volume, first-page, year, journal-title, DOI + # references + for i, rm in enumerate(meta.get('reference', [])): + ref = ReleaseRef( + release_rev=release.id, + doi=rm.get("DOI", None), + index=i+1, + # TODO: how to generate a proper stub here from k/v metadata? + stub="| ".join(rm.values())) + release.refs.append(ref) db.session.add_all([work, work_id, release, release_id, container, container_id, extra_json]) |