def _process(self): has_ratings = (AbstractReviewRating.query.join( AbstractReviewRating.review).join(AbstractReview.abstract).filter( ~Abstract.is_deleted, Abstract.event_new == self.event_new).has_rows()) defaults = FormDefaults( abstract_review_questions=self.event_new.abstract_review_questions, **abstracts_reviewing_settings.get_all(self.event_new)) form = AbstractReviewingSettingsForm(event=self.event_new, obj=defaults, has_ratings=has_ratings) if form.validate_on_submit(): data = form.data # XXX: we need to do this assignment for new questions, # but editing or deleting existing questions changes an # object that is already in the session so it's updated # in any case self.event_new.abstract_review_questions = data.pop( 'abstract_review_questions') abstracts_reviewing_settings.set_multi(self.event_new, data) flash(_('Abstract reviewing settings have been saved'), 'success') return jsonify_data() self.commit = False disabled_fields = form.RATING_FIELDS if has_ratings else () return jsonify_form(form, disabled_fields=disabled_fields)
def _clone_settings(self, new_event): old_settings = abstracts_settings.get_all(self.old_event, no_defaults=True) offset = new_event.start_dt - self.old_event.start_dt for key in ('start_dt', 'end_dt', 'modification_end_dt'): if not old_settings.get(key): continue old_settings[key] += offset abstracts_settings.set_multi(new_event, old_settings) abstracts_reviewing_settings.set_multi(new_event, abstracts_reviewing_settings.get_all(self.old_event, no_defaults=True)) boa_settings.set_multi(new_event, boa_settings.get_all(self.old_event, no_defaults=True))
def _clone_settings(self, new_event): old_settings = abstracts_settings.get_all(self.old_event, no_defaults=True) offset = new_event.start_dt - self.old_event.start_dt for key in ('start_dt', 'end_dt', 'modification_end_dt'): if not old_settings.get(key): continue old_settings[key] += offset abstracts_settings.set_multi(new_event, old_settings) abstracts_reviewing_settings.set_multi(new_event, abstracts_reviewing_settings.get_all(self.old_event, no_defaults=True)) boa_settings.set_multi(new_event, boa_settings.get_all(self.old_event, no_defaults=True))
def _process(self): defaults = FormDefaults(**abstracts_reviewing_settings.get_all(self.event)) form = AbstractReviewingSettingsForm(event=self.event, obj=defaults, has_ratings=self.ratings_query.has_rows()) if form.validate_on_submit(): data = form.data self._scale_ratings(data['scale_lower'], data['scale_upper']) abstracts_reviewing_settings.set_multi(self.event, data) flash(_('Abstract reviewing settings have been saved'), 'success') return jsonify_data() self.commit = False return jsonify_form(form)
def _scale_ratings(self, scale_min, scale_max): prev_min = abstracts_reviewing_settings.get(self.event, 'scale_lower') prev_max = abstracts_reviewing_settings.get(self.event, 'scale_upper') if scale_min == prev_min and scale_max == prev_max: return assert scale_max > scale_min abstracts_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)
def _migrate_review_settings(self): try: old_settings = self.conf._confAbstractReview except AttributeError: return self.old_scale = (int(old_settings._scaleLower), int(old_settings._scaleHigher)) if self.old_scale[1] - self.old_scale[0] <= 20: self.new_scale = self.old_scale else: self.new_scale = (0, 10) abstracts_reviewing_settings.set_multi(self.event, { 'scale_lower': self.new_scale[0], 'scale_upper': self.new_scale[1], 'allow_convener_judgment': bool(getattr(old_settings, '_canReviewerAccept', False)) }) for pos, old_question in enumerate(old_settings._reviewingQuestions, 1): self._migrate_question(old_question, pos=pos)
def _migrate_review_settings(self): try: old_settings = self.conf._confAbstractReview except AttributeError: return self.old_scale = (int(old_settings._scaleLower), int(old_settings._scaleHigher)) if self.old_scale[1] - self.old_scale[0] <= 20: self.new_scale = self.old_scale else: self.new_scale = (0, 10) abstracts_reviewing_settings.set_multi(self.event, { 'scale_lower': self.new_scale[0], 'scale_upper': self.new_scale[1], 'allow_convener_judgment': bool(getattr(old_settings, '_canReviewerAccept', False)) }) for pos, old_question in enumerate(old_settings._reviewingQuestions, 1): self._migrate_question(old_question, pos=pos)
def _process(self): has_ratings = (AbstractReviewRating.query .join(AbstractReviewRating.review) .join(AbstractReview.abstract) .join(AbstractReviewRating.question) .filter(~Abstract.is_deleted, Abstract.event == self.event, AbstractReviewQuestion.field_type == 'rating') .has_rows()) defaults = FormDefaults(**abstracts_reviewing_settings.get_all(self.event)) form = AbstractReviewingSettingsForm(event=self.event, obj=defaults, has_ratings=has_ratings) if form.validate_on_submit(): data = form.data abstracts_reviewing_settings.set_multi(self.event, data) flash(_('Abstract reviewing settings have been saved'), 'success') return jsonify_data() self.commit = False disabled_fields = form.RATING_FIELDS if has_ratings else () return jsonify_form(form, disabled_fields=disabled_fields)
def _process(self): has_ratings = (AbstractReviewRating.query .join(AbstractReviewRating.review) .join(AbstractReview.abstract) .join(AbstractReviewRating.question) .filter(~Abstract.is_deleted, Abstract.event == self.event, AbstractReviewQuestion.field_type == 'rating') .has_rows()) defaults = FormDefaults(**abstracts_reviewing_settings.get_all(self.event)) form = AbstractReviewingSettingsForm(event=self.event, obj=defaults, has_ratings=has_ratings) if form.validate_on_submit(): data = form.data abstracts_reviewing_settings.set_multi(self.event, data) flash(_('Abstract reviewing settings have been saved'), 'success') return jsonify_data() self.commit = False disabled_fields = form.RATING_FIELDS if has_ratings else () return jsonify_form(form, disabled_fields=disabled_fields)
def _process(self): has_ratings = (AbstractReviewRating.query .join(AbstractReviewRating.review) .join(AbstractReview.abstract) .filter(~Abstract.is_deleted, Abstract.event_new == self.event_new) .has_rows()) defaults = FormDefaults(abstract_review_questions=self.event_new.abstract_review_questions, **abstracts_reviewing_settings.get_all(self.event_new)) form = AbstractReviewingSettingsForm(event=self.event_new, obj=defaults, has_ratings=has_ratings) if form.validate_on_submit(): data = form.data # XXX: we need to do this assignment for new questions, # but editing or deleting existing questions changes an # object that is already in the session so it's updated # in any case self.event_new.abstract_review_questions = data.pop('abstract_review_questions') abstracts_reviewing_settings.set_multi(self.event_new, data) flash(_('Abstract reviewing settings have been saved'), 'success') return jsonify_data() self.commit = False disabled_fields = form.RATING_FIELDS if has_ratings else () return jsonify_form(form, disabled_fields=disabled_fields)