# -*- 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 morfa.forms import MorfaS, MorfaV, MorfaAdj from morfa.forms import MorfaQuestion # 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)) def Game(request, gametype, question_count=5): """ This view renders the forms and handles form post data. Forms are validated, but invalid forms do not provide a difference in behavior. """ settings_objects = {'MORFAS': (MorfaS, MorfaQuestion, 'New Morfa'), 'MORFAV': (MorfaV, MorfaQuestion, 'New Morfa'), 'MORFAA': (MorfaAdj, MorfaQuestion, 'New Morfa'),} GameSettings, GameQuestion, GameName = settings_objects[gametype] target_language = switch_language_code(request.LANGUAGE_CODE) target_language = 'nob' 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, }) # if context['show_correct']: # if request.user.is_authenticated: # points = context['score'] # total = context['count'] # print total # print type(total) # new_grade = UserGrade.objects.create(user=request.user.get_profile(), # game=GameName, # score=points, # total=total) return render_to_response('drills/new_form.html', context, context_instance=RequestContext(request))