You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
50 lines
1.6 KiB
# coding=utf-8
|
|
from __future__ import unicode_literals
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from django.db import models
|
|
from django.conf import settings
|
|
|
|
from devapp.models import Device
|
|
|
|
|
|
TASK_PRIORITIES = (
|
|
(b'A', u'Высший'),
|
|
(b'B', u'Выше среднего'),
|
|
(b'C', u'Средний'),
|
|
(b'D', u'Ниже среднего'),
|
|
(b'E', u'Низкий')
|
|
)
|
|
|
|
TASK_STATES = (
|
|
(b'S', u'Новая'),
|
|
(b'C', u'На выполнении'),
|
|
(b'F', u'Выполнена')
|
|
)
|
|
|
|
|
|
class Task(models.Model):
|
|
descr = models.CharField(max_length=128)
|
|
recipient = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')
|
|
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')
|
|
device = models.ForeignKey(Device, related_name='dev')
|
|
priority = models.CharField(max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0])
|
|
out_date = models.DateField(null=True, blank=True, default=datetime.now() + timedelta(days=7))
|
|
time_of_create = models.DateTimeField(auto_now_add=True)
|
|
state = models.CharField(max_length=1, choices=TASK_STATES, default=TASK_STATES[0][0])
|
|
attachment = models.ImageField(upload_to='task_attachments/%Y.%m.%d', blank=True, null=True)
|
|
|
|
def __unicode__(self):
|
|
return self.descr
|
|
|
|
class Meta:
|
|
db_table = 'task'
|
|
ordering = ('-id',)
|
|
|
|
def finish(self, current_user):
|
|
self.state = 'F' # Выполнена
|
|
self.out_date = datetime.now() # Время завершения
|
|
|
|
def begin(self, current_user):
|
|
self.state = 'C' # Начата
|