def change_parents_due_dates(task): if not task.task_set.exists(): return for index, parent in enumerate(task.task_set.all()): result = compare_dates(parent.due_date, task.due_date) if result[0] == 1 and result[1] == 0: parent.due_date = task.due_date parent.save() change_parents_due_dates(parent)
def update_children_due_date(user, task, new_date_object): for index, subtask in enumerate(task.subtasks.all()): #print >>sys.stderr, "updating subtask = " + subtask.name if subtask.due_date == None or \ subtask.due_date.replace(tzinfo = None) > new_date_object: #print >>sys.stderr, "subtask due date replaced = " + str(new_date_object) subtask.due_date = new_date_object dates_diff = compare_dates(subtask.start_date, subtask.due_date) if dates_diff[0] and dates_diff[1]: #print >>sys.stderr, "subtask start date replaced = " + str(new_date_object) subtask.start_date = subtask.due_date update_log(user, subtask, LOG_TASK_MODIFY) subtask.save() update_children_due_date(user, subtask, subtask.due_date)
def change_task_date(user, task, new_date_object, date_type): if date_type == IS_START_DATE: task.start_date = new_date_object elif date_type == IS_DUE_DATE: task.due_date = new_date_object if task.task_set.exists(): parent = task.task_set.all()[0] if new_date_object == None and parent.due_date != None: task.due_date = parent.due_date compare_result = compare_dates(task.start_date, task.due_date) if compare_result[0] and compare_result[1]: task.start_date = task.due_date task.save() return task
def update_parent_due_date(user, task, new_date_object): for index, parent in enumerate(task.task_set.all()): #print >>sys.stderr, "updating parent = " + parent.name + " due date = " + str(parent.due_date) if parent.due_date != None: if new_date_object == None: #print >>sys.stderr, "task due date replaced = " + str(new_date_object) task.due_date = parent.due_date elif parent.due_date.replace(tzinfo = None) < new_date_object: #print >>sys.stderr, "parent due date replaced = " + str(new_date_object) parent.due_date = new_date_object dates_diff = compare_dates(parent.start_date, parent.due_date) if dates_diff[0] and dates_diff[1]: #print >>sys.stderr, "parent start date replaced = " + str(new_date_object) parent.start_date = parent.due_date update_log(user, parent, LOG_TASK_MODIFY) parent.save() update_parent_due_date(user, parent, parent.due_date)