def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user event_date = self.cleaned_data['event_date'] self.instance.vote_start_datetime = date_to_datetime(event_date) self.instance.vote_end_date = event_date self.instance.is_graded = False super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire() single_result_question = single_result_questionnaire.question_set.first() contribution, created = Contribution.objects.get_or_create(course=self.instance, responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS) contribution.contributor = self.cleaned_data['responsible'] if created: contribution.questionnaires.add(single_result_questionnaire) contribution.save() # set answers contribution = Contribution.objects.get(course=self.instance, responsible=True) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) self.instance._participant_count = total_votes self.instance._voter_count = total_votes # change state to "reviewed" # works only for single_results so the course and its contribution must be saved first self.instance.single_result_created() self.instance.save()
def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user event_date = self.cleaned_data['event_date'] self.instance.vote_start_datetime = date_to_datetime(event_date) self.instance.vote_end_date = event_date self.instance.is_graded = False self.instance.is_single_result = True super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire() single_result_question = single_result_questionnaire.question_set.first() contribution, created = Contribution.objects.get_or_create(course=self.instance, responsible=True, can_edit=True, comment_visibility=Contribution.ALL_COMMENTS) contribution.contributor = self.cleaned_data['responsible'] if created: contribution.questionnaires.add(single_result_questionnaire) contribution.save() # set answers contribution = Contribution.objects.get(course=self.instance, responsible=True) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) self.instance._participant_count = total_votes self.instance._voter_count = total_votes # change state to "reviewed" # works only for single_results so the course and its contribution must be saved first self.instance.single_result_created() self.instance.save()
def clean_vote_end_date(self): vote_end_date = self.cleaned_data.get('vote_end_date') # The actual deadline is EVALUATION_END_OFFSET_HOURS:00 AM of the day after vote_end_date. # Therefore an evaluation date 24h + EVALUATION_END_OFFSET_HOURS in the past would technically still be in the future. if vote_end_date and date_to_datetime(vote_end_date) + timedelta(hours=24 + settings.EVALUATION_END_OFFSET_HOURS) < datetime.now(): raise forms.ValidationError(_("The last day of evaluation must be in the future.")) return vote_end_date
def clean_vote_end_date(self): vote_end_date = self.cleaned_data.get('vote_end_date') # The actual deadline is EVALUATION_END_OFFSET_HOURS:00 AM of the day after vote_end_date. # Therefore an evaluation date 24h + EVALUATION_END_OFFSET_HOURS in the past would technically still be in the future. if vote_end_date and date_to_datetime(vote_end_date) + timedelta(hours=24 + EVALUATION_END_OFFSET_HOURS) < datetime.now(): raise forms.ValidationError(_("The last day of evaluation must be in the future.")) return vote_end_date
def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user event_date = self.cleaned_data['event_date'] self.instance.vote_start_datetime = date_to_datetime(event_date) self.instance.vote_end_date = event_date self.instance.is_single_result = True evaluation = super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire( ) single_result_question = single_result_questionnaire.questions.first() contribution, created = Contribution.objects.get_or_create( evaluation=evaluation, contributor=None) if created: contribution.questionnaires.add(single_result_questionnaire) contribution.save() # set answers contribution = Contribution.objects.get(evaluation=evaluation) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create( contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) evaluation._participant_count = total_votes evaluation._voter_count = total_votes # change state to "reviewed" # works only for single_results so the evaluation and its contribution must be saved first evaluation.single_result_created() evaluation.save() if hasattr(self.instance, 'old_course'): if self.instance.old_course != evaluation.course: update_template_cache_of_published_evaluations_in_course( self.instance.old_course) update_template_cache_of_published_evaluations_in_course( evaluation.course) return evaluation
def save(self, *args, **kw): self.instance.course.is_graded = False self.instance.course.name_de = self.cleaned_data['name_de'] self.instance.course.name_en = self.cleaned_data['name_en'] self.instance.course.type = self.cleaned_data['type'] self.instance.course.save() self.instance.course.responsibles.set([self.cleaned_data['responsible']]) self.instance.course.degrees.set(self.cleaned_data['degrees']) self.instance.course.save() self.instance.course = Course.objects.get(id=self.instance.course.id) user = kw.pop("user") self.instance.last_modified_user = user event_date = self.cleaned_data['event_date'] self.instance.vote_start_datetime = date_to_datetime(event_date) self.instance.vote_end_date = event_date self.instance.is_single_result = True super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire() single_result_question = single_result_questionnaire.questions.first() contribution, created = Contribution.objects.get_or_create(evaluation=self.instance, contributor=None) if created: contribution.questionnaires.add(single_result_questionnaire) contribution.save() # set answers contribution = Contribution.objects.get(evaluation=self.instance) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) self.instance._participant_count = total_votes self.instance._voter_count = total_votes # change state to "reviewed" # works only for single_results so the evaluation and its contribution must be saved first self.instance.single_result_created() self.instance.save()
def save(self, *args, **kw): user = kw.pop("user") self.instance.last_modified_user = user event_date = self.cleaned_data['event_date'] self.instance.vote_start_datetime = date_to_datetime(event_date) self.instance.vote_end_date = event_date self.instance.is_single_result = True evaluation = super().save(*args, **kw) single_result_questionnaire = Questionnaire.single_result_questionnaire() single_result_question = single_result_questionnaire.questions.first() contribution, created = Contribution.objects.get_or_create(evaluation=evaluation, contributor=None) if created: contribution.questionnaires.add(single_result_questionnaire) contribution.save() # set answers contribution = Contribution.objects.get(evaluation=evaluation) total_votes = 0 for i in range(1, 6): count = self.cleaned_data['answer_' + str(i)] total_votes += count RatingAnswerCounter.objects.update_or_create(contribution=contribution, question=single_result_question, answer=i, defaults={'count': count}) evaluation._participant_count = total_votes evaluation._voter_count = total_votes # change state to "reviewed" # works only for single_results so the evaluation and its contribution must be saved first evaluation.single_result_created() evaluation.save() if hasattr(self.instance, 'old_course'): if self.instance.old_course != evaluation.course: update_template_cache_of_published_evaluations_in_course(self.instance.old_course) update_template_cache_of_published_evaluations_in_course(evaluation.course) return evaluation
def vote_end_datetime(self): # The evaluation ends at EVALUATION_END_OFFSET_HOURS:00 of the day AFTER self.vote_end_date. return date_to_datetime(self.vote_end_date) + timedelta(hours=24 + settings.EVALUATION_END_OFFSET_HOURS)
def vote_end_datetime(self): # The evaluation ends at EVALUATION_END_OFFSET_HOURS:00 of the day AFTER self.vote_end_date. return date_to_datetime(self.vote_end_date) + timedelta(hours=24 + EVALUATION_END_OFFSET_HOURS)