# -*- coding: utf-8 -*-


__author__ = "Sébastien CHAZALLET"
__copyright__ = "Copyright 2012"
__credits__ = ["Sébastien CHAZALLET", "InsPyration.org", "Éditions ENI"]
__license__ = "GPL"
__version__ = "1.0"
__maintainer__ = "Sébastien CHAZALLET"
__email__ = "sebastien.chazallet@laposte.net"
__status__ = "Production"


import argparse
from datetime import datetime

from paste.deploy import appconfig
from pylons import config
from quizz.config.environment import load_environment
conf = appconfig('config:development.ini', relative_to='.')
load_environment(conf.global_conf, conf.local_conf)
import transaction

from quizz.model import *

reponses_negatives = ['n', 'N', 'Non', 'NON', 'non', '']




def create_quizz(name):
	date = datetime.now()
	print('Vous allez créer un Quizz "%s".' % name)
	p1 = raw_input('Vous devez choisir un poids faible: ')
	p2 = raw_input('Vous devez choisir un poids moyen:  ')
	p3 = raw_input('Vous devez choisir un poids fort:   ')
	quizz = Quizz()
	quizz.name = name
	quizz.weight1 = p1
	quizz.weight2 = p2
	quizz.weight3 = p3
	quizz.created = date
	quizz.updated = date
	DBSession.add(quizz)
        DBSession.flush()
	return quizz.id

def create_question(quizz_id):
	name = raw_input('Votre question: ')
	niveau = raw_input('Niveau estimé [1/2/3]: ')
	question = Question()
	question.name = name
	question.niveau = niveau
	question.id_quizz = quizz_id
	DBSession.add(question)
        DBSession.flush()
	while True:
		create_proposition(question.id)
		c = raw_input('Rajouter une nouvelle proposition de réponse ? [o/N]: ')
		if c in reponses_negatives:
			print('La saisie de la question est terminée')
			break

def create_proposition(question_id):
	name = raw_input('Proposition de réponse: ')
	validite = raw_input('Cette proposition est-elle correcte ? [o/N]: ')
	validite = not validite in reponses_negatives
	proposition = Proposition()
	proposition.name = name
	proposition.validite = validite
	proposition.id_question = question_id
	DBSession.add(proposition)
        DBSession.flush()

def create(namespace):
	print('Création d\'un nouveau Quizz')
	quizz_id = create_quizz(namespace.name)
	print('Un nouveau Quizz a été ajouté, il porte le numéro %s' % quizz_id)
	while True:
		create_question(quizz_id)
		c =raw_input('Rajouter une nouvelle question ? [o/N]: ')
		if c in reponses_negatives:
			print('La saisie du quizz est terminée')
			transaction.commit()
			break

def getParser():
	parser = argparse.ArgumentParser(
		prog='./cquizz.py',
		description='''Application console Quizz''',
		epilog='''Exemple du chapitre 17'''
	)

	subparsers = parser.add_subparsers(help='commands')

	create_parser = subparsers.add_parser(
		'create',
		description='Création d\'un Quizz',
		help='Permet de Créer un quizz avec les questions et les propositions de réponse',
	)

	create_parser.add_argument(
		'name',
		help='nom du Quizz'
	)

	create_parser.set_defaults(func=create)

	return parser

if __name__ == "__main__":
	parser = getParser()
	args=parser.parse_args()
	args.func(args)


