Esempio n. 1
0
 def save(self, commit=True):
     test = super(TestAdminForm, self).save(False)
     file = self.cleaned_data['file']
     questions_count = self.cleaned_data['questions_count']
     
     if file:
         test_name = test.name
         test.save()
         AnswerResult.objects.filter(answer__question__test=test).delete()
         AnswerChoice.objects.filter(question__test=test).delete()
         TestPass.objects.filter(test=test).delete()
         Answer.objects.filter(question__test=test).delete()
         Question.objects.filter(test=test).delete()
         
         questions = parser(file)
         count = 0
         cur_test = test
         
         for i, question in enumerate(questions):
             count += 1
             q = Question(test=cur_test, question=question['question'])
             if question['text_answer']:
                 q.text_answer = question['text_answer']
                 q.save()
             else:
                 q.save()
                 for answer in question['answers']:
                     a = Answer(question=q)
                     a.answer = answer['text']
                     a.correct = answer['correct']
                     a.save()
             
             if questions_count and count >= questions_count:
                 if (len(questions) - i) >= questions_count:
                     cur_test.name = '%s [%s-%s]' % (test_name, i+1-count, i+1)
                     cur_test.save()                           
                     cur_test = copy(test)
                     cur_test.pk = None
                     cur_test.save()
                 else:
                     cur_test.name = '%s [%s-%s]' % (test_name, i+1-count, len(questions))
                     cur_test.save()
                                                   
                 count = 0
             
     return test