Beispiel #1
0
def group_milestones(milestones, include_completed):
    """Group milestones into "open with due date", "open with no due date",
    and possibly "completed". Return a list of (label, milestones) tuples."""

    def category(m):
        return 1 if m.is_completed else 2 if m.due else 3

    open_due_milestones, open_not_due_milestones, closed_milestones = partition(
        [(m, category(m)) for m in milestones], (2, 3, 1)
    )
    groups = [(_("Open (by due date)"), open_due_milestones), (_("Open (no due date)"), open_not_due_milestones)]
    if include_completed:
        groups.append((_("Closed"), closed_milestones))
    return groups
Beispiel #2
0
def group_milestones(milestones, include_completed):
    """Group milestones into "open with due date", "open with no due date",
    and possibly "completed". Return a list of (label, milestones) tuples."""
    def category(m):
        return 1 if m.is_completed else 2 if m.due else 3
    open_due_milestones, open_not_due_milestones, \
        closed_milestones = partition([(m, category(m))
                                       for m in milestones], (2, 3, 1))
    groups = [
        (_("Open (by due date)"), open_due_milestones),
        (_("Open (no due date)"), open_not_due_milestones),
    ]
    if include_completed:
        groups.append((_('Closed'), closed_milestones))
    return groups
Beispiel #3
0
    def reorganize(milestones):
        if not milestones:
            return milestones
        for milestone in milestones:
            milestone._kids = []

        grouped = partition((milestone, milestone.parent) for milestone in milestones)
        roots = []
        name_to_struct = {}
        delayed_items ={}
        for parent, kids in grouped.iteritems():
            target = roots
            if parent:
                if name_to_struct.has_key(parent):
                    target =  name_to_struct[parent].kids
                else:
                    target = delayed_items.setdefault(parent, [])
            for child in kids:
                child.kids.extend(delayed_items.pop(child.name,[]))
                name_to_struct[child.name] = child
                target.append(child)
        return StructuredMilestone._deep_sort(roots)