예제 #1
0
 def generator():
     is_admin = request.user.has_perm('contests.contest_admin',
             request.contest)
     messages = visible_messages(request)
     if is_admin:
         messages = messages.filter(message__isnull=True,
                 top_reference__isnull=True, kind='QUESTION')
     else:
         messages = new_messages(request, messages)
     count = messages.count()
     if count:
         text = ungettext('%(count)d NEW MESSAGE', '%(count)d NEW MESSAGES',
                 count) % {'count': count}
         if count == 1:
             message = messages.get()
             link = reverse('message', kwargs={
                     'contest_id': request.contest.id,
                     'message_id': message.top_reference_id or message.id
                 })
         else:
             link = reverse('contest_messages', kwargs={'contest_id':
                 request.contest.id})
         return make_navbar_badge(link, text)
     else:
         return ''
예제 #2
0
def navbar_messages_generator(request):
    if request.contest is None:
        return {}

    is_admin = is_contest_basicadmin(request)
    vis_messages = visible_messages(request)
    if is_admin:
        messages = unanswered_questions(vis_messages)
    else:
        messages = new_messages(request, vis_messages)
    count = messages.count()
    if count:
        text = ungettext('%(count)d NEW MESSAGE', '%(count)d NEW MESSAGES',
                         count) % {'count': count}

        if count == 1:
            m = messages.get()
            link = reverse('message', kwargs={
                'contest_id': request.contest.id,
                'message_id': m.top_reference_id
                if vis_messages.filter(id=m.top_reference_id).exists()
                else m.id
            })
        else:
            link = reverse('contest_messages', kwargs={'contest_id':
                                                           request.contest.id})
        return {'link': link, 'text': text, 'id': 'contest_new_messages'}
    else:
        return {'link': None, 'text': None, 'id': 'contest_new_messages'}
예제 #3
0
def navbar_messages_generator(request):
    if request.contest is None:
        return {}

    is_admin = is_contest_admin(request)
    messages = visible_messages(request)
    visible_ids = messages.values_list('id', flat=True)
    if is_admin:
        messages = unanswered_questions(messages)
    else:
        messages = new_messages(request, messages)
    count = messages.count()
    if count:
        text = ungettext('%(count)d NEW MESSAGE', '%(count)d NEW MESSAGES',
                         count) % {
                             'count': count
                         }

        if count == 1:
            m = messages.get()
            link = reverse('message',
                           kwargs={
                               'contest_id':
                               request.contest.id,
                               'message_id':
                               m.top_reference_id
                               if m.top_reference_id in visible_ids else m.id
                           })
        else:
            link = reverse('contest_messages',
                           kwargs={'contest_id': request.contest.id})
        return {'link': link, 'text': text, 'id': 'contest_new_messages'}
    else:
        return {'link': None, 'text': None, 'id': 'contest_new_messages'}
예제 #4
0
파일: views.py 프로젝트: sio2project/oioioi
def contest_dashboard_view(request, round_pk=None):
    messages = messages_template_context(request, visible_messages(request))[
               :NUMBER_OF_RECENT_ACTIONS]

    queryset = Submission.objects \
        .filter(problem_instance__contest=request.contest) \
        .order_by('-date') \
        .select_related('user', 'problem_instance',
                        'problem_instance__contest',
                        'problem_instance__round',
                        'problem_instance__problem')

    ss = [submission_template_context(request, s) for s in
          queryset[:NUMBER_OF_RECENT_ACTIONS]]

    rtimes = list(rounds_times(request, request.contest).items())
    rtimes.sort(key=lambda r_rt: r_rt[0].start_date)

    if round_pk is None and len(rtimes) > 0:
        # First active round, or last one if there are no active ones
        round_pk = next(
            ((r, rt) for r, rt in rtimes if rt.is_active(request.timestamp)),
            rtimes[-1])[0].pk

    context = {
        'round_times': rtimes,
        'selected_round': None,
        'records': messages,
        'submissions': ss
    }

    if round_pk is not None:
        context.update(get_round_context(request, round_pk))

    return TemplateResponse(request, 'simpleui/contest/contest.html', context)
예제 #5
0
def navbar_messages_generator(request):
    if request.contest is None:
        return {}

    is_admin = is_contest_admin(request)
    messages = visible_messages(request)
    visible_ids = messages.values_list('id', flat=True)
    if is_admin:
        messages = unanswered_questions(messages)
    else:
        messages = new_messages(request, messages)
    count = messages.count()
    if count:
        text = ungettext('%(count)d NEW MESSAGE', '%(count)d NEW MESSAGES',
                         count) % {'count': count}

        if count == 1:
            m = messages.get()
            link = reverse('message', kwargs={
                'contest_id': request.contest.id,
                'message_id': m.top_reference_id
                if m.top_reference_id in visible_ids else m.id
            })
        else:
            link = reverse('contest_messages', kwargs={'contest_id':
                                                           request.contest.id})
        return {'link': link, 'text': text, 'id': 'contest_new_messages'}
    else:
        return {'link': None, 'text': None, 'id': 'contest_new_messages'}
예제 #6
0
def messages_fragment(request):
    messages = messages_template_context(request, visible_messages(request))
    messages = messages[:getattr(settings, 'NUM_DASHBOARD_MESSAGES', 8)]
    if not messages:
        return None
    context = {
        'records': messages,
    }
    return render_to_string('dashboard/messages.html',
        context_instance=RequestContext(request, context))
예제 #7
0
파일: views.py 프로젝트: marmistrz/oioioi
def messages_fragment(request):
    messages = messages_template_context(request, visible_messages(request))
    messages = messages[:getattr(settings, 'NUM_DASHBOARD_MESSAGES', 8)]
    if not messages:
        return None
    context = {
        'records': messages,
    }
    return render_to_string('dashboard/messages.html',
                            context_instance=RequestContext(request, context))
예제 #8
0
def contest_dashboard_view(request, round_pk=None):
    if request.user.is_superuser:
        return redirect('default_contest_view', contest_id=request.contest.id)

    messages = messages_template_context(
        request, visible_messages(request))[:NUMBER_OF_RECENT_ACTIONS]

    queryset = (Submission.objects.filter(
        problem_instance__contest=request.contest).order_by(
            '-date').select_related(
                'user',
                'problem_instance',
                'problem_instance__contest',
                'problem_instance__round',
                'problem_instance__problem',
            ))

    ss = [
        submission_template_context(request, s)
        for s in queryset[:NUMBER_OF_RECENT_ACTIONS]
    ]

    rtimes = list(rounds_times(request, request.contest).items())
    rtimes.sort(key=lambda r_rt: r_rt[0].start_date)

    if round_pk is None and len(rtimes) > 0:
        # First active round, or last one if there are no active ones
        round_pk = next(
            ((r, rt) for r, rt in rtimes if rt.is_active(request.timestamp)),
            rtimes[-1])[0].pk

    context = {
        'round_times':
        rtimes,
        'selected_round':
        None,
        'records':
        messages,
        'submissions':
        ss,
        'contest_dashboard_url_name':
        'simpleui_contest_dashboard',
        'public_contest':
        isinstance(
            request.contest.controller.registration_controller(),
            PublicContestRegistrationController,
        ),
    }

    if round_pk is not None:
        context.update(get_round_context(request, round_pk))

    return TemplateResponse(request, 'simpleui/contest/contest.html', context)
예제 #9
0
def messages_fragment(request):
    messages = messages_template_context(request, visible_messages(request))
    dashboard_msg_cnt_limit = getattr(settings, 'NUM_DASHBOARD_MESSAGES', 8)
    show_more_button = len(messages) > dashboard_msg_cnt_limit
    messages = messages[:dashboard_msg_cnt_limit]
    if not messages:
        return None
    context = {
        'records': messages,
        'show_more_button': show_more_button,
    }
    return render_to_string('dashboard/messages.html',
                            context=context, request=request)
예제 #10
0
    def get_contest_participant_info_list(self, request, user):
        messages = messages_template_context(request, visible_messages(request,
                author=user))

        prev = super(QuestionsContestControllerMixin, self) \
                .get_contest_participant_info_list(request, user)
        if messages:
            prev.append((30, render_to_string('questions/user_list_table.html',
                    {'contest': request.contest,
                     'hide_author': True,
                     'records': messages,
                     'user': request.user})))
        return prev
예제 #11
0
파일: views.py 프로젝트: sio2project/oioioi
def messages_fragment(request):
    messages = messages_template_context(request, visible_messages(request))
    dashboard_msg_cnt_limit = getattr(settings, 'NUM_DASHBOARD_MESSAGES', 8)
    show_more_button = len(messages) > dashboard_msg_cnt_limit
    messages = messages[:dashboard_msg_cnt_limit]
    if not messages:
        return None
    context = {
        'records': messages,
        'show_more_button': show_more_button,
    }
    return render_to_string('dashboard/messages.html',
                            context=context, request=request)
예제 #12
0
    def get_contest_participant_info_list(self, request, user):
        messages = messages_template_context(
            request, visible_messages(request, author=user))

        prev = super(QuestionsContestControllerMixin, self) \
                .get_contest_participant_info_list(request, user)
        if messages:
            prev.append((30,
                         render_to_string(
                             'questions/user_list_table.html', {
                                 'contest': request.contest,
                                 'hide_author': True,
                                 'records': messages,
                                 'user': request.user
                             })))
        return prev
예제 #13
0
파일: views.py 프로젝트: mahrud/oioioi
def contest_dashboard_view(request, contest_id):
    top_links = grouper(3, top_links_registry.template_context(request))
    submissions = Submission.objects \
            .filter(problem_instance__contest=request.contest) \
            .order_by('-date').select_related()
    controller = request.contest.controller
    submissions = controller.filter_visible_submissions(request, submissions)
    submissions = submissions[:getattr(settings, 'NUM_DASHBOARD_SUBMISSIONS', 8)]
    submissions = [submission_template_context(request, s) for s in submissions]
    show_scores = bool(s for s in submissions if s.score is not None)
    messages = messages_template_context(request, visible_messages(request))
    context = {
            'top_links': top_links,
            'submissions': submissions,
            'records': messages,
            'show_scores': show_scores
        }
    return TemplateResponse(request, 'dashboard/dashboard.html', context)
예제 #14
0
파일: views.py 프로젝트: matrach/oioioi
def contest_dashboard_view(request, contest_id):
    top_links = grouper(3, top_links_registry.template_context(request))
    submissions = Submission.objects \
            .filter(problem_instance__contest=request.contest) \
            .order_by('-date').select_related()
    cc = request.contest.controller
    submissions = cc.filter_my_visible_submissions(request, submissions)
    submissions = \
            submissions[:getattr(settings, 'NUM_DASHBOARD_SUBMISSIONS', 8)]
    submissions = [
        submission_template_context(request, s) for s in submissions
    ]
    show_scores = bool(s for s in submissions if s.score is not None)
    messages = messages_template_context(request, visible_messages(request))
    messages = messages[:getattr(settings, 'NUM_DASHBOARD_MESSAGES', 8)]
    context = {
        'top_links': top_links,
        'submissions': submissions,
        'records': messages,
        'show_scores': show_scores
    }
    return TemplateResponse(request, 'dashboard/dashboard.html', context)
예제 #15
0
def contest_dashboard_view(request, round_pk=None):
    messages = messages_template_context(
        request, visible_messages(request))[:NUMBER_OF_RECENT_ACTIONS]

    queryset = Submission.objects \
        .filter(problem_instance__contest=request.contest) \
        .order_by('-date') \
        .select_related('user', 'problem_instance',
                        'problem_instance__contest',
                        'problem_instance__round',
                        'problem_instance__problem')

    ss = [
        submission_template_context(request, s)
        for s in queryset[:NUMBER_OF_RECENT_ACTIONS]
    ]

    rtimes = rounds_times(request).items()
    rtimes.sort(key=lambda (r, rt): r.start_date)

    if round_pk is None and len(rtimes) > 0:
        # First active round, or last one if there are no active ones
        round_pk = next(
            ((r, rt) for r, rt in rtimes if rt.is_active(request.timestamp)),
            rtimes[-1])[0].pk

    context = {
        'round_times': rtimes,
        'selected_round': None,
        'records': messages,
        'submissions': ss
    }

    if round_pk is not None:
        context.update(get_round_context(request, round_pk))

    return TemplateResponse(request, 'simpleui/contest/contest.html', context)
예제 #16
0
파일: mailnotifyd.py 프로젝트: wczyz/oioioi
def allowed_to_see(msg, user):
    request = fake_request(user, msg.contest)
    return msg in visible_messages(request)