def author_from_row(row, index=None): chunks = row.get('Name', '').split(' ') first_name = '{}test'.format(COMMAND_NAME).title() if IS_DEVELOPMENT \ else chunks[0] last_name = 'Author{}'.format(index) if IS_DEVELOPMENT \ else ' '.join(chunks[1:]).replace('\'', '') user_dict = { '__SEARCH_BY__': 'email', 'email': '{}.{}@{}.{}'.format( first_name.lower(), last_name.lower(), APP_NAME, TLD), 'firstName': first_name, 'lastName': last_name, 'scienceFeedbackIdentifier': row['airtableId'] } user = User.create_or_modify(user_dict) if not user.id: user.set_password(DEFAULT_USER_PASSWORD if IS_DEVELOPMENT else create_random_password()) role = Role.create_or_modify({ '__SEARCH_BY__': ['type', 'userId'], 'type': RoleType.AUTHOR, 'userId': humanize(user.id) }) user.roles = user.roles + [role] return user
def reviewer_from_row(row, index=None): first_name = '{}test'.format(COMMAND_NAME).title() if IS_DEVELOPMENT \ else row['First name'] last_name = 'Reviewer{}'.format(index) if IS_DEVELOPMENT \ else row['Last name'] user_dict = { '__SEARCH_BY__': 'email', 'email': '{}.{}@{}.{}'.format( first_name.lower(), last_name.lower(), APP_NAME, TLD) if IS_DEVELOPMENT else row['Email'], 'firstName': first_name, 'lastName': last_name, 'scienceFeedbackIdentifier': row['airtableId'] } user = User.create_or_modify(user_dict) if not user.id: user.set_password(DEFAULT_USER_PASSWORD if IS_DEVELOPMENT else create_random_password()) role = Role.create_or_modify({ '__SEARCH_BY__': ['type', 'userId'], 'type': RoleType.REVIEWER, 'userId': humanize(user.id) }) user.roles = user.roles + [role] return user
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