Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions alembic/versions/0fd01ae4d4fe_changed_project_description_to_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""changed project description to opportunity statement

Revision ID: 0fd01ae4d4fe
Revises: db0f6ffedd37
Create Date: 2025-10-22 09:25:22.027824

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '0fd01ae4d4fe'
down_revision: Union[str, None] = 'db0f6ffedd37'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('project', sa.Column('opportunityStatement', sa.String(length=600), nullable=False, server_default=''))
op.drop_column('project', 'description')
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('project', sa.Column('description', sa.VARCHAR(length=600, collation='SQL_Latin1_General_CP1_CI_AS'), autoincrement=False, nullable=False))
op.drop_column('project', 'opportunityStatement')
# ### end Alembic commands ###
10 changes: 5 additions & 5 deletions src/dtos/project_dtos.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
class ProjectDto(BaseModel):
id: uuid.UUID = Field(default_factory=uuid.uuid4)
name: Annotated[str, Field(max_length=DatabaseConstants.MAX_SHORT_STRING_LENGTH.value)] = ""
description: Annotated[
opportunityStatement: Annotated[
str, Field(max_length=DatabaseConstants.MAX_LONG_STRING_LENGTH.value)
] = ""
public: bool = False
Expand Down Expand Up @@ -56,7 +56,7 @@ def from_create_to_entity(dto: ProjectCreateDto, user_id: int) -> Project:
return Project(
id=dto.id,
name=dto.name,
description=dto.description,
opportunityStatement=dto.opportunityStatement,
user_id=user_id,
public=dto.public,
end_date=dto.end_date,
Expand All @@ -69,7 +69,7 @@ def to_outgoing_dto(entity: Project) -> ProjectOutgoingDto:
return ProjectOutgoingDto(
id=entity.id,
name=entity.name,
description=entity.description,
opportunityStatement=entity.opportunityStatement,
public=entity.public,
end_date=entity.end_date,
users=ProjectRoleMapper.to_outgoing_dtos(entity.project_role),
Expand All @@ -81,7 +81,7 @@ def to_populated_dto(entity: Project) -> PopulatedProjectDto:
return PopulatedProjectDto(
id=entity.id,
name=entity.name,
description=entity.description,
opportunityStatement=entity.opportunityStatement,
public=entity.public,
end_date=entity.end_date,
users=ProjectRoleMapper.to_outgoing_dtos(entity.project_role),
Expand All @@ -93,7 +93,7 @@ def to_project_entity(dto: ProjectIncomingDto, user_id: int) -> Project:
return Project(
id=dto.id,
name=dto.name,
description=dto.description,
opportunityStatement=dto.opportunityStatement,
user_id=user_id,
public=dto.public,
end_date=dto.end_date,
Expand Down
10 changes: 3 additions & 7 deletions src/dtos/scenario_dtos.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
OpportunityMapper,
OpportunityViaProjectDto,
OpportunityIncomingDto,
OpportunityOutgoingDto,
)
from src.dtos.objective_dtos import (
ObjectiveMapper,
Expand All @@ -33,25 +32,24 @@ class ScenarioDto(BaseModel):

class ScenarioCreateViaProjectDto(ScenarioDto):
objectives: list[ObjectiveViaScenarioDto]
opportunities: list[OpportunityViaProjectDto]
opportunities: list[OpportunityViaProjectDto] = []


class ScenarioCreateDto(ScenarioDto):
project_id: uuid.UUID
objectives: list[ObjectiveViaScenarioDto]
opportunities: list[OpportunityViaProjectDto]
opportunities: list[OpportunityViaProjectDto] = []


class ScenarioIncomingDto(ScenarioDto):
project_id: uuid.UUID
objectives: list[ObjectiveIncomingDto]
opportunities: list[OpportunityIncomingDto]
opportunities: list[OpportunityIncomingDto] = []


class ScenarioOutgoingDto(ScenarioDto):
project_id: uuid.UUID
objectives: list[ObjectiveOutgoingDto]
opportunities: list[OpportunityOutgoingDto]


class PopulatedScenarioDto(ScenarioOutgoingDto):
Expand Down Expand Up @@ -95,7 +93,6 @@ def to_outgoing_dto(entity: Scenario) -> ScenarioOutgoingDto:
name=entity.name,
is_default=entity.is_default,
objectives=ObjectiveMapper.to_outgoing_dtos(entity.objectives),
opportunities=OpportunityMapper.to_outgoing_dtos(entity.opportunities),
)

@staticmethod
Expand All @@ -106,7 +103,6 @@ def to_populated_dto(entity: Scenario) -> PopulatedScenarioDto:
name=entity.name,
is_default=entity.is_default,
objectives=ObjectiveMapper.to_outgoing_dtos(entity.objectives),
opportunities=OpportunityMapper.to_outgoing_dtos(entity.opportunities),
issues=IssueMapper.to_outgoing_dtos(entity.issues),
edges=EdgeMapper.to_outgoing_dtos(entity.edges),
)
Expand Down
15 changes: 8 additions & 7 deletions src/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,21 @@
from sqlalchemy import DateTime
from datetime import timedelta


def default_endtime() -> datetime:
return datetime.now(timezone.utc) + timedelta(days=30)


class Project(Base, BaseEntity, BaseAuditableEntity):
__tablename__ = "project"

id: Mapped[uuid.UUID] = mapped_column(GUID(), primary_key=True)
name: Mapped[str] = mapped_column(
String(DatabaseConstants.MAX_SHORT_STRING_LENGTH.value), index=True
)
description: Mapped[str] = mapped_column(String(DatabaseConstants.MAX_LONG_STRING_LENGTH.value))
opportunityStatement: Mapped[str] = mapped_column(
String(DatabaseConstants.MAX_LONG_STRING_LENGTH.value)
)

public: Mapped[bool] = mapped_column(Boolean, default=False)

Expand All @@ -41,15 +45,12 @@ class Project(Base, BaseEntity, BaseAuditableEntity):
cascade="all, delete-orphan",
)

end_date: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=default_endtime
)
end_date: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=default_endtime)

def __init__(
self,
id: uuid.UUID,
description: str,
opportunityStatement: str,
name: str,
project_role: list["ProjectRole"],
user_id: int,
Expand All @@ -64,7 +65,7 @@ def __init__(

self.project_role = project_role
self.name = name
self.description = description
self.opportunityStatement = opportunityStatement
self.updated_by_id = user_id
self.public = public
self.end_date = end_date
Expand Down
8 changes: 4 additions & 4 deletions src/seed_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ async def create_single_project_with_scenario(conn: AsyncConnection):
project = Project(
id=project_id,
name="Test Project 1",
description="A test project with minimal data",
opportunityStatement="A test project with minimal data",
user_id=user.id,
project_role=[],
scenarios=None,
Expand Down Expand Up @@ -343,7 +343,7 @@ async def create_decision_tree_symmetry_DT_from_ID(conn: AsyncConnection):
project = Project(
id=project_id,
name="Test Project decision tree symmetry",
description="A test project with minimal data",
opportunityStatement="A test project with minimal data",
user_id=user.id,
project_role=[],
scenarios=None,
Expand Down Expand Up @@ -479,7 +479,7 @@ async def create_decision_tree_symmetry_DT(conn: AsyncConnection):
project = Project(
id=project_uuid,
name="Test Project decision tree symmetry",
description="A test project with minimal data",
opportunityStatement="A test project with minimal data",
user_id=user.id,
project_role=[],
scenarios=None,
Expand Down Expand Up @@ -654,7 +654,7 @@ async def seed_database(
project = Project(
id=project_id,
name=str(uuid4()),
description=str(uuid4()),
opportunityStatement=str(uuid4()),
user_id=user.id,
scenarios=None,
project_role=[],
Expand Down