跳转到主要内容

时间跟踪和报告器

项目描述

https://travis-ci.org/diefans/zeitig.svg?branch=master PyPI - Python Version PyPI

时间跟踪器。

基本思路是将所有情况变化存储为事件流,并从这些事件中创建报告。

用法

Usage: z [OPTIONS] [GROUP] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  add     Apply tags and notes.
  break   Change to or start the `break` situation.
  remove  Remove tags and flush notes.
  report  Create a report of your events.
  work    Change to or start the `work` situation.

示例会话

您可以在示例中添加时间戳,这将被解析为您的时区。您可以缩写命令,所以跟踪正在运行的项目的时间最短方式就是 z wz b

> export ZEITIG_STORE=/tmp/zeitig; mkdir $ZEITIG_STORE

> z foobar work -t foo "2018-04-01 08:00:00"

> z break "2018-04-01 12:00:00"

> z w "2018-04-01 13:00:00"

> z b "2018-04-01 17:30:00"

> z
Actual time: 2018-05-04 23:09:01

Actual group: foobar of foobar
Last situation in foobar: Break started at 2018-04-01 17:30:00 since 797.65 hours

Store used: /tmp/zeitig/olli
Last event: groups/foobar/source/2018-04-01T15:30:00+00:00

> z report
Working times for foobar until Friday 04 May 2018

Week: 13
        2018-04-01 08:00:00 - 12:00:00 - 4.00 - foo
        2018-04-01 13:00:00 - 17:30:00 - 4.50

Total hours: 8.50

内部

您可以在当前工作目录路径的某个位置创建一个 .zeitig 目录来使用它作为存储。其他默认值为 ~/.config/zeitig~/.local/share/zeitig

为每个用户创建一个单独的目录,其中包含组和事件源

.zeitig/
    |
    +- <user>
        |
        +- last ---+
        |          |
        +- groups  |
        |   |      v
        |   +- <group>
        |       |
        |       +- source
        |       |   |
        |       |   +- <event UTC timestamp>
        |       |
        |       +- templates
        |       |   |
        |       |   +- <jinja template>
        |       |
        |       +- template_defaults.toml
        |       |
        |       +- template_syntax.toml
        |
        +- templates
        |   |
        |   +- <jinja template>
        |
        +- template_defaults.toml
        |
        +- template_syntax.toml

事件以简单的 toml 文件存储。

报告

事件完全暴露给报告模板。您可以将某些过滤器聚合器管道化以修改事件流。

模板由 jinja2 渲染。您可以通过特殊的 template_syntax.toml 文件修改起始和结束标记。

一个示例latex模板可能看起来像这样

\documentclass{article}

\usepackage[a4paper, total={6in, 8in}]{geometry}

\usepackage{longtable,array,titling,booktabs}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}
\title{\vspace{-13em}Timesheet\vspace{0em}}
\author{\vspace{-10em}}
\date{\vspace{-5em}}

% sans serif font
\renewcommand{\familydefault}{\sfdefault}

\begin{document}
\maketitle
\thispagestyle{empty} % no page footer
\vspace{-5em}
\begin{longtable}{
    >{\raggedleft\arraybackslash}r
    >{\raggedright\arraybackslash}l}
    \textbf{Client}: & We do something special\\
    \textbf{Contractor}: & Oliver Berger\\
    \textbf{Project number}: & 12-345-6789-0\\
\end{longtable}

\begin{longtable}{
>{\raggedright\arraybackslash}l
>{\raggedright\arraybackslash}l
>{\raggedleft\arraybackslash}r
>{\raggedright\arraybackslash}l}
    Start & End & Hours & Description\\
\BLOCK{for event in events.pipeline(
    report.source,
    events.filter_no_breaks,
    events.Summary.aggregate,
    events.DatetimeChange.aggregate
    )-}
    \BLOCK{if py.isinstance(event, events.DatetimeChange) and event.is_new_week}
    \midrule
\BLOCK{endif-}
    \BLOCK{if py.isinstance(event, events.Work)}
    \VAR{event.local_start.to_datetime_string()} & \VAR{event.local_end.to_time_string()} & \VAR{'{0:.2f}'.format(event.period.total_hours())} & \BLOCK{if event.tags}\VAR{', '.join(event.tags)}\BLOCK{endif-}\\
\BLOCK{endif-}

    \BLOCK{if py.isinstance(event, events.Summary)}
    \midrule
    \multicolumn{2}{l}{\textbf{Total hours}} & \textbf{\VAR{'{0:.2f}'.format(event.works.total_hours())}} & \\
\BLOCK{endif-}
\BLOCK{-endfor-}
\end{longtable}
\vspace{5em}
\begin{longtable}{
>{\centering\arraybackslash}p{3.5cm}
l
>{\centering\arraybackslash}p{5.5cm}}
\cline{1-1}
\cline{3-3}
    Date & & Signature of client\\
\end{longtable}

\end{document}

Jinja语法

组jinja模板语法将合并到用户语法中

[jinja_env]

[jinja_env.latex]
# define a latex jinja env
block_start_string = "\\BLOCK{"
block_end_string = "}"
variable_start_string = "\\VAR{"
variable_end_string = "}"
comment_start_string = "\\#{"
comment_end_string = "}"
line_statement_prefix = "%%"
line_comment_prefix = "%#"
trim_blocks = true
autoescape = false

[templates]
# map a template name to a jinja env
latex_template = "latex"

Jinja默认值

您还可以为组定义模板默认值,这些值将合并到用户模板默认值中。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

zeitig-0.4.1.tar.gz (21.6 kB 查看哈希值)

上传时间

构建分布

zeitig-0.4.1-py3-none-any.whl (70.0 kB 查看哈希值)

上传时间 Python 3