Example #1
0
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()
Example #2
0
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!"