Changeset c98728b in flexoentity


Ignore:
Timestamp:
10/26/25 15:19:42 (3 months ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
master
Children:
e198832
Parents:
37b5d11
Message:

remove unnecessary timestamp support from base class

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • README.md

    r37b5d11 rc98728b  
    151151  "flexo_id": "AF-Q250101-9A4C2D@003S",
    152152  "signature": "1E3A9F2A8B7C4D11",
    153   "created_at": "2025-10-20T11:08:26Z",
    154   "updated_at": "2025-10-20T11:12:44Z"
    155153}
    156154#+END_SRC
  • flexoentity/flexo_entity.py

    r37b5d11 rc98728b  
    77from enum import Enum, auto
    88from dataclasses import dataclass, field
    9 from datetime import datetime, UTC
     9from datetime import datetime
    1010from typing import Optional
    1111from abc import ABC, abstractmethod
     
    248248    if target_state == EntityState.OBSOLETE:
    249249        self.state = target_state
    250         self.updated_at = datetime.now(UTC)
    251250        return
    252251
     
    257256
    258257    self.state = target_state
    259     self.updated_at = datetime.now(UTC)
    260258
    261259    # ───────────────────────────────────────────────────────────────
     
    274272        """Increment version number on the ID."""
    275273        self.flexo_id = FlexOID.next_version(self.flexo_id)
    276         self.updated_at = datetime.now(UTC)
    277274
    278275    def lineage(self, repo):
     
    302299            self.flexo_id = new_fid
    303300            self.state = EntityState.APPROVED
    304             self.updated_at = datetime.now(UTC)
    305301            return self
    306302        raise ValueError("Only drafts can be approved")
     
    310306
    311307    def publish(self):
    312         if self.state == EntityState.APPROVED_AND_SIGNED:
    313             self._transition(EntityState.PUBLISHED)
     308        """
     309    Move     from APPROVED or APPROVED_AND_SIGNED to PUBLISHED.
     310       
     311        Uses allowed_transitions() to verify legality,
     312        then performs a version bump and lineage update.
     313        """
     314        allowed = self.allowed_transitions()
     315        if "PUBLISHED" not in allowed:
     316            raise ValueError(
     317                f"Illegal state transition: {self.state.name} → PUBLISHED. "
     318                f"Allowed: {', '.join(allowed) or 'none'}"
     319            )
     320
     321        new_version = self.flexo_id.version + 1
     322        new_fid = FlexOID.safe_generate(
     323            self.domain_code(),
     324            self.etype.short(),
     325            EntityState.PUBLISHED.short(),
     326            self.text_seed,
     327            version=new_version
     328        )
     329
     330        self.previous_id = self.flexo_id
     331        self.flexo_id = new_fid
     332        self.state = EntityState.PUBLISHED
     333        return self
    314334
    315335    def obsolete(self):
     
    327347        )
    328348        self.state = EntityState.DRAFT
    329         self.updated_at = datetime.now(UTC)
    330349
    331350    # ───────────────────────────────────────────────────────────────
     
    347366                return ["APPROVED"]
    348367            case EntityState.APPROVED:
    349                 return ["APPROVED_AND_SIGNED", "OBSOLETE"]
     368                return ["APPROVED_AND_SIGNED", "PUBLISHED", "OBSOLETE"]
    350369            case EntityState.APPROVED_AND_SIGNED:
    351370                return ["PUBLISHED", "OBSOLETE"]
Note: See TracChangeset for help on using the changeset viewer.