annotate scripts/getan-eval.py @ 463:24ccca2442b1

optparse to argparse Migration for scripts/getan-eval.py.
author Magnus Schieder <mschieder@intevation.de>
date Mon, 30 Apr 2018 12:13:35 +0200
parents 8d03d7ada7e1
children 59d9c5840273
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
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
14 import argparse
283
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():
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
20 usage='getan-eval.py [options]'
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
21 parser = argparse.ArgumentParser(prog='getan', usage=usage)
283
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
22
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
23 parser.add_argument('-d', '--database', dest='database',metavar="DATABASE",
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
24 help='metavar="DATABASE')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
25 parser.add_argument('-t', '--template', dest='template',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
26 metavar='TEMPLATE', help='name of getan template')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
27 parser.add_argument('-u', '--user', dest='user', help='name of user')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
28 parser.add_argument('-p', '--project', dest='project',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
29 help='key of output project')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
30 parser.add_argument('-w', '--week', type=int, dest='week',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
31 help='week of year')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
32 parser.add_argument('-y', '--year', type=int, dest='year', help='year')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
33 parser.add_argument('-c', '--lastweek', dest='lastweek',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
34 help='entries of last working week',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
35 action='store_true')
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
36 parser.add_argument('-m', '--empty', dest='empty',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
37 help='show projects without an entries',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
38 action="store_true")
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
39 parser.add_argument('--encoding', dest='encoding',
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
40 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
41
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
42 args = parser.parse_args()
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
43
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
44 if args.lastweek:
358
2b2e371b9bed Use the new getan.template module in getan-eval.py script
Björn Ricks <bjoern.ricks@intevation.de>
parents: 347
diff changeset
45 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
46 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
47 else:
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
48 year = args.year
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
49 week = args.week
283
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
50
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
51 template_name = args.template or "wochenbericht"
283
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
52
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
53 if not args.encoding:
432
8d03d7ada7e1 getan-eval.py: Fixes a possible encoding detection failure.
Bernhard Reiter <bernhard@intevation.de>
parents: 431
diff changeset
54 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
55
82a5dd050436 Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents: 360
diff changeset
56 Writer = codecs.getwriter(encoding)
82a5dd050436 Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents: 360
diff changeset
57 sys.stdout = Writer(sys.stdout)
82a5dd050436 Allow to set encoding in getan-eval
Björn Ricks <bjoern.ricks@intevation.de>
parents: 360
diff changeset
58
431
8922713adbe6 getan-eval.py: Improves how 'user' is found.
Bernhard Reiter <bernhard@intevation.de>
parents: 430
diff changeset
59 user = None
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
60 if args.user:
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
61 user = args.user.decode(encoding)
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
62
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
63 print render(database=args.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
64 template=template_name, year=year, week=week,
463
24ccca2442b1 optparse to argparse Migration for scripts/getan-eval.py.
Magnus Schieder <mschieder@intevation.de>
parents: 432
diff changeset
65 project=args.project, empty_projects=args.empty)
283
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
66
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
67
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
68 if __name__ == '__main__':
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
69 main()
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
70
0746534b7f97 Add first draft for a template based getan time evaluation
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
71 # vim:set ts=4 sw=4 si et sta sts=4 :
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)