Skip to content

Commit

Permalink
do link_terms_in_provision rather
Browse files Browse the repository at this point in the history
  • Loading branch information
goose-life committed Jan 16, 2025
1 parent d0bb190 commit 2ea0191
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
6 changes: 2 additions & 4 deletions indigo/analysis/terms/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,12 @@ def find_terms(self, doc):
self.find_term_references(doc, terms)
self.renumber_terms(doc)

def fix_terms_in_document(self, document):
""" Do everything other than guessing at defined terms in a Document.
Run this before saving an updated document when a portion was edited separately.
def link_terms_in_provision(self, document):
""" Passively link defined terms in a Document while editing in provision mode.
"""
root = etree.fromstring(document.doc.to_xml(encoding='unicode'))
self.setup(root)
terms = self.find_definitions(root)
self.add_terms_to_references(root, terms)
self.find_term_references(root, terms)
self.renumber_terms(root)
document.content = etree.tostring(root, encoding='unicode')
Expand Down
3 changes: 0 additions & 3 deletions indigo_api/models/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -566,9 +566,6 @@ def update_provision_xml(self, provision_eid, provision_xml):
generator = XmlGenerator(self.frbr_uri)
generator.generate_eids(self.doc.root)
rewrite_all_attachment_work_components(self.doc)
finder = plugins.for_document('terms', self)
if finder:
finder.fix_terms_in_document(self)
self.reset_xml(self.doc.to_xml(encoding='unicode'), from_model=True)

def _make_doc(self, xml):
Expand Down
16 changes: 10 additions & 6 deletions indigo_api/views/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -365,15 +365,16 @@ def post(self, request, document_id):


class ManipulateXmlView(DocumentResourceView, APIView):
serializer = None
use_full_xml = False

def post(self, request, document_id):
serializer = DocumentAPISerializer(instance=self.document, data=self.request.data)
serializer.use_full_xml = self.use_full_xml
serializer.is_valid(raise_exception=True)
serializer.update_document()
self.serializer = DocumentAPISerializer(instance=self.document, data=self.request.data)
self.serializer.use_full_xml = self.use_full_xml
self.serializer.is_valid(raise_exception=True)
self.serializer.update_document()
self.manipulate_xml()
return Response({'xml': serializer.updated_xml()})
return Response({'xml': self.serializer.updated_xml()})

def manipulate_xml(self):
raise NotImplementedError()
Expand All @@ -387,7 +388,10 @@ class LinkTermsView(ManipulateXmlView):
def manipulate_xml(self):
finder = plugins.for_document('terms', self.document)
if finder:
finder.find_terms_in_document(self.document)
if self.serializer.validated_data.get('provision_eid'):
finder.link_terms_in_provision(self.document)
else:
finder.find_terms_in_document(self.document)


class LinkReferencesView(ManipulateXmlView):
Expand Down

0 comments on commit 2ea0191

Please sign in to comment.