# 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' # Начата