| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from dataclasses import dataclass, field
- from datetime import datetime
- from .mixins import SchemaMixin, DbMixin
- from .milestones import Milestone
- from .sprints import Sprint
- @dataclass(repr=False)
- class Item(SchemaMixin, DbMixin):
- document: dict
- name: str
- description: str
- category: str
- milestone_id: int = None
- milestone: Milestone = field(init=False)
- sprint_id: int = None
- sprint: Sprint = field(init=False)
- uuid: str = None
- date_added: datetime = None
- date_expected: datetime = None
- date_started: datetime = None
- schema_yaml = """
- name:
- required: true
- type: string
- is_unique_with:
- table: sprint
- fields:
- - milestone_id
- - sprint_id
- description:
- required: true
- type: string
- category:
- required: true
- type: string
- allowed:
- - feature
- - limitation
- - constraint
- - unknown
- milestone_id:
- is_fk: milestone
- excludes: sprint_id
- required: true
- sprint_id:
- is_fk: sprint
- excludes: milestone_id
- required: true
- date_added:
- type: datetime
- default_setter: utcnow
- date_expected:
- type: date
- date_started:
- type: date
- """
- def __post_init__(self):
- self.milestone = Milestone.fetch(self.milestone_id) if self.milestone_id else None
- self.sprint = Sprint.fetch(self.sprint_id) if self.sprint_id else None
- @classmethod
- def get(cls, document):
- category_to_kls = {
- 'feature': Feature,
- 'limitation': Limitation,
- 'constraint': Constraint,
- 'unknown': Unknown,
- }
- kls = category_to_kls[document.get('category')]
- return kls(document=document, **document)
- def __repr__(self):
- return "{}(name='{}', milestone='{}')".format(self.__class__.__qualname__, self.name, repr(self.milestone))
- def __terminal__(self):
- return f"{self.__class__.__qualname__} : {self.name} ({self.sprint or self.milestone})"
- class Limitation(Item):
- ...
- class Feature(Item):
- ...
- class Constraint(Item):
- ...
- class Unknown(Item):
- ...
|