一个多用户应用程序,用于跟踪员工在项目上的时间。
项目描述
django-timepiece是一个多用户应用程序,用于跟踪人员在项目上的时间。文档可在Read The Docs上找到。
功能
一个简单的CRM,具有项目和业务
基于项目合同的预算小时数用户仪表板
带每日、每周和每月总结的时间表
已验证、批准和开具发票的时间表工作流程
带加班费、带薪休假和假期总结的月度工资报告
带小时总结的项目发票
要求
django-timepiece 与 Django 1.8(在 Python 2.7 和 Python 3.5 上)以及 Django 1.9(在 Python 2.7 和 Python 3.5 上)兼容。PostgreSQL 是唯一官方支持的数据库后端。有关所需库的完整列表,请参阅项目源代码中的 requirements/base.txt,可在 GitHub 上找到。
我们积极支持桌面版本的 Chrome 和 Firefox,以及常见的移动平台。我们不支持大多数版本的 Internet Explorer。我们欢迎修复不支持浏览器中错误的 pull requests。
文档
文档托管在 Read The Docs 上。
在本地构建文档
安装
django-timepiece 可在 PyPI 上找到,因此安装它及其依赖项的最简单方法是使用 pip。
$ pip install django-timepiece
确保您的机器上已安装 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
如果您是从包含的示例项目开始的,请将位于 example_project/settings/local.py.example 的示例本地设置文件复制到 example_project/settings/local.py。
如果您正在使用现有项目,您需要对设置进行以下更改:
将 timepiece 及其依赖项添加到 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-timepiece 上下文处理器添加到 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-timepiece 目前不支持时区。
运行 syncdb 和 migrate。
将 django-timepiece 和 selectable 的 URL 添加到 urls.py,例如:
urlpatterns = [ ... (r'^selectable/', include('selectable.urls')), (r'', include('timepiece.urls')), ... ]
将 django.contrib.auth 的 URL 添加到 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'), ... ]
创建注册模板。例如,请参阅 example_project/templates/registration 中的注册模板。确保将您项目的模板目录添加到 TEMPLATE_DIRS。
TEMPLATE_DIRS = ( ... '%s/templates' % PROJECT_PATH, ... )
由 Caktus Group 赞助开发。