Skip to content

Commit

Permalink
sometimes rewrite eids on parse too (parseWithPyodide)
Browse files Browse the repository at this point in the history
  • Loading branch information
goose-life committed Feb 6, 2025
1 parent 53cb037 commit f557ac8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
4 changes: 2 additions & 2 deletions indigo_api/views/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,11 +358,11 @@ def check_rewrite_eids(self, xml, data):
if data.get('id_prefix') or not (provision_counters or eid_counter):
return xml

parser = AkomaNtosoParser(self.document.expression_uri, '')
parser = AkomaNtosoParser(self.document.expression_uri)
parser.generator.ids.counters = provision_counters
parser.generator.ids.eid_counter = eid_counter
xml = etree.fromstring(xml)
parser.generator.ids.rewrite_eid(xml, parser.eid_prefix)
parser.generator.ids.rewrite_eid(xml)
return etree.tostring(xml, encoding='unicode')


Expand Down
18 changes: 17 additions & 1 deletion indigo_app/static/javascript/indigo/views/bluebell.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class BluebellParser {
// python dependencies
this.packages = Indigo.pyodide_packages;
this.pyBootstrap = `
import json
from bluebell.parser import AkomaNtosoParser, ParseError
from cobalt import FrbrUri
from cobalt.akn import AKN_NAMESPACES, DEFAULT_VERSION
Expand Down Expand Up @@ -38,6 +39,16 @@ def parseBluebellText(text, frbr_uri, fragment, eid_prefix):
xml = etree.tostring(xml, encoding='unicode')
return False, xml
def rewriteEids(xml, frbr_uri, provision_counters, eid_counter):
# see indigo_api.views.documents.ParseView.check_rewrite_eids for context
frbr_uri = FrbrUri.parse(frbr_uri)
parser = AkomaNtosoParser(frbr_uri)
parser.generator.ids.counters = json.loads(provision_counters)
parser.generator.ids.eid_counter = json.loads(eid_counter)
xml = etree.fromstring(xml)
parser.generator.ids.rewrite_eid(xml)
return etree.tostring(xml, encoding='unicode')
`;
}

Expand Down Expand Up @@ -76,6 +87,12 @@ def parseBluebellText(text, frbr_uri, fragment, eid_prefix):
if (error) {
throw resp;
}
// in provision mode at the top level only, re-write the eids taking into account the injected counters
if (Indigo.Preloads.provisionEid && !eidPrefix) {
const provision_counters = JSON.stringify(Indigo.Preloads.provisionCounters);
const eid_counter = JSON.stringify(Indigo.Preloads.eidCounter);
return this.pyodide.globals.get('rewriteEids')(resp, frbr_uri, provision_counters, eid_counter);
}
return resp;
}

Expand All @@ -95,7 +112,6 @@ def parseBluebellText(text, frbr_uri, fragment, eid_prefix):
if (Indigo.Preloads.provisionEid) {
body.provision_counters = JSON.parse(JSON.stringify(Indigo.Preloads.provisionCounters));
body.eid_counter = JSON.parse(JSON.stringify(Indigo.Preloads.eidCounter));
body.attachment_counters = JSON.parse(JSON.stringify(Indigo.Preloads.attachmentCounters));
}

const resp = await fetch(this.url, {
Expand Down

0 comments on commit f557ac8

Please sign in to comment.