Release Notes
0.9.0 (05-10-2013)
We have reorganized the django-timepiece code into 5 co-dependent apps to make
the code more modular, readable, and updatable. To upgrade your installation
while maintaining your existing data, please follow these guidelines:
Ensure that all existing migrations for django-timepiece are up to date.
Upgrade your django-timepiece installation.
Add 'timepiece', 'timepiece.contracts', 'timepiece.crm',
'timepiece.entries', and 'timepiece.reports' to
INSTALLED_APPS in your settings file.
Run the new migrations:
./manage.py migrate timepiece --delete-ghost-migrations
./manage.py migrate reports
./manage.py migrate contracts --fake
./manage.py migrate crm --fake
./manage.py migrate entries --fake
Remove all of your old *.pyc files, e.g. run something like
find . -name ‘*.pyc’ -delete in bash.
Remove stale ContentType and Permission objects. Note: Before doing
this, take note of which timepiece permissions are in each of your auth
Groups as these will need to be restored.
# This also deletes associated timepiece permissions.
ContentType.objects.filter(app_label='timepiece').delete()
Trigger the creation of new ContentType and Permission objects:
from django.contrib.auth.management import create_permissions
from django.contrib.contenttypes.management import update_contenttypes
from django.db.models import get_app, get_models
for app in ['timepiece', 'contracts', 'crm', 'entries', 'reports']:
update_content_types(get_app(app), get_models())
create_permissions(get_app(app), get_models(), 0)
Restore permissions to any auth Groups that you have created.
Related issues are in the 0.9.0 milestone.
- Reorganized app structure (see notes above)
- Removed existing migrations (see notes above)
- Dropped support for Django 1.3
- Added support for Django 1.5
- Removed PROJECT_UNSET from ProjectContract.type choices
- Use ellipsis after comment summary on dashboard so that comment doesn’t
appear cut off
0.8.3 (Released 03-27-2013)
Related issues are in the 0.8.3 milestone.
- Fixed invoice creation to separate out non-billable activities and not count them in the invoice totals.
- Added link to Outstanding Hours page from Invoice Detail page.
- Added schedule link to mobile navbar
- Added requirement that scheduled hours be > 0.
- Added tests for project hours.
- Fixed weekly schedule editor so project name changes stick.
- Clicking ‘Clock Out’ more than once gives 404 error.
0.8.2 (Released 01-25-2013)
Related issues are in the 0.8.2 milestone.
- Added permission requirements to view invoice list
- Added static files blocks to the base template
0.8.1 (Released 01-22-2013)
Related issues are in the 0.8.1 milestone.
- Restored slug field on RelationshipType
0.8.0 (Released 01-21-2013)
Related issues are in the 0.8.0 milestone.
Features
- Cleaned up the URL and template structure (This will break many existing bookmarks!)
- Removed the General Ledger report in favor of adding a summary by project on the Hourly Report page
- Default to showing entries from the previous week grouped by day on the Hourly Report
- Fall back to displaying username when a user’s first & last name are unavailable
- Added name field to ProjectContract model
- Made ProjectContract <-> Project a many-to-many relationship
- Added additional information on ProjectContract detail page
- Added list of contracts on Project detail page
- Allow running a subset of tests through runtests.py (now in accordance with existing documentation)
- Created a get_active_entry utility which raises ActiveEntryError if a user has more than one active entry
- Permanent tabs for user time sheet tabs
- Upgrade less from 1.3.0 -> 1.3.3
- New model ContractHours allows tracking whether specific blocks of hours on
a contract have been approved.
Bugfixes
- Prevent “None” from appearing under date headers on dashboard’s All Entries tab
- Save Auth groups when adding/editing a user
- Include current GET parameters when using ‘next’ in a URL
Other Changes
- Removed unused methods from ProjectContract and ContractAssignment models
- Removed unused ContractMilestone model
- Removed unused AssignmentManager class
- Removed unused slug fields from Business & RelationshipType models
- Removed ProjectContract from Project admin
- Improved test coverage of template tags
- Changed references to person/people to user/users for consistency with data model
- Removed unused clear_form.js
- Used slightly darker highlight color for active project on dashboard’s Progress tab
- Removed paste styles from styles.less
- Updated contributing docs to indicate that pull requests should be made to caktus:develop
- Removed some unused images, renamed a couple of others.
0.7.3 (Released 01-07-2013)
Related issues are in the 0.7.3 milestone.
Features
- Row and column highlighting on weekly schedule
- Redirect regular users to schedule view from schedule edit (rather than redirecting to login)
- Use checkbox select multiple for editing groups on person add/edit forms
- Added “active” column to front-end user list & detail views
- Permanent links to dashboard tabs
- Dashboard project progress table
- Highlight row of active project
- Made width of bars relative to maximum worked or assigned hours
- Show overtime bar for work on unassigned projects
- Dashboard “All Entries” tab
- Moved “Add Entry” button to top right of page, and clock in dropdown
- Split entries by day into separate tables, with a summary row
- Added comment column, and included comment in row tooltip
- Hide pause time unless it is greater than 0
Bugfixes
- Fixed bugs in handling filters on the hourly report
- Only summarize entries in the time period requested on hourly & billable
reports (previously, entries for the entire week which includes the from
date were included)
- Fixed bug which prevented projects being removed from the hourly report filter
- Keep GET parameters when deleting entry (allows proper redirection)
- Use history.back() on cancel buttons on clock in, clock out, and add
entry pages
- Fixed floating point errors that caused project progress bars to display
over two lines
- Prevent negative worked/assigned time on project progress bars
- Fix project progress bar behavior when worked = 0 and assigned = 0 (e.g.,
just after clocking into an unassigned project)
- Allow editing groups on person edit page
- Fixed subnav rendering on invoice pages
0.7.2 (Released 11-28-2012)
- Fixed test failures that resulted from changes to the display of project
names when clocking time.
0.7.1 (Released 11-28-2012)
Related issues are in the 0.7.1 milestone.
- Fixed path to white Glyphicons
- Fixed duplicates in unverified list on Payroll Summary report
- Removed unused timepiece/time-sheet/_entry_list.html template
- Made Business.name field required
- Schema migration to add Business.short_name field
- Add Business.get_display_name() to retrieve first of short_name or
name
- Show business short name with project name on the dashboard, clock in,
clock out, and outstanding invoices pages
- Added Entry.get_paused_seconds() - gets total time paused on any entry,
regardless of whether it is currently active or paused
- Removed Entry.get_active_seconds()
- Moved Entry.get_seconds() to Entry.get_total_seconds() - updated to
get total worked seconds for any entry, regardless of whether it is
currently active or paused, also taking into account the amount of time
paused
- Dashboard tweaks and bug fixes
- Fixed pause time bug
- Fixed incorrect link name in mobile navbar
- Fixed floating point errors in progress bar width calculations
- Fixed overall progress bar styling when worked width = 0%
- Fixed project progress bar responsiveness when resizing or zooming the
page
- Show overtime on project progress bars
- Use dark green instead of red on overtime bars
- Separated the “Project” and “Activity” columns in the all entries list
- Include active entry in the all entries list
- Increased the prominence of the active entry section
- Show the current activity name in the active entry section
- Removed link to the active project from the active entry section
- Use “for” instead of “on” when describing entries
0.7.0 (Released 11-16-2012)
Features
- Added search to Project list view in admin
- Added project relationship information on Person detail view
- Updated the navigation bar
- Added “Quick Clock In” pulldown to allow link to project-specific clock
in form from anywhere on the site
- Replaced “Dashboard” pulldown with a link to the user’s monthly time
sheet. The dashboard is accessible via the “Timepiece” link in the top
left corner.
- Renamed “Reports” dropdown to “Management”, and moved link to the admin
from the user pulldown
- Moved “Online Users” info to weekly dashboard view & removed the
active_entries context processor
- Made search box smaller unless it is the focused element
- Use user’s first name instead of email address on user pulldown
- Redesigned the weekly dashboard view
- Active entry section allows convenient summary & manipulation of the
current entry
- Visualization of overall progress (out of hours set in
UserProfile.hours_per_week)
- Visualization of hours worked on each project (out of ProjectHours
assigned this week)
- Use “humanized” hours display (1:30) rather than decimal (1.5)
- Added productivity report, which compares the hours worked on a project to
the hours that were assigned to it
Bug Fixes
- Updated to latest version of Bootstrap
- Updated django-compressor from 1.1.2 -> 1.2 & updated run_tests settings to
avoid masking primary errors in tests
- Set USE_TZ = False in example_project settings because we don’t
currently support use of timezones
- Added missing app and context processors to settings in example_project and
run_tests
- Updated example_project settings & README to reflect that INTERNAL_IPS must
be set in order to ensure that Bootstrap Glyphicons can be found
- Fixed bug when copying the previous week’s ProjectHours entries to
current week when entries for the current week already exist.
- Fixed bug when removing ProjectRelationship through the front end
Code Quality
- Renamed the ‘timepiece-entries’ URL to ‘dashboard’
- Removed unnecessary settings from example_project and run_tests
- Split up settings files in example project to use base and local settings
- Removed unused jqplot library
- Moved multiply template tag to timepiece_tags and removed math_tags file
- Removed most of custom icon set in favor of Bootstrap’s Glyphicons
0.6.0 (Released 10-04-2012)
- Updated version requirement for South to 0.7.6
- Updated version requirement for django-bootstrap-toolkit to 2.5.6
- Use Javascript to manage date filter links on Reports pages
- Use “empty” text when there is no Billable Report data to visualize
- Include auth groups select to Person creation form
- Added pagination and search to Previous Invoices page
- Show current project name and activity on Clock Out page
- Maintain selected month on link to Person time sheet from Payroll Report page
- Maintain selected month on link to Project time sheet from Outstanding Hours page
- Fixed division-by-0 bug on ContractAssignment admin page
- Fixed infinite loop when ordering by Project on ProjectContract admin page
- Prevent admin from requiring that all ProjectContract inlines be completed on Project creation
- Use default options for the filter form on the Hourly Report page
We also completed a full audit of the code, in which we deleted stale parts, removed unmaintained features, and made some simple cleanups:
- Migrated the PersonSchedule.hours_per_week field to the UserProfile model
- Deleted the AssignmentAllocation and PersonSchedule models
- Removed all projection-related code, including admin and model hooks, forms, views, templates, and projection.py
- Deleted widgets.py
- Removed unused fields from DateForm
- Removed unused templates and static files
- Removed unused utilities, template tags, and forms
- Cleaned up imports, used the render shortcut in all views, and used the new-style url in all templates
- Refreshed the example project and added missing templates and JavaScript files
0.5.4 (Released 09-13-2012)
- Projects on Invoices/Outstanding Hours page are sorted by status and then by name
- Weekly Project Hours chart uses horizontal zebra striping
- New permission added for approving timesheets
- Fixed a bug in Project Hours edit view that prevented deletion of multiple entries at once
- Added links to Person timesheet from Payroll Report page
- Added links to Project timesheet on Invoice page
0.5.3 (Released 08-10-2012)
- Added a “Billable Hours” report, which displays a chart of billable and non-billable hours for a selected group of people, activities, project types and date range.
- Improved usability of the payroll report
- Made forms with date ranges more consistent and DRY
- Added a restriction that prevents users from adding entries to months with approved or invoiced entries.
- Removed the link to edit weekly project hours for users without that permission
- Improved readability of report tables by changing the hover color to something more distinctive.
0.5.2 (Released 08-01-2012)
- Added “Project Hours” views, which allow managers to assign project hours to users in a spreadsheet-like interface.
- Simplified implementation of timezone support.
- Fixed a bug that was preventing the weekly totals in “Hourly Summary” of “My Ledger” from being displayed.
- Removed the display of “hours out of” in the “billable time” section of “My Work This Week” and added it to the “total time this week” section.
0.5.1 (Released 07-20-2012)
- Added compatability with Django 1.4 and timezone support
- Added mobile support for the dashboard (clocking in/out, ledger, etc.)
- Fixed a bug where the last billable day was calculated incorrectly
- Payroll report now lists types of projects under billable and non-billable columns
- Moved the “Others Are Working On” table to a popover in the navigation
- Work total table now includes the active entry
- Comment field available when clocking in to a project
- Added support for custom navigation through EXTRA_NAV setting
- Across the board styling changes
0.5.0 (Released 07-12-2012)
- Complete styling upgrade using Twitter Bootstrap
- Fixed permissions for client users that can’t clock in
- Replaced deprecated message_set calls with new messages API calls
- Added django-bootstrap-toolkit requirement
- Included the top navigation bar inside of the app’s templates.
- Made the project edit form use selectables for searching for businesses.
- Improved tox configuration of test database names
- Added a makefile and /docs for building documentation with Sphinx
0.4.2 (Released 06-15-2012)
- Fixed permissions for creating businesses.
- Hourly reports in “My Ledger” display previous weeks of the month if an overlapping entry exists.
- Fixed permissions for rejecting verified entries.
- Fixed a bug where you could verify entries while still clocked in.
- Added user selection for payroll reviewers to switch between timesheets.
- Fixed bug where the incorrect email was shown in the header.
0.4.1 (Released 06-04-2012)
- Made projects’ tracker URL’s appear on the project detail view.
- Added reasonable limits to the total time and pause length of entries.
- Users can now comment on the active entry while clocking into a new one.
- Fixed a bug with entries overlapping when clocking in while another entry is active.
- Added the ability for payroll reviewers to reject an entry, which marks it as unverified.
- Added a weekly total on the dashboard for all hours worked.
- The hourly summary in “My Ledger” now shows the entire first week of the month.
- Made payroll links to timesheets maintain the proper month and year.
- Made URL’s in entry comments display as HTML links
- Fixed permissions checking for payroll and entry summary views.
- Made project list page filterable by project status.
- Replaced django-ajax-select with latest version of django-selectable
- Added migration to remove tables related to django-crm
0.4.0 (Released 04-27-2012)
- Improved personnel timesheets with a simplified, tabbed layout.
- Improved efficency and consistency of entry queries
- Removed BillingWindow, RepeatPeriod, and PersonRepeatPeriod models, tables and related code.
- Removed the update billing windows management command as it is no longer needed.
0.3.8 (Released 02-16-2012)
- Converted invoice reference to a CharField for more flexibility
- Added list and detail views for project contracts
- Hour groups now show totals for each activity nested within them
- Moved unapproved and unverified entry warnings to the payroll summary page.
0.3.7 (Released 02-01-2012)
- Make create invoice page inclusive of date
0.3.6 (Released 02-01-2012)
- Allowed entries to be added in the future.
- Added per project activity restrictions.
- Allowed marking entries as ‘not invoiced’ and grouped entries together after clicking on “Mark as invoiced”
- Added the ability to view previous invoices and export them as csv’s
- Added the ability to group different activities together into Hour Groups for summarizing in invoices.
0.3.5 (Released 12-09-2011)
- Optimized Payroll Summary with reusable code from Hourly Reports.
- Removed use of Textile and used the linebreaks filter tag in its place.
0.3.4 (Released 11-14-2011)
- Added a new Hourly Reports view with project hours filtered and grouped by user specified criteria.
- Hourly Reports, General Ledger and Payroll Summary are now subheadings under Reports.
- Improved My Ledger with row highlighting, better CSS and a title attribute.
- Fixed Invoice projects to return the date range with m/d/Y.
0.3.3 (Released 10-31-2011)
- Fixed Time Detail This Week on Dashboard to show correct totals
- Fixed Billable Summary on My Ledger to show totals for unverified hours
0.3.2 (Released 10-28-2011)
- My Active Entries on Dashboard now shows the hours worked thus far
- Improved My Ledger by adding a comments column and a redirect from the edit entry link
- Fixed issues related to the hourly summary option not appearing for some users
- Fixed issues with date accuracy in weekly headings on ledger pages
- General ledger now sorts users by last name
- Enhanced project time sheets with an activity column and a summary of hours spent on each activity.
- Invoice projects page now shows project status
- Activity on clock in page now defaults to the last activity clocked on that project
- Payroll report only shows users that have clocked hours for the period.
0.3.1 (Released 10-20-2011)
- Moved to GitHub (and git)
- Add hourly summary page to report daily, weekly, and monthly hours
- Refactored weekly overtime calculations to use ISO 8601
0.3.0 (Released 10-03-2011)
- Removed ability to maintain multiple active entries
- Enhanced logic on clock in and add entry pages to check for overlapping entries
- Fixed date redirect when marking projects as invoiced
- Fixed issues related to the “Approve Timesheet” link missing
- Include billable, non-billable, uninvoiced, and invoiced summaries on person timesheet
- Use select_related in a few places to optimize page loads