def test_save(self): eval_id = Evaluation.create('Edit Test Name', self.card_id).id() category1_id = EvalCategory.create('Eval Save Test Cat 1', self.card_id).id() category2_id = EvalCategory.create('Eval Save Test Cat 2', self.card_id).id() item1_id = EvalItem.create('Eval Save Test Item 1', category1_id).id() item2_id = EvalItem.create('Eval Save Test Item 2', category1_id).id() item3_id = EvalItem.create('Eval Save Test Item 3', category2_id).id() text_line1_id = TextLine.create('Eval Save Test Text Line 1', self.card_id).id() text_line2_id = TextLine.create('Eval Save Test Text Line 2', self.card_id).id() response = self.testapp.post('/eval/%d/save' % eval_id, {'comments': 'Comments', 'item_%d_score' % item1_id: '1', 'item_%d_score' % item2_id: '2', 'item_%d_score' % item3_id: '3', 'text_%d_value' % text_line1_id: 'Text 1', 'text_%d_value' % text_line2_id: 'Text 2', } ) self.assertRedirect('/eval/\d*/fill$', response) eval = Evaluation.find_by_id(eval_id) data = eval.all_data() self.assertEqual('Comments', data['comments']) self.assertEqual('1', data['items'][item1_id]) self.assertEqual('2', data['items'][item2_id]) self.assertEqual('3', data['items'][item3_id]) self.assertEqual('Text 1', data['text'][text_line1_id]) self.assertEqual('Text 2', data['text'][text_line2_id])
def create_or_update(self, evaluation_id, value): evaluation = Evaluation.find_by_id(evaluation_id) data = CommentData.gql('WHERE evaluation = :1', evaluation).fetch(1) if len(data) == 0: data = CommentData(parent=self.report_key()) data.evaluation = evaluation else: data = data[0] data.value = value return data.put()
def create_or_update(self, text_line_id, evaluation_id, value): line = TextLine.find_by_id(text_line_id) evaluation = Evaluation.find_by_id(evaluation_id) data = TextLineData.gql('WHERE text_line = :1 AND evaluation = :2', line, evaluation).fetch(1) if len(data) == 0: data = TextLineData(parent=self.report_key()) data.text_line = line data.evaluation = evaluation else: data = data[0] data.value = value return data.put()
def create_or_update(self, eval_item_id, evaluation_id, value): item = EvalItem.find_by_id(eval_item_id) evaluation = Evaluation.find_by_id(evaluation_id) data = EvalItemData.gql('WHERE eval_item = :1 AND evaluation = :2', item, evaluation).fetch(1) if len(data) == 0: data = EvalItemData(parent=self.report_key()) data.eval_item = item data.evaluation = evaluation else: data = data[0] data.value = value return data.put()
def save(self, eval_id): eval = Evaluation.find_by_id(int(eval_id)) if eval.card.is_authorized(): for cat in eval.card.categories(): for item in cat.items(): val = self.request.get('item_%s_score' % item.key().id()) if val is not None: EvalItemData.create_or_update(item.key().id(), int(eval_id), val) for line in eval.card.text_lines(): val = self.request.get('text_%s_value' % line.key().id()) if val is not None: TextLineData.create_or_update(line.key().id(), int(eval_id), val) val = self.request.get('comments') if val is not None: CommentData.create_or_update(int(eval_id), val) return webapp2.redirect_to('eval-fill', eval_id=int(eval_id))
def preview(self, eval_id): eval = Evaluation.find_by_id(int(eval_id)) if eval.card.is_authorized(): template = JinjaEnv.get().get_template('templates/eval/preview.html') self.response.out.write(template.render({'eval': eval, 'data': eval.all_data()}))