from django.template import Context, loader from forms import * from django.db.models import Q from django.http import HttpResponse, Http404 from django.shortcuts import get_list_or_404, render_to_response from random import randint from django.utils.translation import ugettext as _ #from django.contrib.admin.views.decorators import _encode_post_data, _decode_post_data from game import * from qagame import * class Gameview: def init_settings(self): show_data=0 self.settings = {} self.gamenames = { 'ATTR' : _('Practise attributes'),\ 'ATTRPOS' : _('Practise attributes in positive'),\ 'ATTRCOMP' : _('Practise attributes in comparative'),\ 'ATTRSUP' : _('Practise attributes in superlative'),\ 'PREDPOS' : _('Practise predicative in positive'),\ 'PREDCOMP' : _('Practise predicative in comparative'),\ 'PREDSUP' : _('Practise predicative in superlative'),\ 'NUM-ATTR' : _('Practise numeral attributes'),\ 'NOMPL' : _('Practise plural'),\ 'N-ILL' : _('Practise illative'),\ 'N-ACC' : _('Practise accusative'),\ 'N-COM' : _('Practise comitative'),\ 'N-ESS' : _('Practise essive'),\ 'N-GEN' : _('Practise genitive'),\ 'N-NOM-PL' : _('Practise plural'),\ 'N-LOC' : _('Practise locative'),\ 'NUM-ILL' : _('Practise numerals in illative'),\ 'NUM-ACC' : _('Practise numerals in accusative'),\ 'NUM-COM' : _('Practise numerals in comitative'),\ 'NUM-ESS' : _('Practise numerals in essive'),\ 'NUM-GEN' : _('Practise numerals in genitive'),\ 'NUM-NOM-PL' : _('Practise numerals in plural'),\ 'NUM-LOC' : _('Practise numerals in locative'),\ 'COLL-NUM' : _('Practise collective numerals'),\ 'PRS' : _('Practise present'),\ 'PRT' : _('Practise past'),\ 'COND' : _('Practise conditional'), \ 'IMPRT' : _('Practise imperative'),\ 'POT' : _('Practise potential'), \ 'V-COND' : _('Practise conditional'), \ 'V-IMPRT' : _('Practise imperative'),\ 'V-POT' : _('Practise potential') } def syll_settings(self,settings_form): self.settings['syll'] = [] if 'bisyllabic' in settings_form.data: self.settings['syll'].append('bisyllabic') if 'trisyllabic' in settings_form.data: self.settings['syll'].append('trisyllabic') if 'contracted' in settings_form.data: self.settings['syll'].append('contracted') if len(self.settings['syll']) == 0: self.settings['syll'].append('bisyllabic') def create_mgame(self,request): count=0 correct=0 if request and request.method == 'POST': data = request.POST.copy() #print request.POST # Settings form is checked and handled. settings_form = MorphForm(request.POST) for k in settings_form.data.keys(): self.settings[k] = settings_form.data[k] #print k, settings_form.data[k] self.syll_settings(settings_form) if settings_form.data.has_key('book'): self.settings['book'] = settings_form.books[settings_form.data['book']] self.settings['allcase']=settings_form.allcase # Create game if self.settings['gametype'] == "bare": game = BareGame(self.settings) else: # Contextual morfa game = QAGame(self.settings) game.init_tags() # If settings are changed, a new game is created # Otherwise the game is created using the user input. if "settings" in data: game.new_game() else: game.check_game(data) game.get_score(data) if 'test' in data: game.count=1 if "show_correct" in data: show_correct = 1 # If there is no POST data, default settings are applied else: settings_form = MorphForm() # Find out the default data for this form. for k in settings_form.default_data.keys(): if not self.settings.has_key(k): self.settings[k] = settings_form.default_data[k] self.settings['book'] = settings_form.books[settings_form.default_data['book']] if self.settings['gametype'] == "bare": game = BareGame(self.settings) else: # Contextual morfa game = QAGame(self.settings) game.init_tags() game.new_game() if self.settings['pos'] == "N": if self.settings['gametype'] == "bare": self.settings['gamename'] = self.gamenames[self.settings['case']] else: self.settings['gamename'] = self.gamenames[self.settings['case_context']] if self.settings['pos'] == "Num": if self.settings['gametype'] == "bare": self.settings['gamename'] = self.gamenames[self.settings['adjcase']] else: self.settings['gamename'] = self.gamenames[self.settings['num_context']] if self.settings['pos'] == "V": if self.settings['gametype'] == "bare": self.settings['gamename'] = self.gamenames[self.settings['vtype']] else: self.settings['gamename'] = self.gamenames[self.settings['vtype_context']] if self.settings['pos'] == "A": self.settings['gamename'] = self.gamenames[self.settings['adjcase']] #print self.settings['gamename'] c = Context({ 'settingsform': settings_form, 'settings' : self.settings, 'forms': game.form_list, 'count': game.count, 'score': game.score, 'comment': game.comment, 'all_correct': game.all_correct, 'show_correct': game.show_correct, }) return c def mgame_n(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "N" mgame.settings['gametype'] = "bare" c = mgame.create_mgame(request) return render_to_response('mgame_n.html', c) def mgame_v(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "V" mgame.settings['gametype'] = "bare" c = mgame.create_mgame(request) return render_to_response('mgame_v.html', c) def mgame_a(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "A" mgame.settings['gametype'] = "bare" c = mgame.create_mgame(request) return render_to_response('mgame_a.html', c) def mgame_l(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "Num" mgame.settings['gametype'] = "bare" c = mgame.create_mgame(request) return render_to_response('mgame_l.html', c) ### Contextual Morfas def cmgame_n(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "N" mgame.settings['gametype'] = "context" c = mgame.create_mgame(request) return render_to_response('mgame_n.html', c) def cmgame_v(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "V" mgame.settings['gametype'] = "context" c = mgame.create_mgame(request) return render_to_response('mgame_v.html', c) def cmgame_a(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "A" mgame.settings['gametype'] = "context" c = mgame.create_mgame(request) return render_to_response('mgame_a.html', c) def cmgame_l(request): mgame = Gameview() mgame.init_settings() mgame.settings['pos'] = "Num" mgame.settings['gametype'] = "context" c = mgame.create_mgame(request) return render_to_response('mgame_l.html', c) class Vastaview: def init_settings(self): show_data=0 self.settings = {} def create_vastagame(self,request): count=0 correct=0 self.settings['gametype'] = "qa" if request.method == 'POST': data = request.POST.copy() print data # Settings form is checked and handled. settings_form = VastaForm(request.POST) for k in settings_form.data.keys(): self.settings[k] = settings_form.data[k] self.settings['allcase_context']=settings_form.allcase_context self.settings['allvtype_context']=settings_form.allvtype_context self.settings['allnum_context']=settings_form.allnum_context self.settings['alladj_context']=settings_form.alladj_context self.settings['allsem']=settings_form.allsem if settings_form.data.has_key('book'): self.settings['book'] = settings_form.books[settings_form.data['book']] # Vasta game = QAGame(self.settings) game.init_tags() game.num_fields = 2 game.gametype="qa" # If settings are changed, a new game is created # Otherwise the game is created using the user input. if "settings" in data: game.new_game() else: game.check_game(data) game.get_score(data) # If there is no POST data, default settings are applied else: settings_form = VastaForm() self.settings['allsem']=settings_form.allsem self.settings['allcase_context']=settings_form.allcase_context self.settings['allvtype_context']=settings_form.allvtype_context self.settings['allnum_context']=settings_form.allnum_context self.settings['alladj_context']=settings_form.alladj_context for k in settings_form.default_data.keys(): self.settings[k] = settings_form.default_data[k] # Vasta game = QAGame(self.settings) game.init_tags() game.gametype="qa" game.num_fields = 2 game.new_game() c = Context({ 'settingsform': settings_form, 'forms': game.form_list, 'messages': game.form_list[0].messages, 'count': game.count, 'score': game.score, 'comment': game.comment, 'all_correct': game.all_correct, 'show_correct': game.show_correct, }) return c def vasta(request): vastagame = Vastaview() vastagame.init_settings() c = vastagame.create_vastagame(request) return render_to_response('vasta.html', c) class Quizzview(Gameview): def placename_settings(self, settings_form): self.settings['frequency'] = [] self.settings['geography']= [] if 'common' in settings_form.data: self.settings['frequency'].append('common') if 'rare' in settings_form.data: self.settings['frequency'].append('rare') if 'world' in settings_form.data: self.settings['geography'].append('world') if 'sapmi' in settings_form.data: self.settings['geography'].append('sapmi') if len(self.settings['frequency']) == 0: self.settings['frequency'].append('common') if len(self.settings['geography']) == 0: self.settings['geography'].append('sapmi') def create_quizzgame(self,request): if request.method == 'POST': data = request.POST.copy() # Settings form is checked and handled. settings_form = QuizzForm(request.POST) for k in settings_form.data.keys(): if not self.settings.has_key(k): self.settings[k] = settings_form.data[k] self.placename_settings(settings_form) self.settings['allsem']=settings_form.allsem self.settings['book'] = settings_form.books[settings_form.data['book']] game = QuizzGame(self.settings) if "settings" in data: game.new_game() else: game.check_game(data) game.get_score(data) if 'test' in data: game.count=1 if "show_correct" in data: game.show_correct = 1 # If there is no POST data, default settings are applied else: settings_form = QuizzForm() self.placename_settings(settings_form) for k in settings_form.default_data.keys(): if not self.settings.has_key(k): self.settings[k] = settings_form.default_data[k] game = QuizzGame(self.settings) game.new_game() c = Context({ 'settingsform': settings_form, 'forms': game.form_list, 'count': game.count, 'score': game.score, 'comment': game.comment, 'all_correct': game.all_correct, 'show_correct': game.show_correct, }) return c def quizz_n(request): quizzgame = Quizzview() quizzgame.init_settings() quizzgame.settings['allsem']=[] quizzgame.settings['semtype'] = "PLACE-NAME-LEKSA" c = quizzgame.create_quizzgame(request) return render_to_response('quizz_n.html', c) def quizz(request): quizzgame = Quizzview() quizzgame.init_settings() c = quizzgame.create_quizzgame(request) return render_to_response('quizz.html', c) def numgame(request): mgame = Gameview() mgame.init_settings() if request.method == 'POST': data = request.POST.copy() # Settings form is checked and handled. settings_form = NumForm(request.POST) for k in settings_form.data.keys(): mgame.settings[k] = settings_form.data[k] game = NumGame(mgame.settings) if "settings" in data: game.new_game() else: game.check_game(data) game.get_score(data) if 'test' in data: game.count=1 if "show_correct" in data: game.show_correct = 1 # If there is no POST data, default settings are applied else: settings_form = NumForm() for k in settings_form.default_data.keys(): mgame.settings[k] = settings_form.default_data[k] game = NumGame(mgame.settings) game.new_game() c = Context({ 'settingsform': settings_form, 'forms': game.form_list, 'count': game.count, 'score': game.score, 'comment': game.comment, 'all_correct': game.all_correct, 'show_correct': game.show_correct, }) return render_to_response('num.html', c)