def refresh_submissions_cache_is_correct(self, request, queryset): # TODO: move this to the method itself submissions = Submission.objects.filter(ctask__in=queryset) result = refresh_submissions_cache_is_correct(submissions, queryset) self.message_user(request, "{} submission(s) corrected.".format(result))
def chain_tasks_list(request, competition, data): created = False updated_chains_count = None updated_ctasks_count = None updated_submissions_cache_is_correct = None empty_form = ChainTasksForm(competition=competition) form = empty_form if request.POST.get('action') == 'refresh-chain-cache-is-verified': updated_chains_count = len(refresh_chain_cache_is_verified(competition)) elif request.POST.get('action') == 'refresh-ctask-cache-admin-solved-count': updated_ctasks_count = len( refresh_ctask_cache_admin_solved_count(competition)) elif request.POST.get('action') == 'refresh-submission-cache-is-correct': updated_submissions_cache_is_correct = \ refresh_submissions_cache_is_correct(competitions=[competition]) elif request.method == 'POST': form = ChainTasksForm(request.POST, competition=competition) if form.is_valid(): chain = form.save(commit=False) chain.competition = competition chain.save() old_ids = CompetitionTask.objects \ .filter(chain=chain).values_list('id', flat=True) new_ids = [x.id for x in form.cleaned_data['ctasks']] update_chain_ctasks(competition, chain, old_ids, new_ids) created = True form = empty_form # Empty the form. chains = Chain.objects.filter(competition=competition) order_by_field = django_sorting.middleware.get_field(request) if len(order_by_field) > 1: chains = chains.order_by(order_by_field, 'category', 'position', 'name') else: chains = chains.order_by('category', 'position', 'name') chain_dict = {chain.id: chain for chain in chains} ctasks = list(CompetitionTask.objects.filter(competition=competition) \ .select_related('task__author', 'task__content__text', 'comment__text')) ctask_dict = {ctask.id: ctask for ctask in ctasks} for chain in chains: chain.competition = competition chain.t_ctasks = [] unused_ctasks = [] for ctask in ctasks: ctask.competition = competition if ctask.chain_id is None: unused_ctasks.append(ctask) else: chain_dict[ctask.chain_id].t_ctasks.append(ctask) for ctask in ctasks: is_important = ctask.comment.text.strip() and \ is_ctask_comment_important(ctask.comment.text) ctask.t_class = ctask_comment_verified_class( competition, ctask, request.user, is_important=is_important) for chain in chains: chain.t_ctasks.sort(key=lambda x: x.chain_position) chain.t_class = \ 'cchain-verified-list' if chain.cache_is_verified else '' data['created'] = created data['form'] = form data['chains'] = chains data['unused_ctasks'] = unused_ctasks data['trans_checked_title'] = _("Number of admins that solved this task.") data['updated_chains_count'] = updated_chains_count data['updated_ctasks_count'] = updated_ctasks_count data['updated_submissions_cache_is_correct'] = \ updated_submissions_cache_is_correct return data
def refresh_cache_is_correct(self, request, queryset): result = refresh_submissions_cache_is_correct(queryset) self.message_user(request, "{} submission(s) corrected.".format(result))