Beispiel #1
0
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'])
Beispiel #2
0
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