Esempio n. 1
0
 def txn():
     task = api.get_task(domain_identifier, task_identifier)
     if not task:
         logging.error("Task '%s/%s' does not exist",
                       domain_identifier, task_identifier)
         return None
     parent_task = api.get_task(domain_identifier,
                                task.parent_task_identifier())
     if parent_task:
         parent_index = TaskIndex.get_by_key_name(
             parent_task.identifier(),
             parent=parent_task.key())
         if not parent_index:
             logging.error("Missing index for parent task '%s/%s'",
                           domain_identifier, parent_identifier)
             self.error(400) # Retry later
             return None
         hierarchy = list(parent_index.hierarchy)
         hierarchy.append(parent_task.identifier())
         level = parent_task.derived_level + 1
     else:               # root task
         hierarchy = []
         level = 0
     index = TaskIndex.get_by_key_name(task_identifier, parent=task)
     if not index:
         index = TaskIndex(parent=task, key_name=task_identifier)
     index.hierarchy = hierarchy
     index.put()
     task.derived_level = level
     task.put()
     return task
Esempio n. 2
0
 def txn():
     task = api.get_task(domain_identifier, task_identifier)
     if not task:
         logging.error("Task '%s/%s' does not exist", domain_identifier,
                       task_identifier)
         return None
     parent_task = api.get_task(domain_identifier,
                                task.parent_task_identifier())
     if parent_task:
         parent_index = TaskIndex.get_by_key_name(
             parent_task.identifier(), parent=parent_task.key())
         if not parent_index:
             logging.error("Missing index for parent task '%s/%s'",
                           domain_identifier, parent_identifier)
             self.error(400)  # Retry later
             return None
         hierarchy = list(parent_index.hierarchy)
         hierarchy.append(parent_task.identifier())
         level = parent_task.derived_level + 1
     else:  # root task
         hierarchy = []
         level = 0
     index = TaskIndex.get_by_key_name(task_identifier, parent=task)
     if not index:
         index = TaskIndex(parent=task, key_name=task_identifier)
     index.hierarchy = hierarchy
     index.put()
     task.derived_level = level
     task.put()
     return task
Esempio n. 3
0
        def txn():
            # Returns (task, changed) tuple, where changed is set if
            # the task index was updated.
            task = api.get_task(domain_identifier, task_identifier)
            if not task:
                logging.error("Task '%s/%s' does not exist",
                              domain_identifier, task_identifier)
                return None, False
            index = TaskIndex.get_by_key_name(task_identifier, parent=task)
            new_index = False
            if not index:
                index = TaskIndex(parent=task,
                                  key_name=task_identifier,
                                  hierarchy=[],
                                  level=0)
                new_index = True
            parent_identifier = task.parent_task_identifier()
            parent_hierarchy = []
            if parent_identifier:
                parent_key = task.parent_task_key()
                parent_index = TaskIndex.get_by_key_name(parent_identifier,
                                                         parent=parent_key)
                if not parent_index:
                    logging.error("Missing index for parent task '%s/%s'",
                                  domain_identifier, parent_identifier)
                    self.error(500) # Retry
                    return None, False
                parent_hierarchy = parent_index.hierarchy

            hierarchy = parent_hierarchy
            if parent_identifier:
                hierarchy.append(parent_identifier)
            if (force_update
                or new_index
                or set(index.hierarchy) ^ set(hierarchy)):
                index.hierarchy = hierarchy
                index.level = len(hierarchy)
                index.put()
                return task, True
            return task, False
Esempio n. 4
0
        def txn():
            # Returns (task, changed) tuple, where changed is set if
            # the task index was updated.
            task = api.get_task(domain_identifier, task_identifier)
            if not task:
                logging.error("Task '%s/%s' does not exist", domain_identifier,
                              task_identifier)
                return None, False
            index = TaskIndex.get_by_key_name(task_identifier, parent=task)
            new_index = False
            if not index:
                index = TaskIndex(parent=task,
                                  key_name=task_identifier,
                                  hierarchy=[],
                                  level=0)
                new_index = True
            parent_identifier = task.parent_task_identifier()
            parent_hierarchy = []
            if parent_identifier:
                parent_key = task.parent_task_key()
                parent_index = TaskIndex.get_by_key_name(parent_identifier,
                                                         parent=parent_key)
                if not parent_index:
                    logging.error("Missing index for parent task '%s/%s'",
                                  domain_identifier, parent_identifier)
                    self.error(500)  # Retry
                    return None, False
                parent_hierarchy = parent_index.hierarchy

            hierarchy = parent_hierarchy
            if parent_identifier:
                hierarchy.append(parent_identifier)
            if (force_update or new_index
                    or set(index.hierarchy) ^ set(hierarchy)):
                index.hierarchy = hierarchy
                index.level = len(hierarchy)
                index.put()
                return task, True
            return task, False