diff contrib/zeiterfassung @ 51:3f97954868e4

add year option to usage output add missing short option -y for --year make year switch optional for listing project depended entries
author Björn Ricks <bjoern.ricks@intevation.de>
date Wed, 23 Mar 2011 11:04:28 +0100
parents 5f87604ea5ed
children 2f9093b41c5b
line wrap: on
line diff
--- a/contrib/zeiterfassung	Fri Mar 18 16:30:56 2011 +0100
+++ b/contrib/zeiterfassung	Wed Mar 23 11:04:28 2011 +0100
@@ -34,6 +34,7 @@
     [--project=|-p <key>]      : Key of output project, default: all
     [--encoding=|-e encoding]  : encoding of output,    default: none
     [--week=]|-w <week>]       : week of year
+    [--year=]|-y <year>]       : year
     [--list|-l]                : list all projects
     [--help|-h]                : This text'''
 
@@ -87,6 +88,24 @@
 FROM entries 
 WHERE 
     project_id = :project_id AND 
+    description IS NOT NULL AND length(description) > 0
+'''
+
+ENTRIES_YEAR = '''
+SELECT 
+    date(start_time), 
+    sum(strftime('%s', stop_time) - strftime('%s', start_time)), 
+    'no description' AS description
+FROM entries 
+WHERE 
+    project_id = :project_id AND 
+    (description IS NULL or length(description) = 0) -- trim() function is missing
+GROUP BY round(julianday(start_time))
+UNION
+SELECT date(start_time), strftime('%s', stop_time) - strftime('%s', start_time), description
+FROM entries 
+WHERE 
+    project_id = :project_id AND 
     (strftime('%Y', start_time) ) = :year AND
     description IS NOT NULL AND length(description) > 0
 '''
@@ -131,7 +150,7 @@
 
     opts, args = getopt.getopt(
         sys.argv[1:],
-        'd:u:p:e:hl:w:',
+        'd:u:p:e:hl:w:y:',
         ['database=', 'user=', 'project=', 'encoding=', 'help', 'list', 'week=', 'year='])
 
     for opt, val in opts:
@@ -155,8 +174,9 @@
     if not user:
         user = os.getenv("USER")
 
-    if not year:
-        year = date.today().strftime("%Y")
+    proj_year = year
+    if not proj_year:
+        proj_year = date.today().strftime("%Y")
 
     if encoding:
         Writer = codecs.getwriter(encoding)
@@ -194,9 +214,11 @@
                 for project_id, project, proj_desc in project_ids:
                     print "# project: %s (%s)" % (project, proj_desc)
                     if not week is None:
-                        cur.execute(WEEK_ENTRIES, {'project_id': project_id, 'week': week, 'year' : year})
+                        cur.execute(WEEK_ENTRIES, {'project_id': project_id, 'week': week, 'year' : proj_year})
+                    elif not year:
+                        cur.execute(ENTRIES, {'project_id': project_id})
                     else:
-                        cur.execute(ENTRIES, {'project_id': project_id})
+                        cur.execute(ENTRIES_YEAR, {'project_id': project_id, 'year':proj_year})
                     total = 0
                     while True:
                         row = cur.fetchone()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)