70 lines
1.6 KiB
Python
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")
|