Ejemplo n.º 1
0
def get_language_hints_view(request):
    pi_ids = request.GET.getlist(u'pi_ids[]')
    filename = request.GET.get(u'filename', u'')
    pis = ProblemInstance.objects.filter(id__in=pi_ids)

    extension = get_extension(filename)
    lang_dict = {pi: get_language_by_extension(pi, extension) for pi in pis}

    if contest_exists(request):
        submittable_pis = submittable_problem_instances(request)
        lang_dict = {
            pi: lang
            for (pi, lang) in lang_dict.items() if pi in submittable_pis
        }
    else:
        problemsite_key = request.GET.get(u'problemsite_key', u'')
        lang_dict = {
            pi: lang
            for (pi, lang) in lang_dict.items()
            if pi.problem.problemsite.url_key == problemsite_key
        }

    langs = getattr(settings, 'SUBMITTABLE_LANGUAGES', {})
    lang_display_dict = {
        pi.id: langs.get(lang, {'display_name': ''})['display_name']
        for (pi, lang) in lang_dict.items()
    }

    return lang_display_dict
Ejemplo n.º 2
0
    def __init__(self, request, *args, **kwargs):
        self.kind = kwargs.pop('kind', self.get_default_kind(request))
        problem_filter = kwargs.pop('problem_filter', None)
        self.request = request

        # taking the available problems
        pis = submittable_problem_instances(request)
        if problem_filter:
            pis = problem_filter(pis)
        pi_choices = [(pi.id, unicode(pi)) for pi in pis]

        # init form with previously sent data
        forms.Form.__init__(self, *args, **kwargs)

        # set available problems in form
        pi_field = self.fields['problem_instance_id']
        pi_field.widget.attrs['class'] = 'input-xlarge'

        if len(pi_choices) > 1:
            pi_field.choices = [('', '')] + pi_choices
        else:
            pi_field.choices = pi_choices

        # adding additional fields, etc
        request.contest.controller.adjust_submission_form(request, self)
Ejemplo n.º 3
0
    def __init__(self, request, *args, **kwargs):
        self.kind = kwargs.pop('kind', self.get_default_kind(request))
        problem_filter = kwargs.pop('problem_filter', None)

        forms.Form.__init__(self, *args, **kwargs)

        self.request = request

        pis = submittable_problem_instances(request)
        if problem_filter:
            pis = problem_filter(pis)

        pi_choices = [(pi.id, unicode(pi)) for pi in pis]
        pi_field = self.fields['problem_instance_id']
        pi_field.choices = pi_choices
        pi_field.widget.attrs['class'] = 'input-xlarge'

        request.contest.controller.adjust_submission_form(request, self)
Ejemplo n.º 4
0
    def __init__(self, request, *args, **kwargs):
        self.kind = kwargs.pop('kind', self.get_default_kind(request))
        problem_filter = kwargs.pop('problem_filter', None)

        forms.Form.__init__(self, *args, **kwargs)

        self.request = request

        pis = submittable_problem_instances(request)
        if problem_filter:
            pis = problem_filter(pis)

        pi_choices = [(pi.id, unicode(pi)) for pi in pis]
        pi_field = self.fields['problem_instance_id']
        pi_field.choices = pi_choices
        pi_field.widget.attrs['class'] = 'input-xlarge'

        request.contest.controller.adjust_submission_form(request, self)
Ejemplo n.º 5
0
 def get_problem_instances(self):
     return submittable_problem_instances(self.request)
Ejemplo n.º 6
0
def testrun_problem_instances(request):
    """Returns submittable problem_instances with test run enabled."""
    return filter_testrun_problem_instances(
        submittable_problem_instances(request))
Ejemplo n.º 7
0
def testrun_problem_instances(request):
    """Returns submittable problem_instances with test run enabled."""
    return filter_testrun_problem_instances(
                                        submittable_problem_instances(request))
Ejemplo n.º 8
0
 def get_problem_instances(self):
     return submittable_problem_instances(self.request)