Changeset b24d72e in flexoentity for flexoentity/flexo_entity.py
- Timestamp:
- 11/21/25 11:01:43 (8 weeks ago)
- Branches:
- master
- Children:
- a475496
- Parents:
- 9592936
- File:
-
- 1 edited
-
flexoentity/flexo_entity.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
flexoentity/flexo_entity.py
r9592936 rb24d72e 205 205 @classmethod 206 206 def with_domain_id(cls, domain_id: str, **kwargs): 207 from .domain_manager import DomainManager207 # from .domain_manager import DomainManager 208 208 entity_type = getattr(cls, "ENTITY_TYPE", None) 209 209 if not entity_type: 210 210 raise ValueError(f"{cls.__name__} must define ENTITY_TYPE") 211 211 212 if entity_type == EntityType.DOMAIN:213 DomainManager.create(domain_id=domain_id,214 fullname=kwargs.get("fullname", ""),215 description=kwargs.get("description", ""))216 else:212 #if entity_type == EntityType.DOMAIN: 213 # DomainManager.create(domain_id=domain_id, 214 # fullname=kwargs.get("fullname", ""), 215 # description=kwargs.get("description", "")) 216 #else: 217 217 # require that this domain already exists 218 if domain_id not in DomainManager.all_domain_ids():219 raise ValueError(220 f"Domain '{domain_id}' does not exist. "221 f"Create it first via Domain.with_domain_id(...)."222 )218 # if domain_id not in DomainManager.all_domain_ids(): 219 # raise ValueError( 220 # f"Domain '{domain_id}' does not exist. " 221 # f"Create it first via Domain.with_domain_id(...)." 222 # ) 223 223 224 224 flexo_id = FlexOID.safe_generate( … … 235 235 236 236 def __post_init__(self): 237 """238 FINAL LOGIC:239 - If flexo_id exists → restore domain_id via DomainManager.240 - If flexo_id missing → create via safe_generate.241 - Domain must always match flexo_id.domain.242 """243 237 if not self._in_factory: 244 238 raise RuntimeError( 245 f"{self.__class__.__name__} must be created via with_domain_id()"246 f" or from_dict(), not via direct construction."239 f"{self.__class__.__name__} must be created via " 240 f"with_domain_id() or from_dict()." 247 241 ) 248 # Step 1: If flexo_id exists, restore canonical domain 249 if self.flexo_id: 250 return 251 # Step 2: flexo_id missing → generate one 252 entity_type = getattr(self.__class__, "ENTITY_TYPE", None) 253 if not entity_type: 254 raise ValueError(f"{self.__class__.__name__} must define ENTITY_TYPE") 255 256 if not self.domain_id: 257 raise ValueError( 258 f"{self.__class__.__name__} created without domain; " 259 f"use {self.__class__.__name__}.with_domain_id(domain=...) or pass domain explicitly." 242 243 if not self.flexo_id: 244 raise RuntimeError( 245 f"{self.__class__.__name__} created without flexo_id. " 246 f"Factory must assign it before __post_init__." 260 247 ) 261 248 262 # Create identity 263 self.flexo_id = FlexOID.safe_generate( 264 domain_id=self.domain_id, 265 entity_type=entity_type.value, 266 state=EntityState.DRAFT.value, 267 text=self.text_seed, 268 version=1, 269 ) 270 271 # Compute fingerprint 272 self.fingerprint = self._compute_fingerprint() 249 if not self.fingerprint: 250 self.fingerprint = self._compute_fingerprint() 273 251 274 252 def __str__(self): … … 282 260 return { 283 261 "flexo_id": str(self.flexo_id), 284 "domain_id": self. domain_id,262 "domain_id": self.flexo_id.domain_id, 285 263 "fingerprint": self.fingerprint, 286 264 "origin": self.origin, … … 359 337 raise ValueError( 360 338 f"Illegal state transition: {self.state.name} → {target_state.name}. " 361 f"Allowed: {', '.join([each.name for each in self.allowed_transitions()]) or 'none'}"362 339 ) 363 340 … … 434 411 raise ValueError( 435 412 f"Illegal state transition: {self.state.name} → PUBLISHED. " 436 f"Allowed: {', '.join([each.name for each in self.allowed_transitions()]) or 'none'}"437 413 ) 438 414 … … 451 427 def obsolete(self): 452 428 """I mark myself as obsolete""" 453 allowed = self.allowed_transitions()454 429 if EntityState.OBSOLETE not in self.allowed_transitions(): 455 430 raise ValueError( 456 431 f"Illegal state transition: {self.state.name} -> OBSOLETE. " 457 f"Allowed: {', '.join([each.name for each in self.allowed_transitions()]) or 'none'}"458 432 ) 459 433 if self.state != EntityState.OBSOLETE:
Note:
See TracChangeset
for help on using the changeset viewer.
