Source code for sandglass.models.timesheet
from django.core.validators import MinValueValidator
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django_extensions.db.models import TimeStampedModel
from timedelta.fields import TimedeltaField
[docs]class TimeSheet(TimeStampedModel):
"""Regular settlement and savepoint for a user's (employee's) status.
For future calculations, the last TimeSheet is used as basis.
Every new user should have an initial TimeSheet.
"""
user = models.ForeignKey(
User, verbose_name=_(u"user"))
name = models.CharField(
verbose_name=_(u"name"), max_length=255, db_index=True)
description = models.TextField(
verbose_name=_(u"description"), blank=True, null=True)
date_from = models.DateTimeField(
verbose_name=_(u"daterange start"), blank=True, null=True)
date_to = models.DateTimeField(
verbose_name=_(u"daterange end"), blank=True, null=True)
verified = models.BooleanField(
verbose_name=_(u"verified"), db_index=True, default=False)
# pay-out values for flextime and overtime budget
flextime_payout = TimedeltaField(
verbose_name=_(u"flextime pay-out"), default=0,
blank=True, null=True)
overtime_payout = TimedeltaField(
verbose_name=_(u"overtime pay-out"), default=0,
blank=True, null=True)
# calculation basis for the *next* timesheet
vacation_budget = models.IntegerField(
verbose_name=_(u"vacation budget"), default=0)
flextime_budget = TimedeltaField(
verbose_name=_(u"flextime budget"), default=0,
blank=True, null=True)
overtime_budget = TimedeltaField(
verbose_name=_(u"overtime budget"), default=0,
validators=[MinValueValidator(0)])
class Meta:
app_label = 'sandglass'
__all__ = ('TimeSheet',)