Пример #1
0
class InterpretationsLayer(object):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()
        self.root_interp_label = None

    def preprocess_root(self, root):
        """Store the label for the root node ('s interpretation) for later
        use. We'll try to fetch it when we need a slide-down interp to cache
        it for future interps. Don't do this if the cache isn't set up or if
        we are processing an interp (which therefore has no interps)."""
        cache = get_cache('api_cache')
        if (root['node_type'] != 'interp'
                and not isinstance(cache, DummyCache)):
            self.root_interp_label = '-'.join(root['label'] + ['Interp'])

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {
                'interps': [],
                'for_markup_id':
                text_index,
                'for_label':
                label_to_text(text_index.split('-'), include_section=False)
            }
            #   Force caching of a few nodes up -- should prevent a request
            #   per interpretation if caching is on
            if self.root_interp_label:
                generator.generator.get_tree_paragraph(self.root_interp_label,
                                                       self.version)
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                partial_view = views.partial_interp.PartialInterpView.as_view(
                    inline=True)
                request = HttpRequest()
                request.GET['layers'] = 'terms,internal,keyterms,paragraph'
                request.method = 'GET'
                response = partial_view(request,
                                        label_id=reference,
                                        version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            return 'interp', context
Пример #2
0
class InterpretationsLayer(LayerBase):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'
    data_source = 'interpretations'
    layer_type = LayerBase.PARAGRAPH

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()
        self.root_interp_label = None
        self.partial_view = None

    def preprocess_root(self, root):
        """The root label will allow us to use a single set of layer
        appliers and grab all interp data at once."""
        self.root_interp_label = '-'.join(root['label'] + ['Interp'])
        view_class = views.partial_interp.PartialInterpView
        self.partial_view = view_class.as_view(inline=True,
                                               appliers=view_class.mk_appliers(
                                                   self.root_interp_label,
                                                   self.version))

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {
                'interps': [],
                'for_markup_id':
                text_index,
                'for_label':
                label_to_text(text_index.split('-'), include_section=False)
            }
            #   Force caching of a few nodes up -- should prevent a request
            #   per interpretation if caching is on
            generator.generator.get_tree_paragraph(self.root_interp_label,
                                                   self.version)
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                request = HttpRequest()
                request.method = 'GET'
                response = self.partial_view(request,
                                             label_id=reference,
                                             version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            return 'interp', context
Пример #3
0
class InterpretationsLayer(object):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()
        self.root_interp_label = None

    def preprocess_root(self, root):
        """Store the label for the root node ('s interpretation) for later
        use. We'll try to fetch it when we need a slide-down interp to cache
        it for future interps. Don't do this if the cache isn't set up or if
        we are processing an interp (which therefore has no interps)."""
        cache = get_cache('api_cache')
        if (root['node_type'] != 'interp'
                and not isinstance(cache, DummyCache)):
            self.root_interp_label = '-'.join(root['label'] + ['Interp'])

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {'interps': [],
                       'for_markup_id': text_index,
                       'for_label': label_to_text(text_index.split('-'),
                                                  include_section=False)}
            #   Force caching of a few nodes up -- should prevent a request
            #   per interpretation if caching is on
            if self.root_interp_label:
                generator.generator.get_tree_paragraph(
                        self.root_interp_label, self.version)
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                partial_view = views.partial_interp.PartialInterpView.as_view(
                    inline=True)
                request = HttpRequest()
                request.GET['layers'] = 'terms,internal,keyterms,paragraph'
                request.method = 'GET'
                response = partial_view(request, label_id=reference,
                                        version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            return 'interp', context
Пример #4
0
class InterpretationsLayer(ParagraphLayer):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'
    data_source = 'interpretations'

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()
        self.root_interp_label = None
        self.partial_view = None

    def preprocess_root(self, root):
        """The root label will allow us to use a single set of layer
        appliers and grab all interp data at once."""
        self.root_interp_label = '-'.join(root['label'] + ['Interp'])
        view_class = views.partial_interp.PartialInterpView
        self.partial_view = view_class.as_view(
            inline=True, layers=view_class.mk_layers(
                self.root_interp_label, self.version))

    def attach_metadata(self, node):
        """Return a pair of field-name + interpretation if one applies."""
        text_index = node['label_id']
        if text_index in self.layer and self.layer[text_index]:
            context = {'interps': [],
                       'for_markup_id': text_index,
                       'for_label': label_to_text(text_index.split('-'),
                                                  include_section=False)}
            #   Force caching of a few nodes up -- should prevent a request
            #   per interpretation if caching is on
            generator.generator.get_tree_paragraph(
                self.root_interp_label, self.version)
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                request = HttpRequest()
                request.method = 'GET'
                response = self.partial_view(request, label_id=reference,
                                             version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            node['interp'] = context
Пример #5
0
class InterpretationsLayer(LayerBase):
    """Fetches the (rendered) interpretation for this node, if available"""

    shorthand = "interp"
    data_source = "interpretations"
    layer_type = LayerBase.PARAGRAPH

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()
        self.root_interp_label = None
        self.partial_view = None

    def preprocess_root(self, root):
        """The root label will allow us to use a single set of layer
        appliers and grab all interp data at once."""
        self.root_interp_label = "-".join(root["label"] + ["Interp"])
        view_class = views.partial_interp.PartialInterpView
        self.partial_view = view_class.as_view(
            inline=True, appliers=view_class.mk_appliers(self.root_interp_label, self.version)
        )

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {
                "interps": [],
                "for_markup_id": text_index,
                "for_label": label_to_text(text_index.split("-"), include_section=False),
            }
            #   Force caching of a few nodes up -- should prevent a request
            #   per interpretation if caching is on
            generator.generator.get_tree_paragraph(self.root_interp_label, self.version)
            for layer_element in self.layer[text_index]:
                reference = layer_element["reference"]

                request = HttpRequest()
                request.method = "GET"
                response = self.partial_view(request, label_id=reference, version=self.version)
                response.render()

                interp = {"label_id": reference, "markup": response.content}

                ref_parts = reference.split("-")
                interp["section_id"] = self.section_url.interp(ref_parts, self.version)

                context["interps"].append(interp)

            return "interp", context
Пример #6
0
class InterpretationsLayer(object):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {
                'interps': [],
                'for_markup_id':
                text_index,
                'for_label':
                label_to_text(text_index.split('-'), include_section=False)
            }
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                partial_view = views.partial_interp.PartialInterpView.as_view(
                    inline=True)
                request = HttpRequest()
                request.GET['layers'] = 'terms,internal,keyterms,paragraph'
                request.method = 'GET'
                response = partial_view(request,
                                        label_id=reference,
                                        version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            return 'interp', context
class InterpretationsLayer(object):
    """Fetches the (rendered) interpretation for this node, if available"""
    shorthand = 'interp'

    def __init__(self, layer, version=None):
        self.layer = layer
        self.version = version
        self.section_url = SectionUrl()

    def apply_layer(self, text_index):
        """Return a pair of field-name + interpretation if one applies."""
        if text_index in self.layer and self.layer[text_index]:
            context = {'interps': [],
                       'for_markup_id': text_index,
                       'for_label': label_to_text(text_index.split('-'),
                                                  include_section=False)}
            for layer_element in self.layer[text_index]:
                reference = layer_element['reference']

                partial_view = views.partial_interp.PartialInterpView.as_view(
                    inline=True)
                request = HttpRequest()
                request.GET['layers'] = 'terms,internal,keyterms,paragraph'
                request.method = 'GET'
                response = partial_view(request, label_id=reference,
                                        version=self.version)
                response.render()

                interp = {
                    'label_id': reference,
                    'markup': response.content,
                }

                ref_parts = reference.split('-')
                interp['section_id'] = self.section_url.interp(
                    ref_parts, self.version)

                context['interps'].append(interp)

            return 'interp', context