def serialize_project(self, project: Project) -> dict: return remove_nones({ "id": project.project_id.project_id, "name": project.name, "status": project.status.value, "date_opened": serialize_datetime(project.date_opened), "date_closed": serialize_datetime(project.date_closed), "deadline": serialize_datetime(project.deadline), "hour_rate": serialize_money(project.hour_rate), "description": project.description, "goals_and_metrics": project.goals_and_metrics, "limitations_and_restrictions": project.limitations_and_restrictions, "files": self._files_serializer.serialize_files(project.files), "primary_color": project.primary_color, "secondary_color": project.secondary_color, })
def serialize_issue(self, issue: BoundIssue) -> dict: return remove_nones({ "id": issue.object_id.full_id, "name": issue.name, "status": issue.status.value, "type": issue.type.value, "priority": issue.priority.value, "date_opened": serialize_datetime(issue.date_opened), "date_closed": serialize_datetime(issue.date_closed), "deadline": serialize_datetime(issue.deadline), "description": issue.description, "external_type": issue.external_type, "estimated_duration": issue.estimated_duration, "files": self._files_serializer.serialize_files(issue.files), "links": self._links_serializer.serialize_links(issue.links), "tags": self._tags_serializer.serialize_tags(issue.tags), "tasks": self._tasks_serializer.serialize_tasks(issue.tasks), "hour_rate": serialize_money(issue.hour_rate) if issue.hour_rate else None, })
def test_remove_nones_flat(): before = { "A": "A", "B": None, "C": "", "D": 0, } after = { "A": "A", "C": "", "D": 0, } assert remove_nones(before) == after
def serialize_statistics(statistics: Statistics) -> dict: return remove_nones({ "progress": statistics.progress, "overall_progress": statistics.overall_progress, "estimated_duration": statistics.estimated_duration, "estimated_cost": serialize_money(statistics.estimated_cost), "burned_duration": statistics.burned_duration, "burned_cost": serialize_money(statistics.burned_cost), "burned_expenditures_cost": serialize_money(statistics.burned_expenditures_cost), })
def serialize_deliverable(deliverable: BoundDeliverable) -> dict: return remove_nones({ "id": deliverable.object_id.full_id, "name": deliverable.name, "status": deliverable.status.value, "date_opened": serialize_datetime(deliverable.date_opened), "date_closed": serialize_datetime(deliverable.date_closed), "deadline": serialize_datetime(deliverable.deadline), "description": deliverable.description, })
def serialize_expenditure(self, expenditure: BoundExpenditure): return remove_nones({ "id": expenditure.simple_id.simple_id, "name": expenditure.name, "description": expenditure.description, "date_opened": expenditure.date_opened, "date_closed": expenditure.date_closed, "deadline": expenditure.deadline, "cost": serialize_money(expenditure.cost), "status": expenditure.status.value, "type": expenditure.type.value, "files": self._files_serializer.serialize_files(expenditure.files) })
def test_remove_nones_nested(): before = { "A": "A", "B": None, "C": "", "D": 0, "E": { "A": "A", "B": None, "C": "", "D": 0, } } after = { "A": "A", "C": "", "D": 0, "E": { "A": "A", "C": "", "D": 0, } } assert remove_nones(before) == after
def test_remove_nones_empty(): assert remove_nones({}) == {}