/
Roman88
/
contact_manager
Обзор
Документация
Войти
/
Roman88
/
contact_manager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/models/task.py
77 строк
3 KB
Roman88
16-05
16 май 2026, 10:00
16 май 2026, 10:00
d98539b
Код
Авторство
О чём код?
import datetime from peewee import AutoField, CharField, TextField, DateField, DateTimeField, ForeignKeyField, Model from src.models.contact import Contact from src.connection.connect import db class Task(Model): # Статусы задач STATUS_NEW = 'new' STATUS_PROGRESS = 'progress' STATUS_DONE = 'done' STATUS_CHOICES = [ (STATUS_NEW, 'Новая'), (STATUS_PROGRESS, 'В работе'), (STATUS_DONE, 'Выполнена') ] # Приоритеты задач PRIORITY_LOW = 'low' PRIORITY_MEDIUM = 'medium' PRIORITY_HIGH = 'high' PRIORITY_CHOICES = [ (PRIORITY_LOW, 'Низкий'), (PRIORITY_MEDIUM, 'Средний'), (PRIORITY_HIGH, 'Высокий') ] id = AutoField(primary_key=True) title = CharField(max_length=200) description = TextField(null=True) # убран blank=True status = CharField(max_length=20, choices=STATUS_CHOICES, default=STATUS_NEW) priority = CharField(max_length=20, choices=PRIORITY_CHOICES, default=PRIORITY_MEDIUM) due_date = DateField() created_at = DateTimeField(default=datetime.datetime.now) contact = ForeignKeyField(Contact, backref='tasks', on_delete='CASCADE') class Meta: database = db table_name = 'tasks' def is_overdue(self): """Проверяет, просрочена ли задача""" if self.status == self.STATUS_DONE: return False return datetime.date.today() > self.due_date def get_status_display(self): """Возвращает читаемое название статуса""" status_dict = dict(self.STATUS_CHOICES) return status_dict.get(self.status, self.status) def get_priority_display(self): """Возвращает читаемое название приоритета""" priority_dict = dict(self.PRIORITY_CHOICES) return priority_dict.get(self.priority, self.priority) def complete(self): """Отмечает задачу как выполненную""" self.status = self.STATUS_DONE self.save() return True def start_progress(self): """Переводит задачу в статус 'В работе'""" if self.status == self.STATUS_NEW: self.status = self.STATUS_PROGRESS self.save() return True return False def __str__(self): return f"Task(id={self.id}, title='{self.title}', status='{self.get_status_display()}', priority='{self.get_priority_display()}', due_date={self.due_date})" def __repr__(self): return self.__str__()