diff --git a/;w b/;w deleted file mode 100644 index e69de29..0000000 diff --git a/database/forms.py b/database/forms.py index ae8a6f9..4e4113d 100644 --- a/database/forms.py +++ b/database/forms.py @@ -78,17 +78,28 @@ def __init__(self, *args, **kwargs): class ProblemSelector(ModelMultipleChoiceField): def label_from_instance(self, prob): return get_template('prob_card.html').render({'problem': prob}) - +# +#class ProblemSelect(forms.Form): +# problems = ProblemSelector(widget=CheckboxSelectMultiple(), queryset=None) +# def __init__(self, *args, **kwargs): +# super().__init__() +# if 'problems' in kwargs: +# self.fields['problems'].queryset = kwargs['problems'] +# self.helper = FormHelper() +# self.helper.layout = Layout( +# FormActions( +# Field('problems'), +# Submit('to_pdf', 'To PDF', css_class='mx-1'), +# ), +# ) class ProblemSelect(forms.Form): - problems = ProblemSelector(widget=CheckboxSelectMultiple(), queryset=None) + problem_list = forms.CharField() def __init__(self, *args, **kwargs): - super().__init__() - if 'problems' in kwargs: - self.fields['problems'].queryset = kwargs['problems'] + super().__init__(*args, **kwargs) self.helper = FormHelper() + self.helper.attrs={'id': 'selected_problems'} self.helper.layout = Layout( FormActions( - Field('problems'), - Submit('to_pdf', 'To PDF', css_class='mx-1'), + Field('problem_list', type="hidden") ), ) diff --git a/database/views.py b/database/views.py index 44ba4a6..859e7f3 100644 --- a/database/views.py +++ b/database/views.py @@ -5,6 +5,10 @@ from django.core.exceptions import PermissionDenied from .forms import ProblemForm, RatingForm, ProblemSelect, ProblemSelector from .models import Problem, Rating + + +import json +from django.core.serializers.json import DjangoJSONEncoder from django_tex.shortcuts import render_to_pdf def home(request): @@ -24,21 +28,18 @@ def all_problems(request): if not request.user.is_solver and not request.user.is_staff: raise PermissionDenied if request.method == 'POST': - if "to_pdf" in request.POST: - #submission = ProblemSelect(request.POST) - template_name = 'test.tex' - problem_list = Problem.objects.filter(id__in=request.POST.getlist('problems')).order_by('-creation_time') - context = {'solutions': True, 'problem_list' : problem_list} - return render_to_pdf(request, template_name, context, filename='test.pdf') - elif "filter" in request.POST: - print("") + problem_list = [Problem(**temp) for temp in json.loads(request.POST['problem_list'])] + template_name = 'test.tex' + context = {'solutions': True, 'problem_list' : problem_list} + return render_to_pdf([], template_name, context, filename='test.pdf') else: problem_list = Problem.objects.all().order_by('-creation_time') empty_message = 'There are no problems in the database yet.' context = { 'filter': 0, - 'form': ProblemSelect(problems=problem_list), + 'form': ProblemSelect(), + 'data': json.dumps(list(Problem.objects.values().order_by('-creation_time')), cls = DjangoJSONEncoder), 'empty_message': empty_message, } return render(request, 'problem_list.html', context) @@ -158,4 +159,3 @@ def edit_problem(request, problem_id): form = ProblemForm(instance=problem) return render(request, 'make_problem.html', {'form': form }) - diff --git a/templates/base.html b/templates/base.html index 9e21ab9..ea9306a 100644 --- a/templates/base.html +++ b/templates/base.html @@ -9,6 +9,24 @@ + + + + + + + + + + + + + + + + + +
diff --git a/templates/problem_list.html b/templates/problem_list.html index 3e84772..e489eb0 100644 --- a/templates/problem_list.html +++ b/templates/problem_list.html @@ -2,6 +2,76 @@ {% load crispy_forms_tags %} {% block content %} +| # | +Subject | +Title | +Problem | +Solution | +
|---|---|---|---|---|
| # | +Subject | +Title | +Problem | +Solution | +