{
"info": {
"author": "Josh VanderLinden",
"author_email": "codekoala@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Framework :: Django",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Office/Business :: Financial :: Accounting",
"Topic :: Office/Business :: Scheduling"
],
"description": "This application will allow users of Django-powered websites keep track of the\r\ntime they spend on different projects. It's a work in process.\r\n\r\nFeatures\r\n========\r\n\r\n* Configurable: Pendulum can be configured to operate on several Django-powered\r\n sites. The period lengths can be configured as monthly or as a fixed-length\r\n period.\r\n* Projects: You can have an unlimited number of projects to be able to\r\n categorize hours spent working on certain tasks. Each project can be\r\n activated/deactivated as necessary via the Django admin.\r\n* Activities: Activities allow you to further categorize work done on\r\n particular tasks for each project.\r\n\r\nRequirements\r\n============\r\n\r\n``django-pendulum`` requires a modern version of the Django framework. By\r\nmodern I simply mean a version with the ``newforms-admin`` functionality. If\r\nyou're running on Django 1.0 or later, you're good.\r\n\r\n``django-pendulum`` also relies upon the ``django.contrib.admin``,\r\n``django.contrib.auth``, ``django.contrib.contenttypes``, and\r\n``django.contrib.sites`` frameworks.\r\n\r\nInstallation\r\n============\r\n\r\nDownload ``django-pendulum`` using *one* of the following methods:\r\n\r\npip\r\n---\r\n\r\nInstall ``django-pendulum`` using ``pip``::\r\n\r\n pip install -U django-pendulum\r\n\r\neasy_install\r\n------------\r\n\r\nYou can download the package from the `CheeseShop\r\n`_ or use::\r\n\r\n easy_install django-pendulum\r\n\r\nto download and install ``django-pendulum``.\r\n\r\nPackage Download\r\n----------------\r\n\r\nDownload the latest ``.tar.gz`` file from the downloads section and extract it\r\nsomewhere you'll remember. Use ``python setup.py install`` to install it.\r\n\r\nCheckout from Version Control\r\n-----------------------------\r\n\r\nClone ``django-pendulum`` using one of the official repositories::\r\n\r\n hg clone http://bitbucket.org/codekoala/django-pendulum\r\n git clone http://github.com/codekoala/django-pendulum.git\r\n hg clone http://django-pendulum.googlecode.com/hg django-pendulum\r\n\r\nVerifying Installation\r\n======================\r\n\r\nThe easiest way to ensure that you have successfully installed Pendulum is to\r\nexecute a command such as::\r\n\r\n python -c \"import pendulum; print pendulum.get_version()\"\r\n\r\nIf that displays the version of Pendulum that you tried to install, you're good\r\nto roll. If you see something other than that, you probably need to check your\r\n``PYTHONPATH`` environment variable.\r\n\r\nConfiguration\r\n=============\r\n\r\nFirst of all, you must add this project to your list of ``INSTALLED_APPS`` in\r\n``settings.py``::\r\n\r\n INSTALLED_APPS = (\r\n 'django.contrib.admin',\r\n 'django.contrib.auth',\r\n 'django.contrib.contenttypes',\r\n 'django.contrib.sessions',\r\n 'django.contrib.sites',\r\n ...\r\n 'pendulum',\r\n ...\r\n )\r\n\r\nRun ``manage.py syncdb``. This creates a few tables in your database that are\r\nnecessary for operation.\r\n\r\nNext, you should add an entry to your main ``urls.py`` file. For example::\r\n\r\n from django.conf.urls.defaults import *\r\n\r\n from django.contrib import admin\r\n admin.autodiscover()\r\n\r\n urlpatterns = patterns('',\r\n (r'^admin/(.*)', admin.site.root),\r\n (r'^pendulum/', include('pendulum.urls')),\r\n )\r\n\r\nThe next thing you will want to do is configure Pendulum for the active Django\r\nsites. Do this by going into the Django admin and clicking the \"add\" link next\r\nto Pendulum Configurations.\r\n\r\nThe first step in the configuration is to choose which site this particular\r\nconfiguration will apply to. The decision is easy if you only have one site :)\r\n\r\nNext, you must choose what kind of \"accounting period\" you wish to use. If you\r\nwant month-long periods, ensure the \"Is monthly\" check box is selected. Then\r\nenter the day of the month that the periods begin. Periods that begin on the\r\nfirst of the month will always range from midnight on the first of each month\r\nto 11:59:59 PM on the last day of each month. Periods that begin on the 16th\r\nof the month will range from midnight on the 16th of each month to 11:59:59 PM\r\non the 15th of the following month. Be wise about choosing start days such as\r\nthe 31st of the month--it's not a wise choice no matter what situation you're\r\nin.\r\n\r\nAlternatively, you may choose fixed-length accounting periods. The\r\ninstallation date does not necessarily have to be the actual installation date.\r\nThis field is used as a reference point for creating periods. For example, if\r\nyou have 2-week long accounting periods that begin on Sundays and end two\r\nSaturdays later, you would select _any_ Sunday from any month from any year.\r\nThen you would enter 14 for the period length. Periods will automatically be\r\nconstructed that will begin at midnight each Sunday and end at 11:59:59 PM two\r\nSaturdays in the future.\r\n\r\nIf you fail to configure Pendulum for a given site, you will likely receive\r\nHTTP 500 errors if you try to access Pendulum via the front-end.\r\n\r\nAdd Projects\r\n------------\r\n\r\nNext, you should add at least one project to Pendulum. This can easily be\r\naccomplished via the Django admin. The same goes for activities, but these are\r\nnot required.\r\n\r\nPermissions\r\n-----------\r\n\r\nFinally, be sure set people up with the appropriate permissions using Django's\r\nAuth framework. The front end side of Pendulum respects these permissions.\r\nThat means that if a user doesn't have the permission to clock in, the will be\r\npresented with a login screen (even if they're logged in already) when they try\r\nto clock in on the front end site. The same goes for other operations such as\r\npausing/unpausing entries, updating entries, deleting entries, etc.\r\n\r\nAn easy way to assign the same Pendulum permissions to several users is to\r\ncreate a Group using the Auth framework. There is a custom command for\r\ncreating a group with all of the permissions necessary for the front end,\r\nincluding the ability to:\r\n\r\n* add entries\r\n* update entries\r\n* delete entries\r\n* clock in\r\n* clock out\r\n* pause/unpause entries\r\n\r\nTo use this command, simply run ``python manage.py create_pendulum_group``.\r\nYou may run ``python manage.py help create_pendulum_group`` to learn about\r\noptions for this command.\r\n\r\nThe Date Field\r\n==============\r\n\r\nI've been hesitant to do anything to make the date/time fields more\r\nuser-friendly when adding or updating entries. I don't want to tie anyone down\r\nto my particular way of doing things. I personally prefer jQuery for this sort\r\nof thing, but I do realize that jQuery disgusts many other people out there.\r\nTherefore, the first versions of the application didn't come with anything to\r\nmake those fields easier to use and understand.\r\n\r\nHowever, that seems to be the most common complaint amongst those who have\r\nplayed with the application--the lack of user-friendly date pickers. As such,\r\nI have added some jQuery-based utilities to make choosing a date easier and\r\nmore intuitive.\r\n\r\nBy default, the application will expect to find the appropriate files in a\r\ndirectory called ``pendulum`` within your media directory. All you should need\r\nto do is copy or symlink the ``media`` folder from the Pendulum application\r\ndirectory. If you copy the ``media`` folder, rename it to ``pendulum``. If\r\nyou create a symlink to Pendulum's ``media`` folder, make sure the symlink is\r\ncalled ``pendulum``. This directory should hold all of the necessary files to\r\nmake the date picker work.\r\n\r\nIn your ``add_update_entry.html`` template (if you override the default ones),\r\nmake sure you have a code block such as::\r\n\r\n {% block extra-head %}\r\n {{ form.media }}\r\n \r\n {% endblock %}\r\n\r\nThis is just jQuery's way of attaching the date picker to the appropriate\r\nfields.\r\n\r\nCustomizing The Date Picker\r\n---------------------------\r\n\r\nI tried to put some utilities in the application to allow you to change the\r\ndate picker that is used with ease. There is a variable that you can define in\r\nyour ``settings.py`` file to override the default date picker:\r\n``PENDULUM_DATE_MEDIA``. If you simply want to change the styling CSS, for\r\nexample, you could use this variable. The default value is::\r\n\r\n PENDULUM_DATE_MEDIA = {\r\n 'js': (settings.MEDIA_URL + 'pendulum/js/jquery.js',\r\n settings.MEDIA_URL + 'pendulum/js/jquery.ui.js'),\r\n 'css': {\r\n 'all': (settings.MEDIA_URL + 'pendulum/css/jquery-ui.css',)\r\n }\r\n }\r\n\r\nYou can see that it is a dictionary with two keys: ``js`` and ``css``. The\r\nvalues of these two items conform to the concepts outlined in `Django's\r\ndocumentation `_.\r\nChanging the values within ``PENDULUM_DATE_MEDIA`` should permit you to\r\ncompletely remove or replace the date picker as you desire.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://bitbucket.org/codekoala/django-pendulum/",
"keywords": "django,time tracking,pendulum",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "django-pendulum",
"package_url": "https://pypi.org/project/django-pendulum/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/django-pendulum/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://bitbucket.org/codekoala/django-pendulum/"
},
"release_url": "https://pypi.org/project/django-pendulum/0.1.6-pre4/",
"requires_dist": null,
"requires_python": null,
"summary": "A simple timeclock/timecard application for use in Django-powered Web sites.",
"version": "0.1.6-pre4"
},
"last_serial": 235734,
"releases": {
"0.1.6-pre": [
{
"comment_text": "",
"digests": {
"md5": "2ba1b8666c9158dccbf37dd3c166df61",
"sha256": "ab122b6c89da0e4d654a45020c01e2a1f37f7d14af13e18a45416157da4818bd"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre.tar.bz2",
"has_sig": true,
"md5_digest": "2ba1b8666c9158dccbf37dd3c166df61",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 55508,
"upload_time": "2008-11-04T18:43:33",
"url": "https://files.pythonhosted.org/packages/47/7e/085fd6bebd32ce806e6fabf975a184d7165bbc33b8a38ce518e2a220ef1e/django-pendulum-0.1.6-pre.tar.bz2"
},
{
"comment_text": "",
"digests": {
"md5": "c76fbfcd5d8f19e00e1c4bf8f90d050d",
"sha256": "973797cc67a231afc87a7be3d6a8e41b2fe1882d52f367ff0ebb049e1fd1044a"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre.tar.gz",
"has_sig": true,
"md5_digest": "c76fbfcd5d8f19e00e1c4bf8f90d050d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 59248,
"upload_time": "2008-11-04T18:42:11",
"url": "https://files.pythonhosted.org/packages/1d/df/ce64970146af1e4a3685e9df1465e8b39fc7effcadefeaea0b96a65ead8b/django-pendulum-0.1.6-pre.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "5004bdd4728fa01e0012d0835dcfc61b",
"sha256": "035ab5cbaa5a41707698b900ea3541a57ab86899d70317726efdf41d7dfc5235"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre.zip",
"has_sig": true,
"md5_digest": "5004bdd4728fa01e0012d0835dcfc61b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 77459,
"upload_time": "2008-11-04T18:43:37",
"url": "https://files.pythonhosted.org/packages/75/10/776d114d4ae45460f44e477b260b08405eb1c73f4f25b7c8b63378cccdcd/django-pendulum-0.1.6-pre.zip"
}
],
"0.1.6-pre2": [
{
"comment_text": "",
"digests": {
"md5": "63b33f76b9ed547837711a0c8cb066ec",
"sha256": "66886c68287d574fb232be0b10ef8b45b812145dbaf68c7754b7d865346dd9ad"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre2.tar.bz2",
"has_sig": true,
"md5_digest": "63b33f76b9ed547837711a0c8cb066ec",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 57284,
"upload_time": "2008-11-06T23:39:41",
"url": "https://files.pythonhosted.org/packages/c4/65/2f44ffe06dff5ae2fc680b2adcce04fff561e76d1306492af7b807bd34b4/django-pendulum-0.1.6-pre2.tar.bz2"
},
{
"comment_text": "",
"digests": {
"md5": "26c7570369cea2c030adf472af3e89fb",
"sha256": "6909fbd509a10fa778b87fa3f203e97d55fedbdf52db282bdac12950be4a861b"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre2.tar.gz",
"has_sig": true,
"md5_digest": "26c7570369cea2c030adf472af3e89fb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 61430,
"upload_time": "2008-11-06T23:39:35",
"url": "https://files.pythonhosted.org/packages/0b/10/72300520a649bd8f1c382d97141c9ec944c14f37e59fe886ceeff6867bef/django-pendulum-0.1.6-pre2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "3dc17cee55ecb8a70f5d65b0468368e2",
"sha256": "dcbd981d65af354fe766129e3f838395f9138490504aa74d998a54df0708e3a3"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre2.zip",
"has_sig": true,
"md5_digest": "3dc17cee55ecb8a70f5d65b0468368e2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 84644,
"upload_time": "2008-11-06T23:39:51",
"url": "https://files.pythonhosted.org/packages/3b/58/bda549b98ea2697e9a96f24362f9d9b1ba107553176b8f1dd40715356794/django-pendulum-0.1.6-pre2.zip"
}
],
"0.1.6-pre4": [
{
"comment_text": "",
"digests": {
"md5": "2a0e4af93a7de80fb97dfd8b9f386ddf",
"sha256": "39870a8e5234887a7bd3c15be1fde05d70e29490ec6613011fc73b359d9790a9"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre4.tar.gz",
"has_sig": false,
"md5_digest": "2a0e4af93a7de80fb97dfd8b9f386ddf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 67221,
"upload_time": "2010-12-28T04:48:36",
"url": "https://files.pythonhosted.org/packages/58/61/59b2df9f98637da2ede2baa346d37764ed9973cee504f8fa77f7be296fc7/django-pendulum-0.1.6-pre4.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "2a0e4af93a7de80fb97dfd8b9f386ddf",
"sha256": "39870a8e5234887a7bd3c15be1fde05d70e29490ec6613011fc73b359d9790a9"
},
"downloads": -1,
"filename": "django-pendulum-0.1.6-pre4.tar.gz",
"has_sig": false,
"md5_digest": "2a0e4af93a7de80fb97dfd8b9f386ddf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 67221,
"upload_time": "2010-12-28T04:48:36",
"url": "https://files.pythonhosted.org/packages/58/61/59b2df9f98637da2ede2baa346d37764ed9973cee504f8fa77f7be296fc7/django-pendulum-0.1.6-pre4.tar.gz"
}
]
}