diff --git a/webhook_to_fedora_messaging/endpoints/models/service.py b/webhook_to_fedora_messaging/endpoints/models/service.py index aac2839..414ac2f 100644 --- a/webhook_to_fedora_messaging/endpoints/models/service.py +++ b/webhook_to_fedora_messaging/endpoints/models/service.py @@ -27,7 +27,7 @@ class ServiceBase(BaseModel, ABC): uuid: str name: str type: ServiceType - desc: str + desc: str | None = None token: str creation_date: datetime @@ -52,7 +52,7 @@ class ServiceRequestMain(BaseModel): model_config = ConfigDict(extra="forbid") name: str type: ServiceType - desc: Optional[str] + desc: Optional[str] = None class ServiceRequest(BaseModel): @@ -61,10 +61,10 @@ class ServiceRequest(BaseModel): class ServiceUpdateMain(BaseModel): model_config = ConfigDict(extra="forbid") - name: Optional[str] = "" - type: Optional[str] = "" - desc: Optional[str] = "" - username: Optional[str] = "" + name: Optional[str] = None + type: Optional[str] = None + desc: Optional[str] = None + username: Optional[str] = None class ServiceUpdate(BaseModel): diff --git a/webhook_to_fedora_messaging/endpoints/service.py b/webhook_to_fedora_messaging/endpoints/service.py index cc533ae..1ad8672 100644 --- a/webhook_to_fedora_messaging/endpoints/service.py +++ b/webhook_to_fedora_messaging/endpoints/service.py @@ -111,7 +111,7 @@ async def update_service( Update the service with the specified UUID """ for attr in ("name", "type", "desc"): - data = getattr(body.data, attr).strip() + data = getattr(body.data, attr) if not data: continue setattr(service, attr, data) diff --git a/webhook_to_fedora_messaging/migrations/versions/4f1f49d72fa8_service_desc_can_be_null.py b/webhook_to_fedora_messaging/migrations/versions/4f1f49d72fa8_service_desc_can_be_null.py new file mode 100644 index 0000000..8a7f8a0 --- /dev/null +++ b/webhook_to_fedora_messaging/migrations/versions/4f1f49d72fa8_service_desc_can_be_null.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Contributors to the Fedora Project +# +# SPDX-License-Identifier: GPL-3.0-or-later + +"""Service.desc can be null + +Revision ID: 4f1f49d72fa8 +Revises: 6c01198723a8 +Create Date: 2024-08-22 11:29:19.880261 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy_helpers.manager import is_sqlite + + +# revision identifiers, used by Alembic. +revision = "4f1f49d72fa8" +down_revision = "6c01198723a8" +branch_labels = None +depends_on = None + + +def upgrade(): + connection = op.get_bind() + if is_sqlite(connection): + connection.execute(sa.text("PRAGMA foreign_keys=OFF")) + with op.batch_alter_table("services") as batch_op: + batch_op.alter_column("desc", existing_type=sa.TEXT(), nullable=True) + + +def downgrade(): + connection = op.get_bind() + if is_sqlite(connection): + connection.execute(sa.text("PRAGMA foreign_keys=OFF")) + with op.batch_alter_table("services") as batch_op: + batch_op.alter_column("desc", existing_type=sa.TEXT(), nullable=False) diff --git a/webhook_to_fedora_messaging/models/service.py b/webhook_to_fedora_messaging/models/service.py index 5957960..9ab646d 100644 --- a/webhook_to_fedora_messaging/models/service.py +++ b/webhook_to_fedora_messaging/models/service.py @@ -21,7 +21,7 @@ class Service(Base, UUIDCreatableMixin, CreatableMixin): token = Column(UnicodeText, unique=False, nullable=False, default=uuid4().hex) name = Column(UnicodeText, nullable=False) type = Column(UnicodeText, nullable=False) - desc = Column(UnicodeText, nullable=False) + desc = Column(UnicodeText, nullable=True) disabled = Column(Boolean, nullable=False, default=False) sent = Column(Integer, nullable=False, default=0) users = relationship("User", secondary=owners_table, back_populates="services")