Mercurial > getan > getan
annotate getan/main.py @ 536:a59622c06936
Fix generating reports if no week given
unix_week() cannot handle week being None but does so for year. It just
assumes the current year in this case, although this only duplicates the
initialisation of year with c_year in this context. week being None gives
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
load_entries() handles the case with no week given, thus call it anyhow.
This fix makes it possible to invoke scripts/getan-report with a year given
but no week and seeing the expected result (data for a whole year) instead
of a traceback.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 09 Jan 2020 11:32:34 +0100 |
parents | 5d4006e3210c |
children | 525ac205dca2 |
rev | line source |
---|---|
482
999a438474f2
Changed Hashbangs to python3.
Magnus Schieder <mschieder@intevation.de>
parents:
466
diff
changeset
|
1 #!/usr/bin/env python3 |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
3 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
4 # (c) 2010 by Ingo Weinzierl <ingo.weinzierl@intevation.de> |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
5 # (c) 2011 by Björn Ricks <bjoern.ricks@intevation.de> |
534
5d4006e3210c
increment displayed copyright year
Bernhard Reiter <bernhard@intevation.de>
parents:
526
diff
changeset
|
6 # (c) 2017, 2018, 2019, 2020 Intevation GmbH |
488
463894654d77
Prepares for release 3.0
Magnus Schieder <mschieder@intevation.de>
parents:
483
diff
changeset
|
7 # Authors: |
463894654d77
Prepares for release 3.0
Magnus Schieder <mschieder@intevation.de>
parents:
483
diff
changeset
|
8 # * Magnus Schieder <magnus.schieder@intevation.de> |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
9 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
10 # A python worklog-alike to log what you have 'getan' (done). |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
11 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
12 # This is Free Software licensed under the terms of GPLv3 or later. |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
13 # For details see LICENSE coming with the source of 'getan'. |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
14 # |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
15 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
16 import logging |
117
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
17 import os |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
18 import os.path |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
19 import argparse |
465
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
20 import textwrap |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
21 |
184
f8a19dbc8231
Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents:
183
diff
changeset
|
22 import getan |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
23 import getan.config as config |
184
f8a19dbc8231
Add version switch to getan
Björn Ricks <bjoern.ricks@intevation.de>
parents:
183
diff
changeset
|
24 |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
25 from getan.backend import DEFAULT_DATABASE, Backend |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
26 from getan.controller import GetanController |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
27 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
28 logger = logging.getLogger() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
29 |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
30 |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
31 def main(): |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
32 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
33 usage = "%(prog)s [options] [databasefile (default: " + \ |
317
dc7c1a894e21
Fix codingstyle for pep8
Björn Ricks <bjoern.ricks@intevation.de>
parents:
184
diff
changeset
|
34 DEFAULT_DATABASE + ")]" |
465
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
35 version = ''' |
466
9dab95965ac6
Authors adds in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
465
diff
changeset
|
36 getan version %s |
534
5d4006e3210c
increment displayed copyright year
Bernhard Reiter <bernhard@intevation.de>
parents:
526
diff
changeset
|
37 (c) 2008-2020 by Intevation GmbH |
520
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
38 Authors: Sascha L. Teichmann <teichmann@intevation.de> |
521
f8b05636cd43
Sort by time, earliest authors first. (correction for f05079aea604)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
520
diff
changeset
|
39 Thomas Arendsen Hein <thomas@intevation.de> |
520
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
40 Ingo Weinzierl <ingo.weinzierl@intevation.de> |
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
41 Björn Ricks <bjoern.ricks@intevation.de> |
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
42 Bernhard Reiter <bernhard.reiter@intevation.de> |
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
43 Magnus Schieder <magnus.schieder@intevation.de> |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
44 |
520
f05079aea604
Improve --version output.
Bernhard Reiter <bernhard@intevation.de>
parents:
490
diff
changeset
|
45 This is Free Software licensed under the terms of GNU GPL v>=3. |
465
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
46 For details see LICENSE coming with the source of \'getan\'. |
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
47 ''' % getan.__version__ |
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
48 |
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
49 parser = argparse.ArgumentParser(prog='getan', usage=usage, |
526
31282f97b807
Reworked the --help function
Magnus Schieder <mschieder@intevation.de>
parents:
521
diff
changeset
|
50 description="You can find more information at https://pypi.org/project/getan/", |
31282f97b807
Reworked the --help function
Magnus Schieder <mschieder@intevation.de>
parents:
521
diff
changeset
|
51 formatter_class=argparse.RawTextHelpFormatter) |
465
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
52 parser.add_argument('--version', action='version', |
7fc3da3c100d
More and better information in --version.
Magnus Schieder <mschieder@intevation.de>
parents:
464
diff
changeset
|
53 version=textwrap.dedent(version)) |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
54 parser.add_argument(dest='filename', nargs='?', |
526
31282f97b807
Reworked the --help function
Magnus Schieder <mschieder@intevation.de>
parents:
521
diff
changeset
|
55 help='[databasefile (default: ~/.getan/%(default)s)]', |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
56 default=DEFAULT_DATABASE) |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
57 parser.add_argument('--init-only', action='store_true', dest='initonly', |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
58 help='create databasefile if necessary and exit') |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
59 parser.add_argument('-d', '--debug', action='store_const', dest='loglevel', |
483
d47e32e6b7e7
Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents:
482
diff
changeset
|
60 default=logging.NOTSET, const=logging.DEBUG, |
d47e32e6b7e7
Logging can be activated and deactivated.
Magnus Schieder <mschieder@intevation.de>
parents:
482
diff
changeset
|
61 help='Enable debung mode') |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
62 parser.add_argument('-l', '--logfile', dest='logfile', metavar='FILE', |
458
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
63 help='''write log information to FILE [default: |
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
64 %(default)s]''', default='getan.log') |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
65 |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
66 args = parser.parse_args() |
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
67 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
68 config.initialize(args.loglevel, args.logfile) |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
69 global logger |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
70 |
458
2707676cfd03
check source code style.
Magnus Schieder <mschieder@intevation.de>
parents:
457
diff
changeset
|
71 if args.filename != DEFAULT_DATABASE: |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
72 database = args.filename |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
73 else: |
117
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
74 if os.path.isfile(DEFAULT_DATABASE): |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
75 database = os.path.abspath(DEFAULT_DATABASE) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
76 else: |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
77 getan_dir = os.path.expanduser(os.path.join("~", ".getan")) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
78 if not os.path.exists(getan_dir): |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
79 os.mkdir(getan_dir) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
80 database = os.path.join(getan_dir, DEFAULT_DATABASE) |
c5c877d6c1e3
Load and create default database for installed scripts
Björn Ricks <bjoern.ricks@intevation.de>
parents:
114
diff
changeset
|
81 |
457
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
82 backend = Backend(database) |
7fedbb73022e
clean up source code
Magnus Schieder <mschieder@intevation.de>
parents:
456
diff
changeset
|
83 logging.info("Using database '%s'." % database) |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
84 |
456
193a4a051660
Version: bumps to 2.3.dev1, ptparse to argparse Migration.
Magnus Schieder <mschieder@intevation.de>
parents:
433
diff
changeset
|
85 if args.initonly: |
433
266634f3712a
Improves command line options.
Bernhard Reiter <bernhard@intevation.de>
parents:
318
diff
changeset
|
86 return |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
87 |
318
27fc5f43a69b
Move setting the ProjectList and EntryList instances into the controller
Björn Ricks <bjoern.ricks@intevation.de>
parents:
317
diff
changeset
|
88 controller = GetanController(backend) |
114
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
89 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
90 try: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
91 controller.main() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
92 except KeyboardInterrupt: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
93 pass |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
94 finally: |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
95 controller.shutdown() |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
96 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
97 |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
98 if __name__ == '__main__': |
6df408534f3f
Move getan.py to getan/main.py
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
99 main() |