一个用于Django驱动的网站的简单时间记录/时间卡应用。
项目描述
此应用将允许Django驱动网站的用户新追踪他们在不同项目上的时间。这是一个正在进行的工程。
特性
可配置性:Pendulum可以配置在多个Django驱动的网站上运行。周期长度可以配置为月度或固定长度周期。
项目:您可以有无限数量的项目,以便对在特定任务上花费的小时进行分类。每个项目可以通过Django管理员根据需要激活/停用。
活动:活动允许您进一步对每个项目中特定任务上完成的工作进行分类。
需求
django-pendulum需要一个现代版本的Django框架。通过现代我仅仅是指具有newforms-admin功能的版本。如果您运行的是Django 1.0或更高版本,那就没问题。
django-pendulum还依赖于django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,和django.contrib.sites框架。
安装
使用以下方法之一下载 django-pendulum
pip
使用 pip 安装 django-pendulum
pip install -U django-pendulum
easy_install
您可以从CheeseShop下载该包,或者使用
easy_install django-pendulum
下载并安装 django-pendulum。
包下载
从下载部分下载最新的 .tar.gz 文件,并将其提取到您记得的地方。使用 python setup.py install 来安装它。
从版本控制检出
使用官方仓库之一克隆 django-pendulum
hg clone http://bitbucket.org/codekoala/django-pendulum git clone http://github.com/codekoala/django-pendulum.git hg clone http://django-pendulum.googlecode.com/hg django-pendulum
验证安装
确保您已成功安装 Pendulum 的最简单方法是执行以下命令之一:
python -c "import pendulum; print pendulum.get_version()"
如果显示您尝试安装的 Pendulum 版本,您就可以继续操作了。如果您看到其他内容,您可能需要检查您的 PYTHONPATH 环境变量。
配置
首先,您必须将此项目添加到 settings.py 中的 INSTALLED_APPS 列表。
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', ... 'pendulum', ... )
运行 manage.py syncdb。这将为您创建一些数据库表,这些表对于操作是必需的。
接下来,您应该在主 urls.py 文件中添加一个条目。例如
from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/(.*)', admin.site.root), (r'^pendulum/', include('pendulum.urls')), )
接下来,您需要配置 Pendulum 以用于活动的 Django 网站。您可以通过进入 Django 管理员界面并点击“添加”链接旁边的“Pendulum 配置”链接来完成此操作。
配置的第一步是选择此特定配置将应用于哪个网站。如果您只有一个网站,这个决定很简单 :)
接下来,您必须选择您希望使用的“会计期间”类型。如果您想要一个月的期间,请确保选中“是否为月度”复选框。然后输入期间开始的月份中的那一天。每个月的第一天开始的期间将从每个月的第一天的午夜开始,到每个月的最后一天的晚上11:59:59结束。从每个月的16号开始的期间将从每个月的16号的午夜开始,到下个月的15号的晚上11:59:59结束。选择像月底31号这样的开始日期并不明智,无论您处于什么情况。
或者,您可以选择固定长度的会计期间。安装日期不一定是实际的安装日期。此字段用作创建期间的参考点。例如,如果您有为期两周的会计期间,从星期天开始,结束于两周后的星期六,您可以从任何月份的任何年份中选择任何星期天。然后输入14作为期间长度。期间将自动构建,从每个星期天的午夜开始,到未来某个星期六的晚上11:59:59结束。
如果您未为特定网站配置 Pendulum,那么当您尝试通过前端访问 Pendulum 时,可能会收到 HTTP 500 错误。
添加项目
接下来,您应该在 Pendulum 中添加至少一个项目。这可以通过 Django 管理员界面轻松完成。同样,活动也是如此,但这些不是必需的。
权限
最后,确保使用 Django 的 Auth 框架设置适当的人员权限。Pendulum 的前端部分尊重这些权限。这意味着如果用户没有打卡权限,当他们在前端网站上尝试打卡时,即使他们已经登录,也会被展示登录界面。对于其他操作,如暂停/恢复条目、更新条目、删除条目等,也是如此。
将相同的 Pendulum 权限分配给多个用户的一种简单方法是通过 Auth 框架创建一个组。有一个用于创建具有前端所需所有权限的组的自定义命令,包括以下权限:
添加条目
更新条目
删除条目
打卡
签退
暂停/恢复条目
要使用此命令,只需运行 python manage.py create_pendulum_group。您可以通过运行 python manage.py help create_pendulum_group 了解此命令的选项。
日期字段
我在添加或更新条目时对使日期/时间字段更友好持谨慎态度。我不想让任何人局限于我的特定做法。我个人更喜欢jQuery来做这类事情,但我确实意识到jQuery让很多人感到厌恶。因此,应用程序的早期版本没有提供任何使这些字段更容易使用和理解的功能。
然而,这似乎是尝试过这个应用程序的人中最常见的抱怨——缺乏用户友好的日期选择器。因此,我添加了一些基于jQuery的实用工具,使选择日期更加容易和直观。
默认情况下,应用程序将期望在您的媒体目录中名为 pendulum 的目录中找到适当的文件。您应该做的只是复制或创建Pendulum应用程序目录中的 media 文件夹的符号链接。如果您复制 media 文件夹,请将其重命名为 pendulum。如果您创建Pendulum的 media 文件夹的符号链接,请确保链接名为 pendulum。此目录应包含使日期选择器正常工作的所有必要文件。
在您的 add_update_entry.html 模板中(如果您覆盖了默认的模板),请确保您有一个代码块,如下所示:
{% block extra-head %} {{ form.media }} <script type="text/javascript"> $(document).ready(function () { $('input.vDateField').datepicker({ dateFormat: $.datepicker.W3C, showOn: 'both', buttonImage: '{{ MEDIA_URL }}pendulum/img/calendar.png', buttonImageOnly: true }); }); </script> {% endblock %}
这只是jQuery将日期选择器附加到相应字段的方式。
自定义日期选择器
我试图在应用程序中添加一些实用工具,让您可以轻松更改使用的日期选择器。您可以在 settings.py 文件中定义一个变量来覆盖默认的日期选择器:PENDULUM_DATE_MEDIA。如果您只想更改CSS样式,例如,您可以使用此变量。默认值是
PENDULUM_DATE_MEDIA = { 'js': (settings.MEDIA_URL + 'pendulum/js/jquery.js', settings.MEDIA_URL + 'pendulum/js/jquery.ui.js'), 'css': { 'all': (settings.MEDIA_URL + 'pendulum/css/jquery-ui.css',) } }
您可以看到它是一个具有两个键的字典: js 和 css。这两个项目的值符合Django文档中概述的概念。更改 PENDULUM_DATE_MEDIA 中的值应允许您完全删除或替换您所需的日期选择器。