def add(self, category_id):
     category = EvalCategory.find_by_id(int(category_id))
     if category.card.is_authorized():
         item_id = EvalItem.create(self.request.get('name'), int(category_id)).id()
         item = EvalItem.find_by_id(item_id)
         template = JinjaEnv.get().get_template('templates/item/edit_row.html')
         self.response.out.write(template.render({'item': item}))
 def edit(self, item_id):
     item = EvalItem.find_by_id(int(item_id))
     card = item.category.card
     if card.is_authorized():            
         item.name = self.request.get('name')
         item.save()
         template = JinjaEnv.get().get_template('templates/item/edit_row.html')
         self.response.out.write(template.render({'item': item}))
 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 move_up(self, item_id):
     item = EvalItem.find_by_id(int(item_id))
     card = item.category.card
     if card.is_authorized():   
         all_items = item.category.items()
         id_list = map(lambda x: x.key().id(), all_items)
         index = id_list.index(item.key().id())
         if index >= 1:
             temp = item.position
             item.position = all_items[index-1].position
             all_items[index-1].position = temp
             item.save()
             all_items[index-1].save()
         else:
             return webapp2.abort(403)
 def delete(self, item_id):
     item = EvalItem.find_by_id(int(item_id))
     card = item.category.card
     if card.is_authorized():            
         card_id = item.category.card.key().id()
         item.delete()
 def delete_form(self, item_id):
     item = EvalItem.find_by_id(int(item_id))
     card = item.category.card
     if card.is_authorized():            
         template = JinjaEnv.get().get_template('templates/item/delete_form.html')
         self.response.out.write(template.render({'item_id': item_id, 'item': item}))