Пример #1
0
    def _process(self):
        defaults = FormDefaults(
            content_review_questions=self.event.cfp.content_review_questions,
            layout_review_questions=self.event.cfp.layout_review_questions,
            **paper_reviewing_settings.get_all(self.event))
        form = PaperReviewingSettingsForm(event=self.event, obj=defaults)
        if form.validate_on_submit():
            data = form.data
            content_review_questions = data.pop('content_review_questions',
                                                None)
            layout_review_questions = data.pop('layout_review_questions', None)
            if content_review_questions is None:
                content_review_questions = self.event.cfp.content_review_questions
            if layout_review_questions is None:
                layout_review_questions = self.event.cfp.layout_review_questions
            self.event.paper_review_questions = content_review_questions + layout_review_questions

            email_settings = data.pop('email_settings')
            data.update(email_settings)

            paper_reviewing_settings.set_multi(self.event, data)
            flash(_("The reviewing settings were saved successfully"),
                  'success')
            logger.info("Paper reviewing settings of %r updated by %r",
                        self.event, session.user)
            return jsonify_data()
        self.commit = False
        return jsonify_form(form)
Пример #2
0
 def _process(self):
     has_ratings = (PaperReviewRating.query.join(
         PaperReviewRating.review).join(PaperReview.revision).join(
             PaperRevision._contribution).join(
                 PaperReviewRating.question).filter(
                     ~Contribution.is_deleted,
                     Contribution.event == self.event,
                     PaperReviewQuestion.field_type == 'rating').has_rows())
     defaults = FormDefaults(
         content_review_questions=self.event.cfp.content_review_questions,
         layout_review_questions=self.event.cfp.layout_review_questions,
         **paper_reviewing_settings.get_all(self.event))
     form = PaperReviewingSettingsForm(event=self.event,
                                       obj=defaults,
                                       has_ratings=has_ratings)
     if form.validate_on_submit():
         data = form.data
         data.update(data.pop('email_settings'))
         paper_reviewing_settings.set_multi(self.event, data)
         flash(_("The reviewing settings were saved successfully"),
               'success')
         logger.info("Paper reviewing settings of %r updated by %r",
                     self.event, session.user)
         return jsonify_data()
     self.commit = False
     disabled_fields = form.RATING_FIELDS if has_ratings else ()
     return jsonify_form(form, disabled_fields=disabled_fields)
Пример #3
0
def set_deadline(event, role, deadline, enforce=True):
    paper_reviewing_settings.set_multi(event, {
        '{}_deadline'.format(role.name): deadline,
        'enforce_{}_deadline'.format(role.name): enforce
    })
    log_data = {'Enforced': enforce, 'Deadline': deadline.isoformat() if deadline else 'None'}
    logger.info('Paper reviewing deadline (%s) set in %r by %r', role.name, event, session.user)
    event.log(EventLogRealm.reviewing, EventLogKind.change, 'Papers',
              "Paper reviewing deadline ({}) set".format(role.title), session.user, data=log_data)
Пример #4
0
def set_deadline(event, role, deadline, enforce=True):
    paper_reviewing_settings.set_multi(event, {
        f'{role.name}_deadline': deadline,
        f'enforce_{role.name}_deadline': enforce
    })
    log_data = {'Enforced': enforce, 'Deadline': deadline.isoformat() if deadline else 'None'}
    logger.info('Paper reviewing deadline (%s) set in %r by %r', role.name, event, session.user)
    event.log(EventLogRealm.reviewing, EventLogKind.change, 'Papers',
              f"Paper reviewing deadline ({role.title}) set", session.user, data=log_data)
Пример #5
0
 def _process(self):
     defaults = FormDefaults(content_review_questions=self.event.cfp.content_review_questions,
                             layout_review_questions=self.event.cfp.layout_review_questions,
                             **paper_reviewing_settings.get_all(self.event))
     form = PaperReviewingSettingsForm(event=self.event, obj=defaults, has_ratings=self.ratings_query.has_rows())
     if form.validate_on_submit():
         data = form.data
         data.update(data.pop('email_settings'))
         self._scale_ratings(data['scale_lower'], data['scale_upper'])
         paper_reviewing_settings.set_multi(self.event, data)
         flash(_('The reviewing settings were saved successfully'), 'success')
         logger.info('Paper reviewing settings of %r updated by %r', self.event, session.user)
         return jsonify_data()
     self.commit = False
     return jsonify_form(form)
Пример #6
0
    def _scale_ratings(self, scale_min, scale_max):
        prev_min = paper_reviewing_settings.get(self.event, 'scale_lower')
        prev_max = paper_reviewing_settings.get(self.event, 'scale_upper')
        if scale_min == prev_min and scale_max == prev_max:
            return
        assert scale_max > scale_min

        paper_reviewing_settings.set_multi(self.event, {
            'scale_lower': scale_min,
            'scale_upper': scale_max,
        })
        for rating in self.ratings_query:
            if rating.value is None:
                continue
            value = (rating.value - prev_min) / (prev_max - prev_min)
            rating.value = round(value * (scale_max - scale_min) + scale_min)
Пример #7
0
 def _process(self):
     has_ratings = (PaperReviewRating.query
                    .join(PaperReviewRating.review)
                    .join(PaperReview.revision)
                    .join(PaperRevision._contribution)
                    .join(PaperReviewRating.question)
                    .filter(~Contribution.is_deleted,
                            Contribution.event == self.event,
                            PaperReviewQuestion.field_type == 'rating')
                    .has_rows())
     defaults = FormDefaults(content_review_questions=self.event.cfp.content_review_questions,
                             layout_review_questions=self.event.cfp.layout_review_questions,
                             **paper_reviewing_settings.get_all(self.event))
     form = PaperReviewingSettingsForm(event=self.event, obj=defaults, has_ratings=has_ratings)
     if form.validate_on_submit():
         data = form.data
         data.update(data.pop('email_settings'))
         paper_reviewing_settings.set_multi(self.event, data)
         flash(_("The reviewing settings were saved successfully"), 'success')
         logger.info("Paper reviewing settings of %r updated by %r", self.event, session.user)
         return jsonify_data()
     self.commit = False
     disabled_fields = form.RATING_FIELDS if has_ratings else ()
     return jsonify_form(form, disabled_fields=disabled_fields)
Пример #8
0
    def _process(self):
        defaults = FormDefaults(content_review_questions=self.event.cfp.content_review_questions,
                                layout_review_questions=self.event.cfp.layout_review_questions,
                                **paper_reviewing_settings.get_all(self.event))
        form = PaperReviewingSettingsForm(event=self.event, obj=defaults)
        if form.validate_on_submit():
            data = form.data
            content_review_questions = data.pop('content_review_questions', None)
            layout_review_questions = data.pop('layout_review_questions', None)
            if content_review_questions is None:
                content_review_questions = self.event.cfp.content_review_questions
            if layout_review_questions is None:
                layout_review_questions = self.event.cfp.layout_review_questions
            self.event.paper_review_questions = content_review_questions + layout_review_questions

            email_settings = data.pop('email_settings')
            data.update(email_settings)

            paper_reviewing_settings.set_multi(self.event, data)
            flash(_("The reviewing settings were saved successfully"), 'success')
            logger.info("Paper reviewing settings of %r updated by %r", self.event, session.user)
            return jsonify_data()
        self.commit = False
        return jsonify_form(form)
Пример #9
0
 def schedule(self, start_dt, end_dt):
     paper_reviewing_settings.set_multi(self.event, {
         'start_dt': start_dt,
         'end_dt': end_dt
     })
Пример #10
0
    def _migrate_settings(self):
        pr = self.pr

        role_add = _translate_notif_options(
            pr, {
                'layout_reviewer': ('_enableEditorEmailNotif', False),
                'content_reviewer': ('_enableReviewerEmailNotif', False),
                'judge': ('_enableRefereeEmailNotif', False)
            })

        contrib_assignment = _translate_notif_options(
            pr, {
                'layout_reviewer':
                ('_enableEditorEmailNotifForContribution', False),
                'content_reviewer':
                ('_enableReviewerEmailNotifForContribution', False),
                'judge': ('_enableRefereeEmailNotifForContribution', False)
            })

        paper_submission = _translate_notif_options(
            pr, {
                'layout_reviewer':
                ('_enableAuthorSubmittedMatEditorEmailNotif', True),
                'content_reviewer':
                ('_enableAuthorSubmittedMatReviewerEmailNotif', True),
                'judge': ('_enableAuthorSubmittedMatRefereeEmailNotif', False)
            })

        paper_reviewing_settings.set_multi(
            self.event,
            {
                'start_dt':
                _to_utc(pr._startSubmissionDate),
                'end_dt':
                _to_utc(pr._endSubmissionDate),
                'judge_deadline':
                _to_utc(pr._defaultRefereeDueDate),
                'content_reviewer_deadline':
                _to_utc(pr._defaultReviwerDueDate),
                'layout_reviewer_deadline':
                _to_utc(pr._defaultEditorDueDate),
                'enforce_judge_deadline':
                False,
                'enforce_layout_reviewer_deadline':
                False,
                'enforce_content_reviewer_deadline':
                False,
                'content_reviewing_enabled':
                pr._choice
                in {CPR_CONTENT_REVIEWING, CPR_CONTENT_AND_LAYOUT_REVIEWING},
                'layout_reviewing_enabled':
                pr._choice
                in {CPR_LAYOUT_REVIEWING, CPR_CONTENT_AND_LAYOUT_REVIEWING},
                'scale_lower':
                -3,
                'scale_upper':
                3,

                # notifications
                'notify_on_added_to_event':
                role_add,
                'notify_on_assigned_contrib':
                contrib_assignment,
                'notify_on_paper_submission':
                paper_submission,
                'notify_judge_on_review':
                (getattr(pr, '_enableEditorSubmittedRefereeEmailNotif', True)
                 or getattr(pr, '_enableReviewerSubmittedRefereeEmailNotif',
                            True)),
                'notify_author_on_judgment':
                (pr._enableRefereeJudgementEmailNotif
                 or pr._enableEditorJudgementEmailNotif
                 or pr._enableReviewerJudgementEmailNotif)
            })
Пример #11
0
 def schedule(self, start_dt, end_dt):
     paper_reviewing_settings.set_multi(self.event, {
         'start_dt': start_dt,
         'end_dt': end_dt
     })