Coder Social home page Coder Social logo

sephii / taxi Goto Github PK

View Code? Open in Web Editor NEW
41.0 6.0 15.0 1.16 MB

Taxi is a CLI to time tracking backends

Home Page: https://taxi-timesheets.readthedocs.io/

License: Do What The F*ck You Want To Public License

Python 97.29% Shell 0.22% Nix 2.49%
cli timesheet

taxi's People

Contributors

gnutix avatar jeanmonod avatar jocelynthode avatar krtek4 avatar odyx avatar sephii avatar simonbru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

taxi's Issues

Comments are pushed to zebra at commit

If I enter the following line to my timesheets:

xy_17     09:15-11:00        Meeting with M. Tee  # So stupid guy...

Currently the comment is pushed, should not be the case...

Branching model standardisation

Following #51 I suggest that you change your branching model to something more standard. And that master became to be the stable branch. Imo people are used to consider master as the stable branch. What do you think about that?

taxi alias throws an exception

I did a "taxi update" but I still get this exception:
sebastien:~/www/teachcycle|enroll $ taxi alias jlc_ecom_europe_sprint1 1484/278
Traceback (most recent call last):
File "/usr/local/bin/taxi", line 4, in
app.main()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 148, in main
app.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 136, in run
action.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/commands.py", line 198, in run
self._add_alias(self.alias, self.mapping)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/commands.py", line 221, in _add_alias
project = projects_db.get(project_activity[0])
NameError: global name 'projects_db' is not defined

Automatically select option upon taxi add when there is only one

In order to ease the process of adding a new alias, Taxi should automatically select the first option if it is the only one upon pressing 'enter'.

Actual behavior :

   Choose the project (0-0), (Ctrl-C) to exit: 
   Please enter a number

   Choose the project (0-0), (Ctrl-C) to exit: 0

In this case, Taxi could simply select the entry 0 which is the only one.

Add support for using a different editor

Hi Sylvain,
it would be great to be able to specify , ideally in the config or ~/.tksrc file, a different editor for the "taxi edit" command.
The fact is that while I use "nano" in the terminal but my favourite editor is Sublime text.
Does it sound like a resonable request to you?

Add an easy way to edit previous month file

Imagine we are the first of the month. Your file is empty and you don’t remember alias of projects you were working on or you just want to verify previous day hours. It’s not really easy to do.

Could we implement something like taxi edit -1 or taxi edit {month-number} ?

taxi edit fails if duration is badly set

Using a malformed duration (eg. 1000-1061) causes taxi to crash with the following output:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/usr/local/lib/python2.7/dist-packages/taxi/app.py", line 148, in main
    app.run()
  File "/usr/local/lib/python2.7/dist-packages/taxi/app.py", line 136, in run
    action.run()
  File "/usr/local/lib/python2.7/dist-packages/taxi/commands.py", line 386, in run
    t = self.get_timesheet()
  File "/usr/local/lib/python2.7/dist-packages/taxi/commands.py", line 45, in get_timesheet
    p = PlainTextParser(PlainFileIo(self.options.file))
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/plaintext.py", line 12, in __init__
    super(PlainTextParser, self).__init__(file)
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/__init__.py", line 10, in __init__
    self.parse()
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/__init__.py", line 17, in parse
    self.parsed_lines.append(self.parse_line())
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/plaintext.py", line 31, in parse_line
    return self._parse_entry_line(line)
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/plaintext.py", line 40, in _parse_entry_line
    time = self._process_time(split_line[1])
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/plaintext.py", line 49, in _process_time
    return self.parse_time(str_time)
  File "/usr/local/lib/python2.7/dist-packages/taxi/parser/parsers/plaintext.py", line 96, in parse_time
    time_end = datetime.time(int(time.group(3)), int(time.group(4)))
ValueError: minute must be in 0..59

Also this makes the edit command unusable.

Taxi add display several time the same activities

[dj]/Users/dj/Sites/taxi|master %>taxi add inter
(0)    7 Internal stuff
(1)  781 ...
(2)  782 ...

Choose the project (0-2), (Ctrl-C) to exit: 0
Id: 7

Activities:
(0)   17 Infrastruktur (mapped to _infra)
(1)  520 Buddy work (mapped to _buddy)
(2)  632 Coaching new employee (mapped to _coaching)
(3)  649 job interview (mapped to _interview)
(4)   16 Nicht zuzuordnen (mapped to _internal)
(5)  520 Buddy work (mapped to _buddy)
...
(46)  520 Buddy work (mapped to _buddy)
(47)  632 Coaching new employee (mapped to _coaching)
(48)  649 job interview (mapped to _interview)

Choose the activity (0-48), (Ctrl-C) to exit:

No error message during install

Hello,

I wanted to install the latest taxi yesterday (I'm on Mac OS X 10.9.2).
I launched the pip command.
The install was short and just output that:

Downloading/unpacking git+git://github.com/sephii/taxi.git
  Cloning git://github.com/sephii/taxi.git to /tmp/pip-6t81mc-build
  Running setup.py egg_info for package from git+git://github.com/sephii/taxi.git

Cleaning up...

I was still on taxi 3.0.2 after that.
I tried cloning the repo and then run the python command and apparently there was some issues with my python setuptools. I had to upgrade them. After that it worked.

It was just weird that the error I got with the python command was not shown with the pip install.

So it's maybe something that can be added.

Works great now tho =)

Thanks.
Claude

Separate taxi from Zebra and allow to have multiple backends

If we completely separate taxi from the zebra backend, this will have major benefits:

  • It will make taxi a real opensource project, useful outside Liip
  • Taxi will be able to push entries to public backend such as Harvest, 10000ft or even a basic spreadsheet. This should boost the community support
  • Personably I will be able to timesheet my personal project with my favorite timesheet tool... ;)

So in my idea, each aliases could be bound to a specific backend, and then when I do a taxi ci, the entries will be pushed to appropriate location.

What do you think about that? This goes in the same spirit as #24, #29 but one step ahead...

EDITOR containing a space triggers exception

in .tksrc:
editor = '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl -n -w'

then in zsh:
taxi edit
Result:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 148, in main
    app.run()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 136, in run
    action.run()
  File "/Library/Python/2.7/site-packages/taxi/commands.py", line 408, in run
    file.spawn_editor(self.options.file, editor)
  File "/Library/Python/2.7/site-packages/taxi/utils/file.py", line 29, in spawn_editor
    subprocess.call(editor)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 486, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 672, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1202, in _execute_child
    raise child_exception

We also tried in tksrc with a backslash /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl -n -w but it still breaks.

In Pdb session, args shows args = ['/Applications/Sublime', 'Text.app/Contents/SharedSupport/bin/subl', '-n', '-w', '/Users/sebastien/zebra/2013/07.tks']

AttributeError: 'TimesheetEntry' object has no attribute 'project_id'

On the current matser, I got this issue at commit:

[dj]/Users/dj/Sites/taxi|master>taxi ci --ignore-date-error
Pushing entries...

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 3, in <module>
    app.main()
  File "/Users/dj/Sites/taxi/taxi/app.py", line 178, in main
    app.run()
  File "/Users/dj/Sites/taxi/taxi/app.py", line 61, in run
    self.run_command(args[0], options.__dict__, command_args)
  File "/Users/dj/Sites/taxi/taxi/app.py", line 165, in run_command
    action.run()
  File "/Users/dj/Sites/taxi/taxi/commands.py", line 386, in run
    self._entry_pushed)
  File "/Users/dj/Sites/taxi/taxi/remote.py", line 102, in send_entries
    'project_id':   entry.project_id,
AttributeError: 'TimesheetEntry' object has no attribute 'project_id'

"taxi show" on an unknown project outputs an exception

sebastien:~/www/teachcycle|enroll $ taxi show 1484
Traceback (most recent call last):
File "/usr/local/bin/taxi", line 4, in
app.main()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 148, in main
app.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 136, in run
action.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/commands.py", line 487, in run
raise Exception("Error: the project doesn't exist")
Exception: Error: the project doesn't exist

Invalid aliases should not break the application

Currently when I enter an invalid alias, the application goes in exception mode. Like:

[dj]/Users/dj/Sites/taxi|master>taxi status
Error: The alias `_ssm2` is not mapped in your configuration file.
Did you mean one of the following?

    _ssm
    ssm_zh
    _sodes

But sometimes (depending of the PO) aliases are not available directly and it's then useful to be able to use them in advanced. I suggest not to break the flow but just ignoring the impacted entries. Example:

[dj]/Users/dj/Sites/taxi|master>taxi status
Staging changes :

# Vendredi 19 septembre #
_ssm (1868/693)                1.00  Meeting
_ssm2 (ignored)                 1.00  Meeting of the new project
    Invalid alias `_ssm2`. Did you mean one of the following:  (_ssm, ssm_zh, _sodes)?
_ssm (1868/693)                0.50  Call
                               2.50

Total                          2.50

I wanted to start coding this, but as i seems you are in a refactoring session, maybe it's better to not start it yet... Feedback welcome

Common aliases for everybody

Could be great if we update zebra to be able to define taxi alias directly on the projects. Then aliases will fetch at taxi update.

Then those aliases should be overridable by any user as always by running a taxi add...

What about this? Could we push it forward?

Strange bug on taxi commit

Here is the output:

pia_ext (2077/1009)            4.25  Automatic dynamisation of the links
pia_ext (2077/1009)            0.75  Deployment to quality, preprod and prod
Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 3, in <module>
    app.main()
  File "/Users/dj/Sites/taxi/taxi/app.py", line 175, in main
    app.run()
  File "/Users/dj/Sites/taxi/taxi/app.py", line 61, in run
    self.run_command(args[0], options.__dict__, command_args)
  File "/Users/dj/Sites/taxi/taxi/app.py", line 162, in run_command
    action.run()
  File "/Users/dj/Sites/taxi/taxi/commands.py", line 423, in run
    ignored_entries_list)
  File "/Users/dj/Sites/taxi/taxi/ui/__init__.py", line 235, in pushed_entries_summary
    self.pushed_entries_total(pushed_entries)
  File "/Users/dj/Sites/taxi/taxi/ui/__init__.py", line 186, in pushed_entries_total
    self.display_entries_list(pushed_entries, 'Total pushed', False)
  File "/Users/dj/Sites/taxi/taxi/ui/__init__.py", line 173, in display_entries_list
    reason = entry[1]
AttributeError: AggregatedEntry instance has no attribute '__getitem__'

Parsing of -? is not working

In taxi, it's possible to do:

alias   09:00-?   first task

But not

alias     09:00-09:15 Daily
alias2    -?  second task

This generate the following error

Error: Parse error at line 29: The duration must be a float number or a HH:mm string

Taxi file containing ignored lines

Consider the following file :

alias? 1000-1100
other   -1200
alias?  -1300

If I commit this a first time, only the other line will be commited. Then the third line will use the end time of the first time as its start time, leading to a wrong timesheeting.

Personal activities

I wish to have personal alias such as _lunch or _pingpong that are not pushed to zebra

Taxi should warn about inexistent aliases

When using an inexistent alias, taxi says it's mapped to "(None/None)" although it should report an error:

Also when committing, all the lines get committed, except for the one having the error, and then taxi crashes with an error "the alias is not mapped" which causes the entries to be partially committed and not commented in the entries file.

Replace taxi start/stop by only taxi stop

As discussed, I have the feeling that a single "taxi stop" command (without requiring the use of an earlier taxi start), could be useful:

  • When you arrive in the morning:
taxi enginestart (adds a time for the arrival)
  • After each completed task:
taxi pitstop activity_code "activity description"

What do you think?

taxi clean-aliases broken when DB not up-to-date

sebastien:/usr/local/bin|master $ taxi clean-aliases
Traceback (most recent call last):
File "/usr/local/bin/taxi", line 4, in
app.main()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 148, in main
app.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 136, in run
action.run()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/commands.py", line 316, in run
if (project is None or not project.is_active() or
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/models.py", line 135, in is_active
(self.start_date is None or
AttributeError: Project instance has no attribute 'start_date'

sebastien:/usr/local/bin|master $ taxi update
Updating database, this may take some time...
Projects database updated successfully.
sebastien:/usr/local/bin|master $ taxi clean-aliases
The following aliases are mapped to inactive projects:
...
Do you want to clean them [y/N]? N

Accentuated characters not supported in description

I get the following error when "Noé" appears one of the entry:

Staging changes :

# Wednesday 22 january #
jlc_dotcom_sup_co (1415/154)   0.25  daily
Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 149, in main
    app.run()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 137, in run
    action.run()
  File "/Library/Python/2.7/site-packages/taxi/commands.py", line 554, in run
    self.view.show_status(t.get_entries(self.date))
  File "/Library/Python/2.7/site-packages/taxi/ui/__init__.py", line 201, in show_status
    self.msg(unicode(entry))
  File "/Library/Python/2.7/site-packages/taxi/ui/__init__.py", line 24, in msg
    print(message.encode(self._get_encoding()))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 96: ordinal not in range(128)

If I removed the accent in the following line, it just works:
jlc_dotcom_sup_dev 1.25 JLC-1306 investigated with Noé

Color support break the utf8 support...

Traceback (most recent call last):
File "/usr/local/bin/taxi", line 3, in
app.main()
File "/Users/dj/Sites/taxi/taxi/app.py", line 175, in main
app.run()
File "/Users/dj/Sites/taxi/taxi/app.py", line 61, in run
self.run_command(args[0], options.dict, command_args)
File "/Users/dj/Sites/taxi/taxi/app.py", line 162, in run_command
action.run()
File "/Users/dj/Sites/taxi/taxi/commands.py", line 476, in run
self.view.show_status(t.get_entries(regroup=True))
File "/Users/dj/Sites/taxi/taxi/ui/init.py", line 216, in show_status
date_utils.unicode_strftime(date, '%A %d %B').capitalize())
File "/Users/dj/Sites/taxi/taxi/ui/init.py", line 31, in msg
self.stdout.write(u"%s%s\n" % (color, message.encode(self._get_encoding())))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)

Open a Wiki page to put the problems that we encounter when install taxi.

For instance when you install Taxi on MacOSX, you get:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 148, in main
    app.run()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 136, in run
    action.run()
  File "/Library/Python/2.7/site-packages/taxi/commands.py", line 400, in run
    t.add_date(datetime.date.today(), is_top_down)
  File "/Library/Python/2.7/site-packages/taxi/models.py", line 395, in add_date
    self.parser.parsed_lines.insert(index, DateLine(date, date_format=self.date_format))
  File "/Library/Python/2.7/site-packages/taxi/parser/__init__.py", line 66, in __init__
    self.text = date_utils.unicode_strftime(self.date, date_format)
  File "/Library/Python/2.7/site-packages/taxi/utils/date.py", line 17, in unicode_strftime
    locale_encoding = locale.getlocale()[1]
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 530, in getlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 443, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

To solve this you have to add these lines below to your ~/.bash_profile

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Thanks

'ascii' codec can't decode byte 0xc3 in position 84: ordinal not in range(128)

Some people (only OS X people at the moment) got the following exception when trying to commit a file with accented entries:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 557, in main
    call_action(actions, options, args)
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 467, in call_action
    action[1](options=options, args=args)
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 305, in commit
    pusher.push(parser.get_entries(date=options.date))
  File "/Library/Python/2.7/site-packages/taxi/pusher.py", line 9, in push
    self.remote.send_entries(entries)
  File "/Library/Python/2.7/site-packages/taxi/remote.py", line 127, in send_entries
    (entry, error))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 84: ordinal not in range(128)

export:

declare -x COMMAND_MODE="unix2003"
declare -x EDITOR="nano"
declare -x HOME="/Users/patrickwicky"
declare -x LANG="de_CH.UTF-8"
declare -x LOGNAME="patrickwicky"
declare -x OLDPWD="/Users/patrickwicky"
declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin"
declare -x PWD="/Users/patrickwicky/zebra"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_AUTH_SOCK="/tmp/launch-ku1YF1/Listeners"
declare -x TERM="xterm-256color"
declare -x TERM_PROGRAM="Apple_Terminal"
declare -x TERM_PROGRAM_VERSION="309"
declare -x TERM_SESSION_ID="11EA53C1-8583-456F-A7EB-8539FE717A91"
declare -x TMPDIR="/var/folders/59/dzp67gpd2g5bt6vmg6_rtk400000gn/T/"
declare -x USER="patrickwicky"
declare -x __CF_USER_TEXT_ENCODING="0x1F5:0:3"

Problem with creating new taxi file

EHLO

I just encountered a problem with Taxi 3.0-beta2 when i try to create a new file (this bug was also in the former version but i upgraded to seeif there's a bugfix for that)

~/tks > taxi --version
taxi 3.0-beta2

I get following errors

~/tks > taxi edit --verbose
Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 148, in main
    app.run()
  File "/Library/Python/2.7/site-packages/taxi/app.py", line 136, in run
    action.run()
  File "/Library/Python/2.7/site-packages/taxi/commands.py", line 401, in run
    t.save()
  File "/Library/Python/2.7/site-packages/taxi/models.py", line 399, in save
    self.parser.save()
  File "/Library/Python/2.7/site-packages/taxi/parser/parsers/__init__.py", line 35, in save
    self.io.write(lines)
  File "/Library/Python/2.7/site-packages/taxi/parser/io.py", line 24, in write
    f.write('%s\n' % line)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py", line 691, in write
    return self.writer.write(data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py", line 351, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 10: ordinal not in range(128)
~/tks > 

/bastian

Grouped issues are rewritten with extra informations

When I have multiple entries with the same description, they get rewritten differently. Here’s the text before commit:

alias                -12:15 Bla bla
alias                -13:45 Bla bla

Then, white spaces (sorry I like aligning things) are removed and start time is added:

# alias 11:30-12:15 Bla bla
# alias 13:15-13:45 Bla bla

I agree it’s a non-blocking issue but it makes my file unreadable. We should do it for all entries or none, but not only grouped entries.

Can’t edit tasks if .tks file is unreadable

If your timesheet file can’t be parsed, you can’t edit it. Here’s the error returned:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 175, in main
    app.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 61, in run
    self.run_command(args[0], options.__dict__, command_args)
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 162, in run_command
    action.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/commands.py", line 458, in run
    t.add_date(datetime.date.today(), is_top_down)
UnboundLocalError: local variable 't' referenced before assignment

ValueError: unknown locale: UTF-8 on taxi autofill

I'm getting this traceback when trying to use autofill:

[mikl:~] % taxi autofill
Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 149, in main
    app.run()
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/app.py", line 137, in run
    action.run()
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/commands.py", line 279, in run
    t.prefill(auto_fill_days, last_date, add_to_bottom)
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/models.py", line 381, in prefill
    self.add_date(cur_date, add_to_bottom)
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/models.py", line 396, in add_date
    self.parser.parsed_lines.insert(index, DateLine(date, date_format=self.date_format))
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/parser/__init__.py", line 69, in __init__
    self.text = date_utils.unicode_strftime(self.date, date_format)
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/taxi/utils/date.py", line 17, in unicode_strftime
    locale_encoding = locale.getlocale()[1]
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 530, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 443, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

My Python version:

Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin

Stacktrace when invalid username

C:\Users\mcornut>taxi update
Updating database, this may take some time...
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\taxi\app.py", line 149, in main
app.run()
File "C:\Python27\lib\site-packages\taxi\app.py", line 137, in run
action.run()
File "C:\Python27\lib\site-packages\taxi\commands.py", line 602, in run
projects = r.get_projects()
File "C:\Python27\lib\site-packages\taxi\remote.py", line 154, in get_projects
self._login()
File "C:\Python27\lib\site-packages\taxi\remote.py", line 82, in _login
response = self._request(login_url, parameters)
File "C:\Python27\lib\site-packages\taxi\remote.py", line 62, in _request
response = opener.open(request, timeout=self.DEFAULT_TIMEOUT)
File "C:\Python27\lib\urllib2.py", line 404, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 422, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1222, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "C:\Python27\lib\urllib2.py", line 1187, in do_open
r = h.getresponse(buffering=True)
File "C:\Python27\lib\httplib.py", line 1045, in getresponse
response.begin()
File "C:\Python27\lib\httplib.py", line 409, in begin
version, status, reason = self._read_status()
File "C:\Python27\lib\httplib.py", line 365, in _read_status
line = self.fp.readline(_MAXLINE + 1)
File "C:\Python27\lib\socket.py", line 476, in readline
data = self._sock.recv(self._rbufsize)
File "C:\Python27\lib\ssl.py", line 241, in recv
return self.read(buflen)
File "C:\Python27\lib\ssl.py", line 160, in read
return self._sslobj.read(len)
ssl.SSLError: The read operation timed out

Last end time as start time for new line

It would be awesome if the taxi start command would use the end time of the last entry as the start time of the new entry, if from the same day. Or maybe it could do that optionally... But since the end time is rounded to a quarter of an hour I almost always have to correct the start time to the same value in order to not book too much time because of overlaps.

ValueError: day is out of range for month

I have the latest version and today when I tried editing the file, I got the following error:

Traceback (most recent call last):
  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 178, in main
    app.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 61, in run
    self.run_command(args[0], options.__dict__, command_args)
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 165, in run_command
    action.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/commands.py", line 452, in run
    timesheet_collection = self.get_timesheet_collection()
  File "/usr/local/lib/python2.7/site-packages/taxi/commands.py", line 52, in get_timesheet_collection
    int(self.settings.get('nb_previous_files'))
  File "/usr/local/lib/python2.7/site-packages/taxi/commands.py", line 123, in get_files
    file_date = file_date.replace(month=file_date.month - 1)
ValueError: day is out of range for month

My last entry was on 30/07/2014 and everything was committed. I did something wrong?

Aggregated entries fail

If I save with multiple entries having the same alias & description, I get the following error:

  File "/usr/local/bin/taxi", line 4, in <module>
    app.main()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 178, in main
    app.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 61, in run
    self.run_command(args[0], options.__dict__, command_args)
  File "/usr/local/lib/python2.7/site-packages/taxi/app.py", line 165, in run_command
    action.run()
  File "/usr/local/lib/python2.7/site-packages/taxi/commands.py", line 490, in run
    self.view.show_status(t.get_entries(regroup=True))
  File "/usr/local/lib/python2.7/site-packages/taxi/ui/__init__.py", line 237, in show_status
    if not entry.is_local():
AttributeError: AggregatedEntry instance has no attribute 'is_local'

Group similar entries

Entries on the same date with the same description should be grouped in the status and commit commands

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.