Release Notes¶
0.9.4 (Released 04-01-2014)¶
- Click to highlight row/column on Payroll summary page
0.9.3 (Released 11-06-2013)¶
Related issues are in the 0.9.3. milestone.
Features
- Allow using compress when DEBUG = True with a new context processor, timepiece.context_processors.extra_settings.
- Align daily summary tables on the user timesheet (#725).
- Add progress bars on the contract listing page (#707).
- Add vertical highlighting to the payroll summary report (#727).
- Bump django-selectable version number to 0.7.0.
- Added a warning on the outstanding invoices page if users have unverified/unapproved entries for the selected time period (#744).
Bugfixes
- Include entries on last date of query on invoice listing page (#718).
- Display correct user name on the timesheet rejection confirmation page (#726).
- Register contracts.ContractHour in the admin so that the get_absolute_url() method can work.
Code Quality
- Started refactoring and improving the test suite. factory_boy is now required to run the tests.
- Refactored most CRM views to be class-based, and added more tests.
- Added several CBV mixins to utils.mixins.
0.9.2 (Released 05-31-2013)¶
Related issues are in the 0.9.2 milestone.
Features
- Checkbox filter by status on the outstanding hours list view.
- Click-to-highlight rows on the payroll summary page.
- Administrators with ‘entries.add_projecthours’ permission can view unpublished hours on the schedule view page.
- Refactored Total Progress area on the dashboard to more clearly show total hours worked vs. total hours assigned.
- Aligned columns on time sheet and dashboard All Entries tables.
- Displayed negative times with a negative sign and a red font.
- In Contract listing & detail views, display end date in red+bold if the contract is expired.
- In Contract listing & detail views, display warning icon next to end date if the contract is due to expire in less than two weeks.
- Used humanized time format on dashboard and user time sheet.
- JavaScript on Clock In, Clock Out, and Pause buttons that prevents accidentally double-clicking the button
- Show active contract names on the Outstanding Hours (invoices) list
Bugfixes
- Added missing apps to INSTALLED_APPS in README.
- Only include trackable projects in the quick clock in context processor.
- Filter projects by entry’s user (rather than logged-in user) on Entry edit view.
- Expose correct link on permanent tabs.
- Use select_for_update() on the active_entry during clock in to prevent creating a second active entry.
- Fixed broken admin links for Contract and ContractHour
Code quality
- Split view test methods from TimepieceDataTestCase to create ViewTestMixin.
- Removed some outdated styles.
- Used global styles for table highlight and hover colors.
- Specified browser support in README.
- Refreshed template tags, and removed some unused ones.
0.9.1 (Released 05-14-2013)¶
Related issues are in the 0.9.1 milestone.
- Fixed a bug with the ‘db_name’ of some contract models that was causing database queries to use the wrong table name.
0.9.0 (Released 05-10-2013)¶
Related issues are in the 0.9.0 milestone <https://github.com/caktus/django-timepiece/issues?milestone=33&state=closed>_.
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 --fakeRemove 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 ofshort_name
orname
- 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()
toEntry.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
0.2.0 (Released 09-01-2011)¶
- First official release
Development sponsored by Caktus Consulting Group, LLC.