Worklog is a Django-based, hourly work logging web application that supports work item entry, job costing, job funding, burn-down charting, work item filtering, CSV report generation, and an e-mail reminder system.
Worklog is a django application that exists within the labsite ecosystem. To develop worklog, you first need to setup labsite.
These instructions assume that labsite was cloned into your home directory. Clone worklog into your home directory.
$ cd ~
$ git clone git@github.com:ITNG/worklog.git
A soft link between labsite and worklog needs to exist so that the local changes to worklog are visible to labsite.
$ cd ~/labsite
$ ln -s ~/worklog/worklog
Add new entry for the site url in the admin/sites. This must be fully qualified and it must not include a closing slash (We can use 'http://127.0.0.1:8000' for local dev environment). Update corresponding SITE_ID in settings.py. The SITE_ID is an integer field that corresponds to a Site object's private key, which is incremented by 1 for each new instance of a Site. Django, by default, will instantiate a site called 'example.com', where pk=1. Thus, the next site added will have pk=2, and so forth. Enter the private key integer into the SITE_ID field. If you are uncertain of your Site's private key, you can make a query for it in the django shell.
You should have at least one admin user set up in your settings.py file because that is where Worklog will send all invoice and timesheet reports to.
Email reminder records are cleared from the database after 14 days. Reminder emails are sent every weekday at 6pm. Reminder records are cleared from the database every weekday at 7pm.
Burn down charts are provided to view funding vs. hourly consumption for individual jobs. The charting interface can be accessed at: '/worklog/chart/'
In order to view burn down charts related to a job, you may use the provided web interface or provide the values using the following GET parameters:
* job_id - The ID of the job that you wish to view the data for.
* start_date (optional) - The date to use for the start of the data reported. The format is mm/dd/yyyy.
* end_date (optional) - The date to use for the end of the data reported. The format is mm/dd/yyyy.
If you do not provide the start and end date, the data will start at the first available date of funding and end at the date of the last submitted work item.
Create new jobs for employees to log hours into. Each job can be allocated a certain number of hours which will produce very nice burn rate charts (see above.). Each job can be associated with one or more users. By default a job is associated with all users. This can be disabled by deselecting the "Available all users" check box and select only some users. A user can create work items only for the jobs that he/she is part of.
Add certain dates as holidays. Work items can still be entered on holidays, but bi-weekly timesheets will not include those work items. For bi-weekly employees, a note is shown on the work item entry form indicating that day is a holiday.
All emails are sent from the email address configured in settings.py through DEFAULT_FROM_EMAIL
DEFAULT_FROM_EMAIL = '"Friday Institute Worklog" <fi-worklog@ncsu.edu>'
Automatically send all active users a reminder to log their hours if they haven't done so already that particular day. These emails are sent daily but can be customized.
NOTE: A user must be 'active' to recieve reminder emails.
# These settings aren't required, but defined for convenience
everyday = [0,1,2,3,4,5,6]
weekdays = [1,2,3,4,5]
Email reminder records are cleared from the database after this many days. E.g. after 2 weeks WORKLOG_EMAIL_REMINDERS_EXPIRE_AFTER = 14
The time and days to send reminder emails. E.g. 6pm during each workday WORKLOG_SEND_REMINDERS_HOUR = 18 WORKLOG_SEND_REMINDERS_DAYSOFWEEK = weekdays
The time and days to clear reminder records from the database. E.g. 7pm during each workday WORKLOG_CLEAR_REMINDERS_HOUR = 19 WORKLOG_CLEAR_REMINDERS_DAYSOFWEEK = weekdays
NOTE: For more information about formatting and periodic tasks, visit http://packages.python.org/celery/userguide/periodic-tasks.html
Invoices can be generated for certain jobs using the amount of logged hours from all employees. Invoices are emailed to the admins nightly at 2am (which can be customized, as well). Every job has an option of 'Do Not Invoice' which will omit it from the report. Individual work items can be marked as 'Do Not Invoice' or as 'Already Invoiced'. Once an invoice is sent to the admin's email, it will contain a link. This link will lead you to page where you can actually generate an invoice report (which will then be sent to your email), or invoice all items, which will override your current preferences for all jobs.
Time sheets are generated for bi-weekly employees only. On the night that a time sheet is due, an email will be sent to the site administrators informing them that this is the case. The email will contain a URL which will allow admins to send time sheets to specific employees or to all employees at once.
NOTE: Bi-weekly employees must be configured for this to work.
NOTE: This only works once Work Periods have been added to the admin interface.
Once a user is logged in, they must go to the following URL: 'worklog/add/' There, a user will enter the amount of hours worked, select a 'job' from the dropdown and explain in a few words what was worked on specifically. From there you can either exit the form or add another job for the day. Note that this form only logs hours for the current day's date.
All times will be in UTC unless the following is placed in your settings.py file: CELERY_ENABLE_UTC = True
It is also recommended to include the following in the settings.py file: CELERY_TIMEZONE = 'America/New_York'
Read more: http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#timezones