bjoern@283: #!/usr/bin/env python bjoern@283: # -*- coding: utf-8 -*- bjoern@283: # bjoern@358: # (c) 2013, 2014 by Björn Ricks bjoern@283: # bjoern@283: # This is Free Software licensed under the terms of GPLv3 or later. bjoern@283: # For details see LICENSE coming with the source of 'getan'. bjoern@283: bjoern@373: import codecs bjoern@373: import locale bjoern@373: import sys bjoern@373: bjoern@283: from datetime import date, datetime, timedelta mschieder@463: import argparse bjoern@283: bjoern@358: from getan.template import render bjoern@283: bjoern@347: bjoern@283: def main(): mschieder@463: usage='getan-eval.py [options]' mschieder@463: parser = argparse.ArgumentParser(prog='getan', usage=usage) bjoern@283: mschieder@463: parser.add_argument('-d', '--database', dest='database',metavar="DATABASE", mschieder@463: help='metavar="DATABASE') mschieder@463: parser.add_argument('-t', '--template', dest='template', mschieder@463: metavar='TEMPLATE', help='name of getan template') mschieder@463: parser.add_argument('-u', '--user', dest='user', help='name of user') mschieder@463: parser.add_argument('-p', '--project', dest='project', mschieder@463: help='key of output project') mschieder@463: parser.add_argument('-w', '--week', type=int, dest='week', mschieder@463: help='week of year') mschieder@463: parser.add_argument('-y', '--year', type=int, dest='year', help='year') mschieder@463: parser.add_argument('-c', '--lastweek', dest='lastweek', mschieder@463: help='entries of last working week', mschieder@463: action='store_true') mschieder@463: parser.add_argument('-m', '--empty', dest='empty', mschieder@463: help='show projects without an entries', mschieder@463: action="store_true") mschieder@463: parser.add_argument('--encoding', dest='encoding', mschieder@463: help='encoding of output', metavar='ENCODING') bjoern@283: mschieder@463: args = parser.parse_args() mschieder@463: mschieder@463: if args.lastweek: bjoern@358: week = (datetime.now() - timedelta(7)).isocalendar()[1] bjoern@358: year = int(date.today().strftime("%Y")) bjoern@283: else: mschieder@463: year = args.year mschieder@463: week = args.week bjoern@283: mschieder@463: template_name = args.template or "wochenbericht" bjoern@283: mschieder@463: if not args.encoding: bernhard@432: encoding = locale.getdefaultlocale()[1] or "utf-8" bjoern@373: mschieder@467: sys.stdout = codecs.getwriter(encoding)(sys.stdout.detach()) bjoern@373: bernhard@431: user = None mschieder@463: if args.user: mschieder@463: user = args.user.decode(encoding) bjoern@390: mschieder@467: print(render(database=args.database, user=user, bjoern@358: template=template_name, year=year, week=week, mschieder@467: project=args.project, empty_projects=args.empty)) bjoern@283: bjoern@283: bjoern@283: if __name__ == '__main__': bjoern@283: main() bjoern@283: bjoern@283: # vim:set ts=4 sw=4 si et sta sts=4 :