view scripts/getan-report @ 528:210bd796829e

Updates the description of an entry * When describing an entry, you can now use the arrow keys to select and edit old descriptions. * bumps to 3.2.dev1
author Magnus Schieder <mschieder@intevation.de>
date Mon, 03 Jun 2019 20:19:17 +0200
parents 31282f97b807
children d5acadeef0f8
line wrap: on
line source
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# (c) 2013, 2014 by Björn Ricks <bjoern.ricks@intevation.de>
#
# This is Free Software licensed under the terms of GPLv3 or later.
# For details see LICENSE coming with the source of 'getan'.

import codecs
import locale
import sys

from datetime import date, datetime, timedelta
import argparse

from getan.template import render
from getan.backend import DEFAULT_DATABASE


def main():
    usage='getan-report [options]'
    parser = argparse.ArgumentParser(prog='getan', usage=usage,
            description="You can find more information at https://pypi.org/project/getan/")

    parser.add_argument('-d', '--database', dest='database',metavar="DATABASE_FILE",
                        help='databasefile (default: ~/.getan/%(default)s)]',
                        default=DEFAULT_DATABASE)
    parser.add_argument('-t', '--template', dest='template',
                        metavar='TEMPLATE',
                        help="""name of getan template (wochenbericht,
                                zeiterfassung, zeiterfassung2),
                                external templates must be stored in
                                ~/.getan/templates/ to be able to call them.""")
    parser.add_argument('-u', '--user', dest='user', help='name of user')
    parser.add_argument('-p', '--project', dest='project',
                        help='key of output project')
    parser.add_argument('-w', '--week', type=int, dest='week',
                        help='week of year')
    parser.add_argument('-y', '--year', type=int, dest='year', help='year')
    parser.add_argument('-c', '--lastweek', dest='lastweek',
                        help='entries of last working week',
                        action='store_true')
    parser.add_argument('-m', '--empty', dest='empty',
                        help='show projects without an entries',
                        action="store_true")
    parser.add_argument('--encoding', dest='encoding',
                        help='encoding of output', metavar='ENCODING')

    args = parser.parse_args()

    if args.lastweek:
        week = (datetime.now() - timedelta(7)).isocalendar()[1]
        year = int(date.today().strftime("%Y"))
    else:
        year = args.year
        week = args.week

    template_name = args.template or "wochenbericht"

    if not args.encoding:
        encoding = locale.getdefaultlocale()[1] or "utf-8"

    sys.stdout = codecs.getwriter(encoding)(sys.stdout.detach())

    user = None
    if args.user:
        user = args.user

    print(render(database=args.database, user=user,
                 template=template_name, year=year, week=week,
                 project=args.project, empty_projects=args.empty))


if __name__ == '__main__':
    main()

# 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)