Giter VIP home page Giter VIP logo

django-timepiece's Introduction

django-timepiece

django-timepiece is a multi-user application for tracking people's time on projects. Documentation is available on Read The Docs.

master:Build Status
develop:Build Status

Features

  • A simple CRM with projects and businesses
  • User dashboards with budgeted hours based on project contracts
  • Time sheets with daily, weekly, and monthly summaries
  • Verified, approved, and invoiced time sheet workflows
  • Monthly payroll reporting with overtime, paid leave, and vacation summaries
  • Project invoicing with hourly summaries

Requirements

django-timepiece is compatible with Django 1.8 (on Python 2.7 and Python 3.5) and Django 1.9 (on Python 2.7 and Python 3.5). PostgreSQL is the only officially supported backend. For a full list of required libraries, see the requirements/base.txt from the project source on GitHub.

We actively support desktop versions of Chrome and Firefox, as well as common mobile platforms. We do not support most versions of Internet Explorer. We welcome pull requests to fix bugs on unsupported browsers.

Documentation

Documentation is hosted on Read The Docs.

To build the documentation locally:

  1. Download a copy of the django-timepiece source, either through use of git clone or by downloading a zipfile from GitHub.

  2. Make sure that the top-level directory is on your Python path. If you're using a virtual environment, this can be accomplished via:

    cd /path/to/django-timepiece/ && add2virtualenv .
    
  3. Install the requirements in requirements/docs.txt from the project source on GitHub.

  4. Run make html from within the docs/ directory. HTML files will be output in the docs/_build/html/ directory.

Installation

  1. django-timepiece is available on PyPI, so the easiest way to install it and its dependencies is to use pip:

    $ pip install django-timepiece
    
  2. Ensure that less is installed on your machine and the version is <=1.4.0:

    # Install node.js and npm:
    $ sudo apt-get install python-software-properties
    $ sudo add-apt-repository ppa:chris-lea/node.js
    $ sudo apt-get update
    $ sudo apt-get install nodejs npm
    
    # Use npm to install less from package.json:
    $ npm install
    
  3. If you are starting from the included example project, copy the example local settings file at example_project/settings/local.py.example to example_project/settings/local.py.

    If you are using an existing project, you will need to make the following changes to your settings:

    • Add timepiece and its dependencies to INSTALLED_APPS:

      INSTALLED_APPS = (
          ...
          'bootstrap_toolkit',
          'compressor',
          'selectable',
      
          # Must come last.
          'timepiece',
          'timepiece.contracts',
          'timepiece.crm',
          'timepiece.entries',
          'timepiece.reports',
      )
      
    • Configure your middleware:

      MIDDLEWARE_CLASSES = (
          'django.middleware.common.CommonMiddleware',
          'django.contrib.sessions.middleware.SessionMiddleware',
          'django.middleware.csrf.CsrfViewMiddleware',
          'django.contrib.auth.middleware.AuthenticationMiddleware',
          'django.contrib.messages.middleware.MessageMiddleware',
      )
      
    • Add django.core.context_processors.request and django-timepiece context processors to TEMPLATE_CONTEXT_PROCESSORS:

      TEMPLATE_CONTEXT_PROCESSORS = (
          "django.contrib.auth.context_processors.auth",
          "django.core.context_processors.debug",
          "django.core.context_processors.i18n",
          "django.core.context_processors.media",
          "django.contrib.messages.context_processors.messages",
          "django.core.context_processors.request",           # <----
          "timepiece.context_processors.quick_clock_in",      # <----
          "timepiece.context_processors.quick_search",        # <----
          "timepiece.context_processors.extra_settings",      # <----
      )
      
    • Configure compressor settings:

      COMPRESS_PRECOMPILERS = (
          ('text/less', 'lessc {infile} {outfile}'),
      )
      COMPRESS_ROOT = '%s/static/' % PROJECT_PATH
      INTERNAL_IPS = ('127.0.0.1',)
      
    • Set USE_TZ to False. django-timepiece does not currently support timezones.

  4. Run syncdb and migrate.

  5. Add URLs for django-timepiece and selectable to urls.py, e.g.:

    urlpatterns = [
        ...
        (r'^selectable/', include('selectable.urls')),
        (r'', include('timepiece.urls')),
        ...
    ]
    
  6. Add the django.contrib.auth URLs to urls.py, e.g.:

    urlpatterns = [
        ...
        url(r'^accounts/login/$', 'django.contrib.auth.views.login',
            name='auth_login'),
        url(r'^accounts/logout/$', 'django.contrib.auth.views.logout_then_login',
            name='auth_logout'),
        url(r'^accounts/password-change/$',
            'django.contrib.auth.views.password_change',
            name='change_password'),
        url(r'^accounts/password-change/done/$',
            'django.contrib.auth.views.password_change_done'),
        url(r'^accounts/password-reset/$',
            'django.contrib.auth.views.password_reset',
            name='reset_password'),
        url(r'^accounts/password-reset/done/$',
            'django.contrib.auth.views.password_reset_done'),
        url(r'^accounts/reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
            'django.contrib.auth.views.password_reset_confirm'),
        url(r'^accounts/reset/done/$',
            'django.contrib.auth.views.password_reset_complete'),
        ...
    ]
    
  7. Create registration templates. For examples, see the registration templates in example_project/templates/registration. Ensure that your project's template directory is added to TEMPLATE_DIRS:

    TEMPLATE_DIRS = (
        ...
        '%s/templates' % PROJECT_PATH,
        ...
    )
    

Development sponsored by Caktus Group.

django-timepiece's People

Contributors

calebsmith avatar codekoala avatar conrado avatar copelco avatar copiesofcopies avatar daaray avatar dannybrowne86 avatar dpoirier avatar glassresistor avatar nmashton avatar panatale1 avatar timgates42 avatar tobiasmcnulty avatar vkurup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

django-timepiece's Issues

Approve Time Sheets

On person time sheets, the "verify time sheet link" shows if any entries are unverified. However, the "approve time sheet link" does not show if the time sheet is approved and someone adds an entry. Therefore, the added entr(y/ies) are "verified" but not "approved."


make the total for billable time a progress bar of all hours worked this week

The total should including those not in an allocation, where the total is the PersonSchedule's hours per week. Non-billable hours should remain as-is for now (no progress bar), but the progress bar should be built in such a way that it could be duplicated for non-billable hours (using a different model-based total) in the future if needed.


Make progress bar for hours worked /over/ an allocation

instead of "You are 9.08hrs over for Portal this week." text, leave the progress bar there but make the left part the hours in the allocation, and right part the hours you've worked over the allocation (so the total for the bar = total hours worked this week). In this case, make the hours over the allocation red, and have it extend past the 400 pixel width of the other bars.


Switching clocked-in projects with 'resume' results in red time entries

When I clock in to more than one project, and just use "resume" to switch between them, I end up with my time entries for that day showing bright red backgrounds.

E.g. 7-7-2011, I clocked into ProjectA at 8:51, then ProjectB at 9:09, and when I switched projects for the rest of the day, just hit "resume" on the one I was starting work on. Today I see two bright red entries.

Project Clock in Clock out Breaks Hours
ProjectB 9:09am 1:33pm 2.94 1.46
ProjectA 8:51am 4:59pm 1.46 6.67

I don't think these should be marked red.


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.