ingo@55: 2011-04-18 Ingo Weinzierl ingo@55: ingo@55: * contrib/zeiterfassung: Introcuded a new command line argument ingo@55: "--skip|-s" to skip printing projects that have no entry for the ingo@55: specified time range. ingo@55: ingo_weinzierl@48: 2011-02-28 Ingo Weinzierl ingo_weinzierl@48: ingo_weinzierl@48: * getan/states.py: Bugfix: Projects with children are no longer selectable ingo_weinzierl@48: and project which key is longer than a single character are selectable via ingo_weinzierl@48: text input. ingo_weinzierl@48: ingo@47: 2011-02-15 Ingo Weinzierl ingo@47: ingo@47: * getan/states.py: Bugfix: We are able to move entries into projects with ingo@47: a key that consist of more than one single char again. ingo@47: ingo@45: 2010-12-21 Ingo Weinzierl ingo@45: ingo@45: * getan.py: Added a method to sort the projects based on its key. ingo@45: ingo@45: * getan/project.py: A project can now have children. Therefore, a new ingo@45: method add_child() has been implemented. Important to build up a tree is ingo@45: the project's key. If we try to append a new child to a project, but ingo@45: there is already a child with the key that starts just like the new ingo@45: child's, we will try to append the new child to the existing one. ingo@45: ingo@45: * getan/view.py: The project view looks now like a tree. Projects can have ingo@45: children, that are indented relative to its parent. ingo@45: teichmann@43: 2010-12-15 Sascha L. Teichmann teichmann@43: teichmann@43: Fix for #1638 teichmann@43: teichmann@43: * getan/view.py: use preferred encoding in uwid teichmann@43: * getan/states.py: Fixed another no-project bug. teichmann@43: teichmann@41: 2010-12-15 Sascha L. Teichmann teichmann@41: teichmann@41: Make getan runnable if there is no project in database. teichmann@41: teichmann@41: * getan.py, getan/states.py, getan/view.py: Various checks teichmann@41: to ensure you really have a project. teichmann@41: teichmann@40: 2010-12-15 Sascha L. Teichmann teichmann@40: teichmann@40: * getan/backend.py: Create database file if it does teichmann@40: not exist. teichmann@40: teichmann@39: 2010-12-15 Sascha L. Teichmann teichmann@39: teichmann@39: Some minor fixes teichmann@39: teichmann@39: * getan/config.py: Proper use of global logger. teichmann@39: * getan/resources.py: Removed needless import teichmann@39: * getan/states.py: Fixed state errors teichmann@39: teichmann@37: 2010-12-15 Sascha L. Teichmann teichmann@37: teichmann@38: Fix for #1624 teichmann@37: teichmann@37: * getan/states.py, getan/utils.py: used a safe int conversion. teichmann@37: ingo_weinzierl@36: 2010-10-02 Ingo Weinzierl ingo_weinzierl@36: ingo_weinzierl@36: * getan/config.py: Setup the language. ingo_weinzierl@36: ingo_weinzierl@36: * getan/resources.py: New module that should serve functions for working ingo_weinzierl@36: with resources. Currently, there is just a single function to get a ingo_weinzierl@36: translated text based on gettext. ingo_weinzierl@36: ingo_weinzierl@36: * getan/states.py, ingo_weinzierl@36: getan/view.py: Replaced hard coded texts with gettext calls. ingo_weinzierl@36: ingo_weinzierl@36: * po/Makefile, ingo_weinzierl@36: po/README, ingo_weinzierl@36: po/de.po: Makefile, description and german translation for gettext. ingo_weinzierl@36: ingo_weinzierl@36: NOTE: It is necessary to call 'make mo' in the po directory to enable the ingo_weinzierl@36: german language. ingo_weinzierl@36: ingo_weinzierl@34: 2010-09-02 Ingo Weinzierl ingo_weinzierl@34: ingo_weinzierl@34: ISSUE1575 ingo_weinzierl@34: ingo_weinzierl@34: * getan/view.py: Verify that time values are not null before adding them to ingo_weinzierl@34: total time. Avoids getan crashing while switching the time mode. ingo_weinzierl@34: ingo@33: 2010-08-31 Ingo Weinzierl ingo@33: ingo@33: * getan.py, getan/backend.py: Made getan Python-2.4 compatible. ingo@33: ingo@32: 2010-08-31 Ingo Weinzierl ingo@32: ingo@32: * contrib/wochenbericht: Added a parameter 'year' that makes possible to ingo@32: filter out the week of a specific year only. ingo@32: ingo@31: 2010-08-31 Ingo Weinzierl ingo@31: ingo@31: ISSUE1566 ingo@31: ingo@31: * getan.py: Bugfix: removed 'with' statement, replaced by try/finally. ingo@31: ingo_weinzierl@30: 2010-08-30 Ingo Weinzierl ingo_weinzierl@30: ingo_weinzierl@30: * getan.py: Added __enter__ and __exit__ methods. The exit method is used to ingo_weinzierl@30: stop still running projects - even if getan crashes. Therefor it was ingo_weinzierl@30: necessary to change the method signature of stop_project() in ingo_weinzierl@30: GetanController. The description for the running project is given into the ingo_weinzierl@30: method as parameter. If no desc parameter is specified, '-no description-' ingo_weinzierl@30: is used as description. This is the case if there are still running ingo_weinzierl@30: projects when we reach __exit__(). ingo_weinzierl@30: ingo_weinzierl@30: * getan/states.py: Added a description when calling stop_project() of ingo_weinzierl@30: GetanController. ingo_weinzierl@30: ingo@28: 2010-08-30 Ingo Weinzierl ingo@28: ingo@28: * getan/view.py: Bugfix: Unified parameter names in ProjectList - some ingo@28: changes in rev25 did not fit to the current parameter names (head, foot). ingo@28: ingo@27: 2010-08-30 Ingo Weinzierl ingo@27: ingo@27: * getan/states.py, ingo@27: getan/view.py: Bugfix: fixed wrong parameter name while accessing the raw ingo@27: project of a project node. ingo@27: ingo_weinzierl@26: 2010-08-29 Ingo Weinzierl ingo_weinzierl@26: ingo_weinzierl@26: * getan.py: Catch a window resize event before calling keypress() of the ingo_weinzierl@26: states and trigger an update of the view - the view is resizable now! ingo_weinzierl@26: ingo_weinzierl@25: 2010-08-29 Ingo Weinzierl ingo_weinzierl@25: ingo_weinzierl@25: * getan/states.py: Enter MoveEntryState and DeleteEntryState only if there ingo_weinzierl@25: are selected entries. ingo_weinzierl@25: ingo_weinzierl@25: * getan/view.py: Updating the footer text of a ListWidget will update the ingo_weinzierl@25: attribute 'footer' in the ListWidget and call ListWidget._update_view(). ingo_weinzierl@25: ingo_weinzierl@25: * getan.py: Bugfix: changed the attribute name (entry -> item) when ingo_weinzierl@25: accessing the EntryList's entries. ingo_weinzierl@25: ingo_weinzierl@24: 2010-08-29 Ingo Weinzierl ingo_weinzierl@24: ingo_weinzierl@24: * getan/view.py: Bugfix: switching the time mode in ProjectList will also ingo_weinzierl@24: update the displayed total time in the footer of ProjectList. ingo_weinzierl@24: ingo_weinzierl@23: 2010-08-28 Ingo Weinzierl ingo_weinzierl@23: ingo_weinzierl@23: This commit introduces a new implementation of 'getan's user interface based ingo_weinzierl@23: on urwid ( >= 0.9.9.1). ingo_weinzierl@23: ingo_weinzierl@23: * getan.py: The 'getan' controller that is also used to start the ingo_weinzierl@23: application. ingo_weinzierl@23: ingo_weinzierl@23: * classic/getan: Moved the 'old' getan to this folder - there is a new ingo_weinzierl@23: implementation based on python urwid library. ingo_weinzierl@23: ingo_weinzierl@23: * getan/__init__.py, ingo_weinzierl@23: getan/backend.py, ingo_weinzierl@23: getan/config.py, ingo_weinzierl@23: getan/project.py, ingo_weinzierl@23: getan/states.py, ingo_weinzierl@23: getan/utils.py, ingo_weinzierl@23: getan/view.py: Model, backend, view and config modules used by getan. ingo_weinzierl@23: ingo_weinzierl@23: * README: Added urwid >= 0.9.9.1 as further dependendy of getan and a hint ingo_weinzierl@23: of the classic version of 'getan' based on curses. ingo_weinzierl@23: ingo_weinzierl@23: * TODO: Idea of implementing a 'Help-Widget' to display all available keys. ingo_weinzierl@23: ingo_weinzierl@23: * INTRODUCTION: An overview about possible keys in the user interface. ingo_weinzierl@23: thomas@22: 2009-08-18 Thomas Arendsen Hein thomas@22: thomas@22: * contrib/zeiterfassung: left justify user sign in zeiterfassung thomas@22: thomas@22: * getan: human_seconds: Use timespec instead of seconds and document it. thomas@22: thomas@22: * getan: allow adding/subtracting times while a project is running thomas@22: thomas@22: * getan: rename substract to subtract (substract might be correct, too, thomas@22: but outdated) thomas@22: thomas@22: * getan: Allow + and - (RPN) to change time for the thomas@22: current project thomas@22: thomas@22: * getan: Handle empty input when adding/subtracting time of the running thomas@22: project thomas@22: teichmann@15: 2008-09-09 Sascha L. Teichmann teichmann@15: teichmann@15: * contrib/zeitsort: New. Sorts a zeiterfassung.txt file by teichmann@15: the dates in the lines. Useful to merge larger chunks teichmann@15: by simply append them and sort the result afterwards. teichmann@15: teichmann@14: 2008-08-12 Sascha L. Teichmann teichmann@14: teichmann@14: * getan: When assiging a name to an anonym task remove and teichmann@14: re-insert it into the project tree to make it selectable. teichmann@14: teichmann@13: 2008-08-12 Sascha L. Teichmann teichmann@13: teichmann@13: * contrib/zeiterfassung: Applied Stephan Holl's week-option.patch which teichmann@13: adds the possibility to give an optional week of year. teichmann@13: teichmann@12: 2008-08-11 Sascha L. Teichmann teichmann@12: teichmann@12: * getan: !!! Work in progress !!! Project Trees teichmann@12: The classic worklog only has one key to address a project. teichmann@12: This is major short comming. The getan database allows teichmann@12: to store projects keys with more than one character. teichmann@12: This feature will be exploited to build trees of projects. teichmann@12: teichmann@12: Lets say you have two main tasks foo and bar with two sub teichmann@12: tasks each you can name them f1, f2 and b1, b2. getan teichmann@12: stores these four tasks in a tree with top level f and b teichmann@12: and tow second level branches 1 and 2. To choose a task you teichmann@12: have to press f or b followed by 1 or 2. teichmann@12: teichmann@12: At the moment only selection works. teichmann@12: teichmann@12: TODO and next steps: teichmann@12: - Remove all old linear data structures. teichmann@12: - adjust rendering to only show active branches. teichmann@12: - sort anonymous task after naming into project tree. teichmann@12: teichmann@11: 2008-08-04 Sascha L. Teichmann teichmann@11: teichmann@11: * contrib/zeiterfassung: Applied a variation of Stephan Holl's teichmann@11: zeiterfassung.non-utf8-chars-in-db.patch to force the encoding teichmann@11: given by --encoding=. teichmann@11: teichmann@10: 2008-08-03 Sascha L. Teichmann teichmann@10: teichmann@10: * contrib/zeiterfassung: Added parameter -e | --encoding=. teichmann@10: This enables e.g. the output as latin1 with --encoding=latin1. teichmann@10: teichmann@9: 2008-08-03 Sascha L. Teichmann teichmann@9: teichmann@9: * contrib/zeiterfassung: Applied and completed Stephan Holl's teichmann@9: zeiterfassung.bessere-lesbarkeit.patch, fixed small issue with teichmann@9: --project= parameter. teichmann@9: teichmann@8: 2008-08-01 Sascha L. Teichmann teichmann@8: teichmann@8: * contrib/zeiterfassung: New. generates lines for zeiterfassung.txt. teichmann@8: usage: ./contrib/zeiterfassung teichmann@8: with teichmann@8: [--user=|-u ] : Name of user, default: $USER teichmann@8: [--database=|-d ]: getan database, default: time.db teichmann@8: [--project|-p] : Key of output project, default: all teichmann@8: [--list|-l] : list all projects teichmann@8: [--help|-h] : This text teichmann@8: teichmann@7: 2008-07-31 Sascha L. Teichmann teichmann@7: teichmann@7: * getan: Feature wish 8: F1 is like -1, F2 is like -2 teichmann@7: to F10 is like -0. teichmann@7: teichmann@6: 2008-07-31 Sascha L. Teichmann teichmann@6: teichmann@6: * getan: Feature wish 4: in +/- time defaults to minutes. teichmann@6: Strings like '1d:4h:3m', or '2m:4s' and so on are valid teichmann@6: times now. Feature wish 10: When adding time to project teichmann@6: is now possible to enter an optional description. teichmann@6: teichmann@5: 2008-07-31 Sascha L. Teichmann teichmann@5: teichmann@5: * contrib/wochenbericht: Applied patch from Stephan Holl to show teichmann@5: usage on '-h' of '--help'. Added check for existence of db file. teichmann@5: teichmann@4: 2008-07-31 Sascha L. Teichmann teichmann@4: teichmann@4: * contrib/wochenbericht: New. Little script to summarize the teichmann@4: entries for a given week number of year. teichmann@4: teichmann@3: 2008-07-30 Sascha L. Teichmann teichmann@3: teichmann@3: * getan: Added total sum of all projects. teichmann@3: teichmann@3: * README: Added hint to tac your old worklog config file to keep teichmann@3: reversed order. teichmann@3: teichmann@2: 2008-07-30 Sascha L. Teichmann teichmann@2: teichmann@2: * getan: Added +/- time to tasks. If in pause mode press + or - teichmann@2: to add or subtract time from a task in form of . teichmann@2: key is the effected task seconds is the among of time. seconds teichmann@2: can be postfixed by 's' for seconds, 'm' for minutes, 'h' for teichmann@2: hours and 'd' for days. teichmann@2: teichmann@1: 2008-07-29 Sascha L. Teichmann teichmann@1: teichmann@1: * getan: To exit getan you now can use double BACKSPACE, too. teichmann@1: teichmann@1: * README: Fixed typo, added hint to Sascha Wilde's projects converter. teichmann@1: teichmann@1: * contrib/convert-projects: Added Sascha Wilde's converter to import existing teichmann@1: worklog configuration files. teichmann@1: teichmann@0: 2008-07-28 Sascha L. Teichmann teichmann@0: teichmann@0: * ChangeLog, LICENSE, README, TODO, getan, schema.sql: Initial import