def _value(self): return { 'notify_on_added_to_event': [x.name for x in settings.get(self.event, 'notify_on_added_to_event')], 'notify_on_assigned_contrib': [x.name for x in settings.get(self.event, 'notify_on_assigned_contrib')], 'notify_on_paper_submission': [x.name for x in settings.get(self.event, 'notify_on_paper_submission')], 'notify_judge_on_review': settings.get(self.event, 'notify_judge_on_review'), 'notify_author_on_judgment': settings.get(self.event, 'notify_author_on_judgment') }
def update_team_members(event, managers, judges, content_reviewers=None, layout_reviewers=None): updated = {} update_object_principals(event, managers, role='paper_manager') updated[PaperReviewingRole.judge] = update_object_principals(event, judges, role='paper_judge') if content_reviewers is not None: updated[PaperReviewingRole.content_reviewer] = update_object_principals(event, content_reviewers, role='paper_content_reviewer') if layout_reviewers is not None: updated[PaperReviewingRole.layout_reviewer] = update_object_principals(event, layout_reviewers, role='paper_layout_reviewer') unassigned_contribs = _unassign_removed(event, updated) roles_to_notify = paper_reviewing_settings.get(event, 'notify_on_added_to_event') if PaperReviewingRole.judge in roles_to_notify: for judge in updated[PaperReviewingRole.judge]['added']: notify_added_to_reviewing_team(judge, PaperReviewingRole.judge, event) for judge in updated[PaperReviewingRole.judge]['removed']: notify_removed_from_reviewing_team(judge, PaperReviewingRole.judge, event) if PaperReviewingRole.content_reviewer in roles_to_notify: for reviewer in updated[PaperReviewingRole.content_reviewer]['added']: notify_added_to_reviewing_team(reviewer, PaperReviewingRole.content_reviewer, event) for reviewer in updated[PaperReviewingRole.content_reviewer]['removed']: notify_removed_from_reviewing_team(reviewer, PaperReviewingRole.content_reviewer, event) if PaperReviewingRole.layout_reviewer in roles_to_notify: for reviewer in updated[PaperReviewingRole.layout_reviewer]['added']: notify_added_to_reviewing_team(reviewer, PaperReviewingRole.layout_reviewer, event) for reviewer in updated[PaperReviewingRole.layout_reviewer]['removed']: notify_removed_from_reviewing_team(reviewer, PaperReviewingRole.layout_reviewer, event) logger.info("Paper teams of %r updated by %r", event, session.user) return unassigned_contribs
def update_reviewing_roles(event, users, contributions, role, assign): role_map = { PaperReviewingRole.judge: attrgetter('paper_judges'), PaperReviewingRole.content_reviewer: attrgetter('paper_content_reviewers'), PaperReviewingRole.layout_reviewer: attrgetter('paper_layout_reviewers'), } for contrib in contributions: role_group = role_map[role](contrib) for user in users: if assign: role_group.add(user) else: role_group.discard(user) contrib_ids = ['#{}'.format(c.friendly_id) for c in sorted(contributions, key=attrgetter('friendly_id'))] log_data = {'Users': ', '.join(sorted(person.full_name for person in users)), 'Contributions': ', '.join(contrib_ids)} roles_to_notify = paper_reviewing_settings.get(event, 'notify_on_assigned_contrib') if role in roles_to_notify: for user in users: notify_paper_assignment(user, role, contributions, event, assign) if assign: event.log(EventLogRealm.management, EventLogKind.positive, 'Papers', 'Papers assigned ({})'.format(orig_string(role.title)), session.user, data=log_data) else: event.log(EventLogRealm.management, EventLogKind.negative, 'Papers', 'Papers unassigned ({})'.format(orig_string(role.title)), session.user, data=log_data) db.session.flush() logger.info('Paper reviewing roles in event %r updated by %r', event, session.user)
def _process(self): role = PaperReviewingRole[request.view_args['role']] deadline = paper_reviewing_settings.get( self.event, '{}_deadline'.format(role.name)) enforce = paper_reviewing_settings.get( self.event, 'enforce_{}_deadline'.format(role.name)) form = DeadlineForm(obj=FormDefaults(deadline=deadline, enforce=enforce), event=self.event) if form.validate_on_submit(): set_deadline(self.event, role, form.deadline.data, form.enforce.data) messages = { PaperReviewingRole.content_reviewer: _('Content reviewing deadline has been set.'), PaperReviewingRole.layout_reviewer: _('Layout reviewing deadline has been set.'), PaperReviewingRole.judge: _('Judging deadline has been set.') } flash(messages[role], 'success') return jsonify_data(html=_render_paper_dashboard(self.event)) return jsonify_form(form)
def rating_range(self): return tuple(paper_reviewing_settings.get(self.event, key) for key in ('scale_lower', 'scale_upper'))
def announcement(self): return MarkdownText(paper_reviewing_settings.get(self.event, 'announcement'))