view scripts/getan-report @ 523:1d7b303e7b3a

Backed out changeset e8b7abbe07e5 * In the readme the time period when major contributions come in is important.
author Bernhard Reiter <bernhard@intevation.de>
date Mon, 03 Dec 2018 09:40:37 +0100
parents 11d97a40dfa5
children 31282f97b807
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


def main():
    usage='getan-report [options]'
    parser = argparse.ArgumentParser(prog='getan', usage=usage)

    parser.add_argument('-d', '--database', dest='database',metavar="DATABASE",
                        help='metavar="DATABASE')
    parser.add_argument('-t', '--template', dest='template',
                        metavar='TEMPLATE', help='name of getan template')
    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)