class MyChoiceField(forms.Form):
def __init__(self, foo_choices, *args, **kwargs):
super(MyChoiceField, self).__init__(*args, **kwargs)
self.fields['options'].choices = foo_choices
options = forms.ChoiceField(label=False, choices=(), widget=forms.RadioSelect(), required=True)
class SubmitButtonWidget(forms.Widget):
def render(self, name, text, attrs=None):
return '<button type="submit" name="%s" id="results" >%s</button>' % (html.escape(name), html.escape(text))
class ButtonField(forms.Field):
def __init__(self, *args, **kwargs):
if not kwargs:
kwargs = {}
kwargs["widget"] = SubmitButtonWidget
super(ButtonField, self).__init__(*args, **kwargs)
def clean(self, value):
return value
class Button(forms.Form):
def __init__(self, initial, *args, **kwargs):
super(Button, self).__init__(*args, **kwargs)
self.fields['save'].initial = initial
save = ButtonField(label='', initial=())
# views.py
class Settings(View):
template_name = "settings.html"
def get(self, request):
if request.session['mod'] == True:
form = forms.SettingsForm(True, request.session['questionType'])
else:
form = forms.SettingsForm(False, request.session['questionType'])
submit = forms.Button('Save')
return render(request, 'settings.html', {'form': form, 'submit':submit})
def post(self, request):
if request.POST.get('mod'):
request.session['mod'] = True
else:
request.session['mod'] = False
if request.POST.get('choise'):
request.session['questionType'] = request.POST.get('choise')
return redirect('/')
class Game(View):
def get(self, request):
all_question = Questions.objects.filter(category=request.session['questionType']).values()
question = random.choice(all_question)
answers = candidate_answers(question, all_question, request.session['mod'])
if request.session['mod'] == True:
form = forms.MyChoiceField(answers)
button = forms.Button('Chek')
return render(request, 'quiz.html', {'question':question, 'form':form, 'button':button, 'answer':answers[0][1]})
else:
button = forms.YesNoButton()
return render(request, 'quiz.html', {'question':question, 'button':button, 'answer':answers[0]})
def post(self, request):
ok = request.POST.get('ok')
answer = request.POST.get('options')
if request.session['mod'] == True:
if ok == answer:
answer = True
else:
answer = False
else:
if 'yes' in request.POST:
if ok == answer:
answer = True
else:
answer = False
else:
if ok != answer:
answer = True
else:
answer = False
return redirect('answer', answer = answer)