def main(): from sad.models import Disciplina, Questionario, Avaliacao # montando um dicionário das matérias com o tipo de questionário delas discs = {} for tipo in ('teoricas', 'praticas', 'teoricas_praticas', 'estagio', 'topicos'): for sigla in eval(tipo): # pega a lista com o nome da string discs[sigla] = tipo # e.g discs['MC102'] = 'teorico_praticas' # adiciona o questionário correto para todas as matérias for sigla in discs: print 'Incluindo a disciplina %s no questionario %s' % (sigla, discs[sigla]) try: d = Disciplina.objects.filter(sigla=sigla)[0] except: d = Disciplina(sigla=sigla) try: q = Questionario.objects.filter(tipo=discs[sigla])[0] except: # no existe esto questionario!!! avaliacao = Avaliacao.objects.get(id='1') q = Questionario(tipo=discs[sigla], texto=discs[sigla], avaliacao=avaliacao) q.save() d.questionario = q d.save()
def cadastrar_questoes(id_avaliacao): from sad.models import Questionario, Pergunta, Alternativa, Avaliacao from os import path for tipo in ['estagio','praticas','teoricas','teoricas_praticas']: print "Cadastrando perguntas do questionário %s" % tipo # pega o questionario avaliacao = Avaliacao.objects.get(id=id_avaliacao) try: q = Questionario.objects.filter(tipo=tipo, avaliacao=avaliacao)[0] except: # no existe esto questionario!!! q = Questionario(tipo=tipo, texto=tipo, avaliacao=avaliacao) print q q.save() # prepara as questoes filename = path.join('questionarios', tipo) content = open(filename).read().splitlines() for question in content: # detecta qual o tipo de questão if question.find('$') > 0: # dissertativa text = question.split(' $')[0] question_type = 'D' elif question.find('#') > 0: # alternativa text, alterns = question.split(' # ') alterns = alterns[1:-1].split(',') # tirei o '(' e ')' question_type = 'A' else: print "Deu pau aqui!!! Não casou dissertativo ou alternativa: %s" % question return # removendo as aspas duplas da pergunta text = text.split('"')[1] # cria a pergunta, se ainda não existir try: p = Pergunta.objects.filter(texto=text,tipo=question_type,questionario=q)[0] print "\tQuestão %d/%d já era cadastrada!" % (content.index(question), len(content)) except: # no existe esta pregunta!!! p = Pergunta(texto=text,tipo=question_type) p.save() # pra adicionar um n:n precisa ter a key antes p.questionario.add(q) p.save() # agora salva com o questionário print "\tCadastrado questão %d/%d" % (content.index(question), len(content)) # opa, sendo alternativa tem mais coisa... if question_type == 'A': print "\t\tCadastrando %d alternativas..." % (len(alterns)), # cadastra cada alternativa, se não existir ainda for altern in alterns: try: a = Alternativa.objects.filter(texto=altern,pergunta=p)[0] except: # no existe esta pregunta!!! a = Alternativa(texto=altern,pergunta=p) a.save() print "Feito!"