bjoern@283: #!/usr/bin/env python
bjoern@283: # -*- coding: utf-8 -*-
bjoern@283: #
bjoern@358: # (c) 2013, 2014 by Björn Ricks <bjoern.ricks@intevation.de>
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 :