用于跟踪项目上员工时间的多用户应用程序。

django-timepiece的Python项目详细描述


django计时器是一个多用户应用程序,用于跟踪人们的时间 项目。文档可在Read The Docs上找到。

master:Build Status
develop:Build Status

功能

  • A simple CRM with projects and businesses
  • User dashboards with budgeted hours based on project contracts
  • Time sheets with daily, weekly, and monthly summaries
  • Verified, approved, and invoiced time sheet workflows
  • Monthly payroll reporting with overtime, paid leave, and vacation summaries
  • Project invoicing with hourly summaries

要求

Django计时器与Django 1.8(在Python2.7和Python3.5上)兼容,并且 Django 1.9(在Python2.7和Python3.5上)。PostgreSQL是唯一 官方支持的后端。有关所需库的完整列表,请参见 来自GitHub上项目源的requirements/base.txt

我们积极支持Chrome和Firefox的桌面版本,以及 移动平台。我们不支持大多数版本的Internet Explorer。我们 欢迎请求修复不支持的浏览器上的错误。

文档

文档托管在Read The Docs

要在本地生成文档:

  1. 下载django计时器的副本 使用git clone或从GitHub下载zipfile。

  2. 确保顶层目录位于python路径上。如果你是 使用虚拟环境,这可以通过以下途径实现:

    cd /path/to/django-timepiece/ && add2virtualenv .
    
  3. 从项目中安装requirements/docs.txt中的需求 来源于GitHub

  4. docs/目录中运行make html。HTML文件将是 输出到docs/\u build/html/目录。

安装

  1. django计时器在PyPI上提供,因此最简单的方法是 安装它,它的依赖项是使用pip

    $ pip install django-timepiece
    
  2. 确保less已安装在您的计算机上,并且版本为<;=1.4.0:

    # Install node.js and npm:
    $ sudo apt-get install python-software-properties
    $ sudo add-apt-repository ppa:chris-lea/node.js
    $ sudo apt-get update
    $ sudo apt-get install nodejs npm
    
    # Use npm to install less from package.json:
    $ npm install
    
  3. 如果从包含的示例项目开始,请复制该示例 本地设置文件位于 示例\u project/settings/local.py

    如果您使用的是现有项目,您需要做以下操作 更改您的设置:

    • 计时器及其依赖项添加到INSTALLED_APPS

      INSTALLED_APPS = (
          ...
          'bootstrap_toolkit',
          'compressor',
          'selectable',
      
          # Must come last.
          'timepiece',
          'timepiece.contracts',
          'timepiece.crm',
          'timepiece.entries',
          'timepiece.reports',
      )
      
    • 配置中间件:

      MIDDLEWARE_CLASSES = (
          'django.middleware.common.CommonMiddleware',
          'django.contrib.sessions.middleware.SessionMiddleware',
          'django.middleware.csrf.CsrfViewMiddleware',
          'django.contrib.auth.middleware.AuthenticationMiddleware',
          'django.contrib.messages.middleware.MessageMiddleware',
      )
      
    • 添加django.core.context_processors.request和django计时器上下文 处理器到TEMPLATE_CONTEXT_PROCESSORS

      TEMPLATE_CONTEXT_PROCESSORS = (
          "django.contrib.auth.context_processors.auth",
          "django.core.context_processors.debug",
          "django.core.context_processors.i18n",
          "django.core.context_processors.media",
          "django.contrib.messages.context_processors.messages",
          "django.core.context_processors.request",           # <----
          "timepiece.context_processors.quick_clock_in",      # <----
          "timepiece.context_processors.quick_search",        # <----
          "timepiece.context_processors.extra_settings",      # <----
      )
      
    • 配置压缩机设置:

      COMPRESS_PRECOMPILERS = (
          ('text/less', 'lessc {infile} {outfile}'),
      )
      COMPRESS_ROOT = '%s/static/' % PROJECT_PATH
      INTERNAL_IPS = ('127.0.0.1',)
      
    • USE_TZ设置为False。Django计时器当前不支持 时区。

  4. 运行syncdbmigrate

  5. 为django计时器添加url,并可选择urls.py,例如:

    urlpatterns = [
        ...
        (r'^selectable/', include('selectable.urls')),
        (r'', include('timepiece.urls')),
        ...
    ]
    
  6. django.contrib.authurl添加到urls.py,例如:

    urlpatterns = [
        ...
        url(r'^accounts/login/$', 'django.contrib.auth.views.login',
            name='auth_login'),
        url(r'^accounts/logout/$', 'django.contrib.auth.views.logout_then_login',
            name='auth_logout'),
        url(r'^accounts/password-change/$',
            'django.contrib.auth.views.password_change',
            name='change_password'),
        url(r'^accounts/password-change/done/$',
            'django.contrib.auth.views.password_change_done'),
        url(r'^accounts/password-reset/$',
            'django.contrib.auth.views.password_reset',
            name='reset_password'),
        url(r'^accounts/password-reset/done/$',
            'django.contrib.auth.views.password_reset_done'),
        url(r'^accounts/reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
            'django.contrib.auth.views.password_reset_confirm'),
        url(r'^accounts/reset/done/$',
            'django.contrib.auth.views.password_reset_complete'),
        ...
    ]
    
  7. 创建注册模板。例如,请参见注册模板 在“项目/模板/注册”示例中。确保您的项目 模板目录被添加到TEMPLATE_DIRS

    TEMPLATE_DIRS = (
        ...
        '%s/templates' % PROJECT_PATH,
        ...
    )
    

Caktus Group赞助的开发。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Midlet即使按下设备的“剪切”按钮也不能关闭   JavaSpring环境。getProperty未解析   用Hibernate在Java中实现序列   具有重复键和文件写入的java映射   java显示控制台输出到JavaFXML应用程序中的TextArea   java Cucumber在编译为时无法在类路径上找到功能文件。战争   java过滤器中的servlet问题   安卓中消息和字符串之间的java转换?   java Apache POI读取单元(下午12:35:00)时间值返回1899年12月31日   Java游戏中的碰撞检测?   JSF2.0中的JavajQuery   java在setValue之后使用不同的值   java如何修复可选文件的StackOverflow错误?   如何在不使用服务器设置的情况下使用java从Outlook mail下载附件?   YAxis上Java BoxLayout中单个字符的摆动对齐偏离中心