def review_from_row(row): user = User.query.filter_by(scienceFeedbackId=row['Review editor(s)'][0]).first() if not user: return review_dict = { 'scienceFeedbackId': row['airtableId'], 'userId': user.id } reviewed_science_feedback_id = row['Items reviewed'][0] article = Article.query.filter_by(scienceFeedbackId=reviewed_science_feedback_id).first() if article: review_dict['articleId'] = article.id else: claim = Claim.query.filter_by(scienceFeedbackId=reviewed_science_feedback_id).first() if not claim: return review_dict['claimId'] = claim.id return Review.create_or_modify(review_dict, search_by=['scienceFeedbackId'])
def review_from_row(row, unused_index=None): science_feedback_reviewer_ids = row.get('Review editor(s)') if not science_feedback_reviewer_ids: return None reviewer = User.query.filter_by( scienceFeedbackIdentifier=science_feedback_reviewer_ids[0]).first() if not reviewer: return None claim = Claim.query.filter_by( scienceFeedbackIdentifier=row['Items reviewed'][0]).first() if not claim: return None review_dict = { '__SEARCH_BY__': 'scienceFeedbackIdentifier', 'claim': claim, 'scienceFeedbackIdentifier': row['airtableId'], 'reviewer': reviewer } return Review.create_or_modify(review_dict)
def content_verdicts_from_scrap(verdicts_max=3): feedbacks = scrap_feedbacks(feedbacks_max=verdicts_max) verdicts = [] for feedback in feedbacks: verdict = Verdict.create_or_modify(feedback) content = content_from_url(feedback['article']['url']) for reviewer in verdict['reviewer']: reviewer = reviewer_from_url(reviewer['url']) user = User.create_or_modify({ '__SEARCH_BY__': ['firstName', 'lastName'], **reviewer }) role = Role.create_or_modify({ '__SEARCH_BY__': ['type', 'userId'], 'type': 'reviewer', 'userId': humanize(user.id) }) user.roles = user.roles + [role] review = Review.create_or_modify({ '__SEARCH_BY__': ['contentId', 'userId'], 'contentId': humanize(content.id), 'userId': humanize(user.id), **reviewer['review'] }) user.reviews = user.reviews + [review] verdict_user = VerdictUser.create_or_modify({ '__SEARCH_BY__': ['verdictId', 'userId'], 'verdictId': humanize(verdict.id), 'userId': humanize(user.id) }) verdict.verdictUsers = verdict.verdictUsers + [verdict_user] return verdicts