# -*- coding: utf-8 -*- from django.template import RequestContext from django.shortcuts import render_to_response from django.utils.translation import ugettext as _ from django.http import HttpResponse, Http404 from django import forms from django.forms.models import formset_factory # from courses.models import UserGrade from leksa.forms import Leksa, LeksaPlace, LeksaQuestion # Some general notes # # TODO: all of the lists and tuples of tuples which are used for conf # iguration take up a lot of space, and should be moved elsewhere. # TODO: MorfaNum, MorfaAdj # TODO: improve docstrings http://www.learningpython.com/2010/01/08/introducing-docstrings/ ISO = { "fi": "fin", "ru": "rus", "en": "eng", "no": "nob", "de": "deu", "sma": "sma", } def switch_language_code(CODE): """ Switches language codes from ISO 639-1 to ISO 639-2. >>> switch_language_code("no") "nob" """ try: return ISO[CODE] except: # logger.warning("*** Unidentified language code %s." % CODE) print >> sys.stdout, "*** Unidentified language code %s." % CODE return settings.LANGUAGE_CODE def Index(request): c = {} return render_to_response('oahpa_base.html', c, context_instance=RequestContext(request)) # Create your views here. def LeksaView(request, question_count=5, subtype=False): """ This view renders the forms and handles form post data. Forms are validated, but invalid forms do not provide a difference in behavior. """ if subtype == 'Place': GameSettings, GameQuestion, GameName = (LeksaPlace, LeksaQuestion, 'LeksaPlace') else: GameSettings, GameQuestion, GameName = (Leksa, LeksaQuestion, 'Leksa') if len(request.GET.keys()) > 0: settings = GameSettings(request.GET) else: settings = GameSettings() if settings.is_valid(): options = settings.cleaned_data else: options = settings.initial_data target_language = options['transtype'][-3::] QuestionSet = formset_factory(GameQuestion, extra=0) score = False show_correct = False if request.method == 'POST': formset = QuestionSet(request.POST, request.FILES) if formset.is_valid(): pass score = sum([1 for f in formset.forms if f.correct == True]) if formset.data.get('show_correct'): show_correct = True elif formset.data.get('test'): show_correct = False else: show_correct = False initial_data = settings.getInitialData() formset = QuestionSet(initial=initial_data) if score == len(formset.forms): all_correct = True else: all_correct = False context = RequestContext(request, { 'formset': formset, 'show_correct': show_correct, 'count': len(formset.forms), 'score': score, 'language' : target_language, 'settings_form': settings, 'all_correct': all_correct, }) return render_to_response('drills/new_form.html', context, context_instance=RequestContext(request))