rookeries/rookeries/tasks/models.py

70 lines
1.6 KiB
Python

# TODO Organize and comment.
from sqlalchemy import Column, Integer, ForeignKey, String, DateTime
from sqlalchemy.orm import relationship
from rookeries.core.database import Base
from rookeries.gifts.sqlalchemy_enums import DeclEnum
# TODO Add in revision control or change tracking system.
class TaskUrgency(DeclEnum):
urgent = 1, "Urgent"
high = 2, "High"
medium = 3, "Medium"
normal = 4, "Normal"
low = 5, "Low"
class TaskValue(DeclEnum):
urgent = 1, "Essential"
high = 2, "Important"
normal = 3, "Normal"
low = 4, "Low"
nice_to_have = 5, "Nice to Have"
class TaskState(DeclEnum):
not_started = 1, "Not Started"
in_progress = 2, "In Progress"
on_hold = 3, "On Hold"
cancelled = 4, "Cancelled"
done = 5, "Done"
class Task(Base):
# TODO Comment
__tablename__ = "task"
id = Column(Integer, primary_key=True)
project_id = Column(Integer, ForeignKey("project.id"))
name = Column(String(64))
description = Column(String(512))
urgency = Column(TaskUrgency.db_type())
importance = Column(TaskValue.db_type())
state = Column(TaskState.db_value())
created_date = Column(DateTime)
due_date = Column(DateTime)
class Project(Base):
# TODO Comment
__tablename__ = "project"
id = Column(Integer, primary_key=True)
name = Column(String(64))
description = Column(String(512))
user_id = Column(Integer, ForeignKey("user.id"))
user = relationship("User")
created_date = Column(DateTime)
due_date = Column(DateTime)
tasks = relationship("Task", backref="Project")