def render(self, objects, title_force_uppercase=False, output_encoding=None, msdos_eol_style=False, omit_fields_mapping={}): """ Export a bunch of bibliographic entries in bibex format""" # This implementation here is completely bullshit from the # beginning. Why is there no interface and API for getting hold # of the exportable items? The iterator interface here sucks. # This method should also work with *single* bibliographic entries. #request = getattr(objects[0], 'REQUEST', None) #if request is None: request = TestRequest() # Adapt to IBibliography if necessary/possible # If not, it could be ok if `entries' can be iterated over anyway. objects = IBibliography(objects, objects) found = False if HAVE_CMFBIB_AT: if IBibliographicItem.providedBy(objects): entries = [objects] found = True if not found: try: # We want the values from a dictionary-ish/IBibliography object entries = objects.itervalues() except AttributeError: # Otherwise we just iterate over what is presumably something # sequence-ish. entries = iter(objects) rendered = [] for obj in entries: ref = queryAdapter(obj, interface=IBibliographicReference, name=self.__name__) if ref is None: # if there is no named adapter, get the default adapter # compatibility with older versions ref = IBibliographicReference(obj, None) if ref is None: continue # do rendering for entry view = getMultiAdapter((ref, request), name=self.view_name) omit_fields = omit_fields_mapping.get(ref.publication_type, []) bibtex_string = view.render(title_force_uppercase=title_force_uppercase, omit_fields=omit_fields ) rendered.append(bibtex_string) rendered = ''.join(rendered) if msdos_eol_style: rendered = rendered.replace('\n', '\r\n') return rendered
def render( self, objects, title_force_uppercase=False, output_encoding=None, msdos_eol_style=False, omit_fields_mapping={} ): """ Export a bunch of bibliographic entries in ref format""" request = TestRequest() objects = IBibliography(objects, objects) found = False if IBibliographicItem.providedBy(objects): entries = [objects] found = True if not found: try: # We want the values from a dictionary-ish/IBibliography object entries = objects.itervalues() except AttributeError: # Otherwise we just iterate over what is presumably something # sequence-ish. entries = iter(objects) rendered = [] for obj in entries: ref = queryAdapter(obj, interface=IBibliographicReference, name=self.__name__) if ref is None: # if there is no named adapter, get the default adapter # compatibility with older versions ref = IBibliographicReference(obj, None) if ref is None: continue # do rendering for entry view = getMultiAdapter((ref, request), name=self.view_name) omit_fields = omit_fields_mapping.get(ref.publication_type, []) ref_string = view.render(title_force_uppercase=title_force_uppercase, omit_fields=omit_fields) rendered.append(ref_string) rendered = "".join(rendered) if msdos_eol_style: rendered = rendered.replace("\n", "\r\n") return rendered