from django.db import models
import datetime
from django.utils.translation import ugettext_lazy as _
from django_extensions.db.models import TimeStampedModel
from sandglass.models.project import Project
from sandglass.models.tag import Tag
from sandglass.models.task import Task
ACTIVITY_TYPE_UNASSIGNED = 'unassigned'
ACTIVITY_TYPE_WORKING = 'working'
ACTIVITY_TYPE_BREAK = 'break'
ACTIVITY_TYPE_TRIP = 'trip'
INACTIVITY_TYPE_VACATION = 'vacation'
INACTIVITY_TYPE_HOLIDAY = 'holiday'
INACTIVITY_TYPE_SICK = 'sick'
INACTIVITY_TYPE_ONLEAVE = 'onleave'
INACTIVITY_TYPE_APPOINTMENT = 'appointment'
TYPES_ACTIVE = (
(ACTIVITY_TYPE_UNASSIGNED, _(u"unassigned")),
(ACTIVITY_TYPE_WORKING, _(u"working")),
(ACTIVITY_TYPE_BREAK, _(u"on break")),
(ACTIVITY_TYPE_TRIP, _(u"business trip")),
)
TYPES_INACTIVE = (
(INACTIVITY_TYPE_VACATION, _(u"on vacation")),
(INACTIVITY_TYPE_HOLIDAY, _(u"public holiday")),
(INACTIVITY_TYPE_SICK, _(u"sick")),
(INACTIVITY_TYPE_ONLEAVE, _(u"on leave")),
(INACTIVITY_TYPE_APPOINTMENT, _(u"official appointment")),
)
ACTIVITY_TYPES = (
(_(u"active time"), TYPES_ACTIVE),
(_(u"inactive time"), TYPES_INACTIVE),
)
[docs]class Activity(TimeStampedModel):
project = models.ForeignKey(
Project, verbose_name=_(u"project"), blank=True, null=True)
task = models.ForeignKey(
Task, verbose_name=_(u"task"), blank=True, null=True)
description = models.TextField(
verbose_name=_(u"description"), blank=True, null=True)
activity_type = models.CharField(
verbose_name=_(u"accounting type"), choices=ACTIVITY_TYPES,
max_length=20, default=ACTIVITY_TYPE_UNASSIGNED, db_index=True)
start = models.DateTimeField(
verbose_name=_(u"start"), db_index=True,
default=datetime.datetime.now())
end = models.DateTimeField(
verbose_name=_(u"end"), db_index=True)
duration = models.IntegerField(
verbose_name=_("duration in days"), blank=True, null=True, default=0)
tags = models.ManyToManyField(
Tag, verbose_name=_(u"tags"), blank=True, null=True)
locked = models.BooleanField(
verbose_name=_(u"locked"), db_index=True, default=False)
class Meta:
app_label = 'sandglass'
__all__ = ('Activity',)