Mercurial > getan
annotate scripts/getan-eval.py @ 457:7fedbb73022e
clean up source code
* use defaults in argparse and adapt the source code to it.
* update CHANGES
author | Magnus Schieder <mschieder@intevation.de> |
---|---|
date | Fri, 02 Feb 2018 12:37:11 +0100 |
parents | 8d03d7ada7e1 |
children | 24ccca2442b1 |
rev | line source |
---|---|
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
3 # |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
4 # (c) 2013, 2014 by Björn Ricks <bjoern.ricks@intevation.de> |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
5 # |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
6 # This is Free Software licensed under the terms of GPLv3 or later. |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
7 # For details see LICENSE coming with the source of 'getan'. |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
8 |
373
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
9 import codecs |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
10 import locale |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
11 import sys |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
12 |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
13 from datetime import date, datetime, timedelta |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
14 from optparse import OptionParser |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
15 |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
16 from getan.template import render |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
17 |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
18 |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
19 def main(): |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
20 parser = OptionParser() |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
21 parser.add_option("-d", "--database", dest="database", |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
22 help="getan database", metavar="DATABASE") |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
23 parser.add_option("-t", "--template", dest="template", metavar="TEMPLATE", |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
24 help="name of getan template") |
430
e2b05afaf1bc
Backed out changeset 5ee2ce059338.
Bernhard Reiter <bernhard@intevation.de>
parents:
429
diff
changeset
|
25 parser.add_option("-u", "--user", dest="user", help="name of user") |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
26 parser.add_option("-p", "--project", dest="project", |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
27 help="key of output project") |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
28 parser.add_option("-w", "--week", type="int", dest="week", |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
29 help="week of year") |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
30 parser.add_option("-y", "--year", type="int", dest="year", help="year") |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
31 parser.add_option("-c", "--lastweek", dest="lastweek", |
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
32 help="entries of last working week", |
347
3a1786947673
Fix coding style for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
283
diff
changeset
|
33 action="store_true") |
360
1b190fa27482
Allow to render only projects with entries in templates
Björn Ricks <bjoern.ricks@intevation.de>
parents:
358
diff
changeset
|
34 parser.add_option("-m", "--empty", dest="empty", |
1b190fa27482
Allow to render only projects with entries in templates
Björn Ricks <bjoern.ricks@intevation.de>
parents:
358
diff
changeset
|
35 help="show projects without an entries", |
1b190fa27482
Allow to render only projects with entries in templates
Björn Ricks <bjoern.ricks@intevation.de>
parents:
358
diff
changeset
|
36 action="store_true") |
373
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
37 parser.add_option("--encoding", dest="encoding", |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
38 help="encoding of output", metavar="ENCODING") |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
39 |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
40 (options, args) = parser.parse_args() |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
41 |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
42 if options.lastweek: |
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
43 week = (datetime.now() - timedelta(7)).isocalendar()[1] |
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
44 year = int(date.today().strftime("%Y")) |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
45 else: |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
46 year = options.year |
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
47 week = options.week |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
48 |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
49 template_name = options.template or "wochenbericht" |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
50 |
373
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
51 if not options.encoding: |
432
8d03d7ada7e1
getan-eval.py: Fixes a possible encoding detection failure.
Bernhard Reiter <bernhard@intevation.de>
parents:
431
diff
changeset
|
52 encoding = locale.getdefaultlocale()[1] or "utf-8" |
373
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
53 |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
54 Writer = codecs.getwriter(encoding) |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
55 sys.stdout = Writer(sys.stdout) |
82a5dd050436
Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents:
360
diff
changeset
|
56 |
431
8922713adbe6
getan-eval.py: Improves how 'user' is found.
Bernhard Reiter <bernhard@intevation.de>
parents:
430
diff
changeset
|
57 user = None |
390
da9a400848fd
Fix using umlauts in usernames like Björn for getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
380
diff
changeset
|
58 if options.user: |
da9a400848fd
Fix using umlauts in usernames like Björn for getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
380
diff
changeset
|
59 user = options.user.decode(encoding) |
da9a400848fd
Fix using umlauts in usernames like Björn for getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
380
diff
changeset
|
60 |
da9a400848fd
Fix using umlauts in usernames like Björn for getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
380
diff
changeset
|
61 print render(database=options.database, user=user, |
358
2b2e371b9bed
Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents:
347
diff
changeset
|
62 template=template_name, year=year, week=week, |
360
1b190fa27482
Allow to render only projects with entries in templates
Björn Ricks <bjoern.ricks@intevation.de>
parents:
358
diff
changeset
|
63 project=options.project, empty_projects=options.empty) |
283
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
64 |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
65 |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
66 if __name__ == '__main__': |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
67 main() |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
68 |
0746534b7f97
Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
69 # vim:set ts=4 sw=4 si et sta sts=4 : |