def loadSurvey(filename): from question import Question from answer import Answer survey = None f = open(filename, "r") if f is not None: s = "" b = f.read(512) while len(b): s += b b = f.read(512) f.close() sd = jsonpickle.decode(s) survey = Survey() survey.name = sd['name'] survey.questions = {} for qd in sd['questions'].values(): question = Question() question.id = qd['id'] question.name = qd['name'] question.answers = {} for ad in qd['answers'].values(): answer = Answer() answer.id = ad['id'] answer.value = ad['value'] answer.selected = ad['selected'] answer.editable = ad['editable'] question.answers[answer.id] = answer survey.questions[question.id] = question return survey
def test_blank_name(self): question = Question() question.text = 'Blank test question' question.answers = [] try: question.save() except KeyError, e: print 'Adding blank question failed: %s' % e
def import_data(questions, categories, answers): categories_dict = {} num_lines = sum(1 for line in open(categories)) with open(categories, newline="") as csv_file: reader = csv.reader(csv_file) for row in tqdm(reader, desc="Reading categories", total=num_lines): id_ = int(row[0]) category = row[2] categories_dict[id_] = category if questions != "skip": num_lines = sum(1 for line in open(questions)) with open(questions, newline="") as csv_file: reader = csv.reader(csv_file) it = tqdm(reader, desc="Reading questions", total=num_lines) for i, row in enumerate(it): try: id_ = int(row[0]) category_id = int(row[3]) question = Question(meta={"id": id_}) question.date = row[1] question.category = categories_dict[category_id] question.title = row[4] question.body = "\n".join(row[5:]) question.save() except (IndexError, ValueError): continue if answers != "skip": with open(answers, newline="") as csv_file: reader = csv.reader(csv_file) it = tqdm(reader, desc="Reading answers") for i, row in enumerate(it): try: question_id = int(row[3]) question = Question.get(id=question_id) if question.answers is None: question.answers = row[4] else: question.answers += "\n\n" + row[4] question.save() except (IndexError, ValueError, NotFoundError): continue