Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
15 lines
1.4 KiB
Python
15 lines
1.4 KiB
Python
"""Fixed READ ONLY preflight for one proposed catalogue registration; never writes."""
|
|
import os,json,datetime,hashlib
|
|
from pathlib import Path
|
|
from user_engine.domain import Application,ApplicationBinding,ProfileScope,ProjectionType
|
|
from user_engine.store_records import store_record_for
|
|
from user_engine.adapters.postgres import PostgresUserEngineStore
|
|
import psycopg
|
|
application=Application('informed-decision','Informed Decision','informed-decision',allowed_profile_scopes=(ProfileScope.GLOBAL,),allowed_projection_types=(ProjectionType.APPLICATION_RUNTIME,))
|
|
binding=ApplicationBinding('informed-decision',oidc_client_id='informed-decision-approver',protected_system_id='informed-decision',catalog_namespaces=(),event_source=None,deployment_ref=None)
|
|
out={'fixed_application_id':'informed-decision','read_only':True,'native_mutation':False}
|
|
try:
|
|
with psycopg.connect(os.environ['USER_ENGINE_DATABASE_URL']) as conn:
|
|
conn.execute('SET TRANSACTION READ ONLY');store=PostgresUserEngineStore(conn);a=store.application('informed-decision');b=store.binding('informed-decision');out.update(application_absent=a is None,binding_absent=b is None,exact_match=a==application and b==binding,partial_or_conflicting=not ((a is None and b is None) or (a==application and b==binding)));conn.rollback()
|
|
except Exception as e:out['exception_class']=type(e).__name__
|
|
print(json.dumps(out,sort_keys=True))
|