|
3 | 3 | import sys |
4 | 4 | from collections import OrderedDict |
5 | 5 |
|
6 | | -import click |
7 | 6 | from requests.exceptions import HTTPError |
8 | 7 |
|
| 8 | +import click |
| 9 | +from redmine.activity import Activity |
9 | 10 | from redmine.cli.alias import AliasedGroup |
10 | 11 | from redmine.cli.config import Config, pass_config |
11 | 12 | from redmine.cli.helpers import get_description, get_note |
@@ -297,6 +298,22 @@ def priority(redmine): |
297 | 298 | click.echo(Priority(**priority)) |
298 | 299 |
|
299 | 300 |
|
| 301 | +@list.command() |
| 302 | +@click.pass_obj |
| 303 | +def activity(redmine): |
| 304 | + """ List time tracking activities """ |
| 305 | + |
| 306 | + try: |
| 307 | + activities = sorted( |
| 308 | + redmine.get("enumerations/time_entry_activities"), key=lambda x: x["id"] |
| 309 | + ) |
| 310 | + except HTTPError as e: |
| 311 | + return click.echo(click.style(f"Fatal: {e}", fg="red")) |
| 312 | + |
| 313 | + for activity in activities: |
| 314 | + click.echo(Activity(**activity)) |
| 315 | + |
| 316 | + |
300 | 317 | @list.command() |
301 | 318 | @click.pass_obj |
302 | 319 | def user(redmine): |
@@ -406,3 +423,21 @@ def times(redmine, **kwargs): |
406 | 423 |
|
407 | 424 | for entry in entries: |
408 | 425 | click.echo(Time(**entry)) |
| 426 | + |
| 427 | + |
| 428 | +@cli.command() |
| 429 | +@click.argument("issue_id") |
| 430 | +@click.argument("hours") |
| 431 | +@click.option(OPTIONS["on"]["long"], default=None) |
| 432 | +@click.option(OPTIONS["activity"]["long"], OPTIONS["activity"]["short"], default=None) |
| 433 | +@click.option(OPTIONS["comment"]["long"], OPTIONS["comment"]["short"], default=None) |
| 434 | +@click.pass_obj |
| 435 | +def spent(redmine, issue_id, hours, **kwargs): |
| 436 | + """ Create new time entry """ |
| 437 | + |
| 438 | + try: |
| 439 | + redmine.create_time_entry(issue_id, hours, **kwargs) |
| 440 | + except HTTPError as e: |
| 441 | + return click.echo(click.style(f"Fatal: {e}", fg="red")) |
| 442 | + |
| 443 | + click.echo(click.style("Time logged", fg="green"), err=True) |
0 commit comments