From 844b068e37d7a87c1e92ce5611dd2d62918daa8f Mon Sep 17 00:00:00 2001 From: codingforfun Date: Tue, 1 Sep 2015 09:13:16 +0200 Subject: [PATCH 1/5] Merge description of same activity --- hamster-export | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hamster-export b/hamster-export index 39bae6c..6a5a376 100755 --- a/hamster-export +++ b/hamster-export @@ -101,9 +101,11 @@ class Timesheet(object): if len(items) > 1: item.duration = sum(map(operator.attrgetter('duration'), items)) + item.description = ''.join(filter(lambda i: i or '', map( + operator.attrgetter('description'), items))) return item - key = operator.attrgetter('date', 'name', 'description') + key = operator.attrgetter('date', 'name') merged = [] for key, items in itertools.groupby(sorted(self.entries, key=key), key=key): From 6078e199e83df4348aeb1beef11a404e110ec528 Mon Sep 17 00:00:00 2001 From: codingforfun Date: Tue, 1 Sep 2015 09:20:29 +0200 Subject: [PATCH 2/5] Fix delimiter string --- hamster-export | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hamster-export b/hamster-export index 6a5a376..971b957 100755 --- a/hamster-export +++ b/hamster-export @@ -101,7 +101,7 @@ class Timesheet(object): if len(items) > 1: item.duration = sum(map(operator.attrgetter('duration'), items)) - item.description = ''.join(filter(lambda i: i or '', map( + item.description = ', '.join(filter(lambda i: i or '', map( operator.attrgetter('description'), items))) return item From 1c139d676b01e252ae4069fb5f7442d848795c74 Mon Sep 17 00:00:00 2001 From: codingforfun Date: Fri, 18 Sep 2015 11:16:39 +0200 Subject: [PATCH 3/5] Do not duplicate exact same description item when merging. --- hamster-export | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hamster-export b/hamster-export index 971b957..6985150 100755 --- a/hamster-export +++ b/hamster-export @@ -101,8 +101,10 @@ class Timesheet(object): if len(items) > 1: item.duration = sum(map(operator.attrgetter('duration'), items)) - item.description = ', '.join(filter(lambda i: i or '', map( - operator.attrgetter('description'), items))) + + item.description = ', '.join(set( + filter(lambda i: i and i.strip() or '', + map(operator.attrgetter('description'), items)))) return item key = operator.attrgetter('date', 'name') From fc1bf3c3b7289272085d9868b5275fe33b58d715 Mon Sep 17 00:00:00 2001 From: codingforfun Date: Thu, 27 Aug 2015 10:31:08 +0200 Subject: [PATCH 4/5] Reverse sort entries by duration --- hamster-export | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hamster-export b/hamster-export index 6985150..97b586e 100755 --- a/hamster-export +++ b/hamster-export @@ -112,7 +112,8 @@ class Timesheet(object): for key, items in itertools.groupby(sorted(self.entries, key=key), key=key): merged.append(merge(list(items))) - self._entries = merged + + self._entries = sorted(merged, key=lambda i: i.duration, reverse=True) def check_activities(self, activities): patterns = set(map(operator.attrgetter('name'), activities)) From edb0edb86973872de61d3e6a10a560438f9d2c7b Mon Sep 17 00:00:00 2001 From: codingforfun Date: Fri, 18 Sep 2015 12:47:32 +0200 Subject: [PATCH 5/5] Group by date on sorting by duration --- hamster-export | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hamster-export b/hamster-export index 97b586e..4589787 100755 --- a/hamster-export +++ b/hamster-export @@ -112,8 +112,8 @@ class Timesheet(object): for key, items in itertools.groupby(sorted(self.entries, key=key), key=key): merged.append(merge(list(items))) - - self._entries = sorted(merged, key=lambda i: i.duration, reverse=True) + # sort by date and duration + self._entries = sorted(merged, key=lambda i: (i.date, -i.duration)) def check_activities(self, activities): patterns = set(map(operator.attrgetter('name'), activities))