Changeset c98728b in flexoentity
- Timestamp:
- 10/26/25 15:19:42 (3 months ago)
- Branches:
- master
- Children:
- e198832
- Parents:
- 37b5d11
- Files:
-
- 2 edited
-
README.md (modified) (1 diff)
-
flexoentity/flexo_entity.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
README.md
r37b5d11 rc98728b 151 151 "flexo_id": "AF-Q250101-9A4C2D@003S", 152 152 "signature": "1E3A9F2A8B7C4D11", 153 "created_at": "2025-10-20T11:08:26Z",154 "updated_at": "2025-10-20T11:12:44Z"155 153 } 156 154 #+END_SRC -
flexoentity/flexo_entity.py
r37b5d11 rc98728b 7 7 from enum import Enum, auto 8 8 from dataclasses import dataclass, field 9 from datetime import datetime , UTC9 from datetime import datetime 10 10 from typing import Optional 11 11 from abc import ABC, abstractmethod … … 248 248 if target_state == EntityState.OBSOLETE: 249 249 self.state = target_state 250 self.updated_at = datetime.now(UTC)251 250 return 252 251 … … 257 256 258 257 self.state = target_state 259 self.updated_at = datetime.now(UTC)260 258 261 259 # ─────────────────────────────────────────────────────────────── … … 274 272 """Increment version number on the ID.""" 275 273 self.flexo_id = FlexOID.next_version(self.flexo_id) 276 self.updated_at = datetime.now(UTC)277 274 278 275 def lineage(self, repo): … … 302 299 self.flexo_id = new_fid 303 300 self.state = EntityState.APPROVED 304 self.updated_at = datetime.now(UTC)305 301 return self 306 302 raise ValueError("Only drafts can be approved") … … 310 306 311 307 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 314 334 315 335 def obsolete(self): … … 327 347 ) 328 348 self.state = EntityState.DRAFT 329 self.updated_at = datetime.now(UTC)330 349 331 350 # ─────────────────────────────────────────────────────────────── … … 347 366 return ["APPROVED"] 348 367 case EntityState.APPROVED: 349 return ["APPROVED_AND_SIGNED", " OBSOLETE"]368 return ["APPROVED_AND_SIGNED", "PUBLISHED", "OBSOLETE"] 350 369 case EntityState.APPROVED_AND_SIGNED: 351 370 return ["PUBLISHED", "OBSOLETE"]
Note:
See TracChangeset
for help on using the changeset viewer.
