Source code for sandglass.models.activity

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',)

Project Versions