def _transaction(self, question_set, fields): for key,v in fields.iteritems(): if Validate.sanatize(v) != '': parts = key.split('_') if parts[0] == 'answerhelp': question_set.answer_help = v if parts[0] == 'correctanswer' and not key.endswith('_index'): if parts[1] == 'old': a = Answers.by(parts[2]).first() a.answer = v a.position=fields[key + '_index'] else: a = Answers(question_sets_id=question_set.id, answer=v, is_correct=True, position=fields[key + '_index']) DBSession.add(a) if parts[0] == 'wronganswer' and not key.endswith('_index'): if parts[1] == 'old': a = Answers.by(parts[2]).first() a.answer = v a.position = fields[key + '_index'] else: a = Answers(question_sets_id=question_set.id, answer=v, is_correct=False, position=fields[key + '_index']) DBSession.add(a) if parts[0] == 'question': if parts[1] == 'old': a = Questions.by(parts[2]).first() a.question = v else: a = Questions(question=v, question_sets_id=question_set.id) DBSession.add(a) DBSession.flush() transaction.commit()