[Getan-commits] [PATCH] Fixes sorting by day for templates

Wald Commits scm-commit at wald.intevation.org
Wed May 3 13:36:02 CEST 2017


# HG changeset patch
# User Bernhard Reiter <bernhard at intevation.de>
# Date 1493811358 -7200
# Node ID a499441249af134177b1d1d2d4f8bd9d84861451
# Parent  cc56bc1fd56b481eb49a4f9cbb4b22e00c0ff7b1
Fixes sorting by day for templates.

 * Adds a string attribute 'startisoday' to the Entry object, so it can
   be used by jinja2's sort and groupby filters.

diff -r cc56bc1fd56b -r a499441249af TODO
--- a/TODO	Wed May 03 12:59:37 2017 +0200
+++ b/TODO	Wed May 03 13:35:58 2017 +0200
@@ -7,9 +7,6 @@
 20160912 BER: Better code: states.py: classes EditEntryState and 
   AdjustEntryState have same methods exit() and set_focus(), maybe join them?
 
-20151130 BER: templates/zeiterfassung2: Really sort by date, right now the 
-  sorting it sometimes skewed if the week wraps around the end of the month.
-
 Older:
 
 - Create a 'Help-Widget' to give the user an information about all possible
diff -r cc56bc1fd56b -r a499441249af getan/project.py
--- a/getan/project.py	Wed May 03 12:59:37 2017 +0200
+++ b/getan/project.py	Wed May 03 13:35:58 2017 +0200
@@ -4,6 +4,11 @@
 # (c) 2008, 2009, 2010 by
 #   Sascha L. Teichmann <sascha.teichmann at intevation.de>
 #   Ingo Weinzierl <ingo.weinzierl at intevation.de>
+# (c) 2017 by Intevation GmbH
+# Authors:
+#  * Sascha L. Teichmann <sascha.teichmann at intevation.de>
+#  * Ingo Weinzierl <ingo.weinzierl at intevation.de>
+#  ' Bernhard Reiter <bernhard.reiter at intevation.de>
 #
 # This is Free Software licensed unter the terms of GPLv3 or later.
 # For details see LICENSE coming with the source of 'getan'.
@@ -92,6 +97,11 @@
         self.desc = desc
         self.workpackage = "-"
 
+        # we add this attribute for use in jinja2 templates,
+        # as filters like sort() or groupby() work only on attributes
+        # and sorting or grouping by day is common for reporting
+        self.startisoday = start.date().isoformat()
+
         # carefully handle non unicode string
         # urwid seems to have some issue with plain str
         if self.desc and not isinstance(self.desc, unicode):
diff -r cc56bc1fd56b -r a499441249af getan/templates/zeiterfassung2
--- a/getan/templates/zeiterfassung2	Wed May 03 12:59:37 2017 +0200
+++ b/getan/templates/zeiterfassung2	Wed May 03 13:35:58 2017 +0200
@@ -1,7 +1,7 @@
 {% for proj in projects %}
 {%- if proj.entries %}
 ## category: {{ proj.key }} ({{ proj.desc }})
-{% for grouper, gentries in proj.entries|sort(attribute='start')|groupby('start.day') %}
+{% for grouper, gentries in proj.entries|sort(attribute='startisoday')|groupby('startisoday') %}
 {#- grouper will contain the attribute used for groupby() -#}
 
 {% for ggrouper, ggentries in gentries|groupby('workpackage') %}


More information about the Getan-commits mailing list