view 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
line wrap: on
line source
#!/usr/bin/env python
# -*- 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-eval.py [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"

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

    user = None
    if args.user:
        user = args.user.decode(encoding)

    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)