def getTemplate(self, **kwargs): template = getattr(self.context, 'latextemplate', None) if template is None: values = {'title': 'Bibliographic Export', 'url': ''} for key, val in kwargs.items(): values[key] = unicode(utils._normalize(val, True), 'utf-8').encode('iso-8859-15') template = DEFAULT_TEMPLATE % values return template
def render(self, title_force_uppercase=False, omit_fields=[], msdos_eol_style=None, # not used resolve_unicode=None, # not used output_encoding=None, # not used ): """ renders a BibliographyEntry object in BiBTex format """ entry = self.context omit = [each.lower() for each in omit_fields] bib_key = utils._validKey(entry) f_temp = tempfile.mktemp() fp = codecs.open(f_temp, 'w', 'utf-8', 'ignore') print >>fp, _c(u"\n@%s{%s,", entry.publication_type, bib_key) if entry.editor_flag and self._isRenderableField('editor', omit): print >>fp, _c(u" editor = {%s},", entry.authors) elif not entry.editor_flag and self._isRenderableField('authors', omit): print >>fp, _c(" author = {%s},", entry.authors) if self._isRenderableField('authorurls', omit): aURLs = utils.AuthorURLs(entry) if aURLs.find('http') > -1: print >>fp, _c(u" authorURLs = {%s},", aURLs) if self._isRenderableField('title', omit): if title_force_uppercase: print >>fp, _c(u" title = {%s},", utils._braceUppercase(entry.title)) else: print >>fp, _c(u" title = {%s},", entry.title) if self._isRenderableField('year', omit): print >>fp, _c(u" year = {%s},", entry.publication_year) if self._isRenderableField('month', omit): if entry.publication_month: print >>fp, _c(u" month = {%s},", entry.publication_month) if entry.url and self._isRenderableField('url', omit): print >>fp, _c(u" URL = {%s},", entry.url) if entry.abstract and self._isRenderableField('abstract', omit): print >>fp, _c(u" abstract = {%s},", entry.abstract) for key, val in entry.source_fields: if self._isRenderableField(key, omit) and val: if not isinstance(val, unicode): val = utils._decode(val) print >>fp, _c(u" %s = {%s},", key.lower(), val) if self._isRenderableField('subject', omit): kws = ', '.join(entry.subject) if kws: if not isinstance(kws, unicode): kws = utils._decode(kws) print >>fp, _c(u" keywords = {%s},", kws) if self._isRenderableField('note', omit): note = getattr(entry, 'note', None) if note: print >>fp, _c(u" note = {%s},", note) if self._isRenderableField('annote', omit): annote = getattr(entry, 'annote', None) if annote: print >>fp, _c(u" annote = {%s},", annote) if self._isRenderableField('additional', omit): try: additional = entry.context.getAdditional() except AttributeError: additional = [] for mapping in additional: print >>fp, _c(u" %s = {%s},", mapping['key'], mapping['value']) keys = entry.identifiers.keys() keys.sort() source_fields_keys = [tp[0].lower() for tp in entry.source_fields] for identifier, value in entry.identifiers.items(): if value: print >>fp, _c(u" %s = {%s},", identifier.lower(), value) # remove trailing command fp.seek(-2, 2) print >>fp print >>fp, u"}" print >>fp fp.close() bibtex = file(f_temp, 'r').read() os.unlink(f_temp) return _normalize(bibtex, resolve_unicode=True)
def render( self, title_force_uppercase=False, omit_fields=[], msdos_eol_style=None, # not used resolve_unicode=None, # not used output_encoding=None, # not used ): """ renders a BibliographyEntry object in BiBTex format """ entry = self.context omit = [each.lower() for each in omit_fields] bib_key = utils._validKey(entry) f_temp = tempfile.mktemp() fp = codecs.open(f_temp, 'w', 'utf-8', 'ignore') print >> fp, _c(u"\n@%s{%s,", entry.publication_type, bib_key) if entry.editor_flag and self._isRenderableField('editor', omit): print >> fp, _c(u" editor = {%s},", entry.authors) elif not entry.editor_flag and self._isRenderableField( 'authors', omit): print >> fp, _c(" author = {%s},", entry.authors) if self._isRenderableField('authorurls', omit): aURLs = utils.AuthorURLs(entry) if aURLs.find('http') > -1: print >> fp, _c(u" authorURLs = {%s},", aURLs) if self._isRenderableField('title', omit): if title_force_uppercase: print >> fp, _c(u" title = {%s},", utils._braceUppercase(entry.title)) else: print >> fp, _c(u" title = {%s},", entry.title) if self._isRenderableField('year', omit): print >> fp, _c(u" year = {%s},", entry.publication_year) if self._isRenderableField('month', omit): if entry.publication_month: print >> fp, _c(u" month = {%s},", entry.publication_month) if entry.url and self._isRenderableField('url', omit): print >> fp, _c(u" URL = {%s},", entry.url) if entry.abstract and self._isRenderableField('abstract', omit): print >> fp, _c(u" abstract = {%s},", entry.abstract) for key, val in entry.source_fields: if self._isRenderableField(key, omit) and val: if not isinstance(val, unicode): val = utils._decode(val) print >> fp, _c(u" %s = {%s},", key.lower(), val) if self._isRenderableField('subject', omit): kws = ', '.join(entry.subject) if kws: if not isinstance(kws, unicode): kws = utils._decode(kws) print >> fp, _c(u" keywords = {%s},", kws) if self._isRenderableField('note', omit): note = getattr(entry, 'note', None) if note: print >> fp, _c(u" note = {%s},", note) if self._isRenderableField('annote', omit): annote = getattr(entry, 'annote', None) if annote: print >> fp, _c(u" annote = {%s},", annote) if self._isRenderableField('additional', omit): try: additional = entry.context.getAdditional() except AttributeError: additional = [] for mapping in additional: print >> fp, _c(u" %s = {%s},", mapping['key'], mapping['value']) keys = entry.identifiers.keys() keys.sort() source_fields_keys = [tp[0].lower() for tp in entry.source_fields] for identifier, value in entry.identifiers.items(): if value: print >> fp, _c(u" %s = {%s},", identifier.lower(), value) # remove trailing command fp.seek(-2, 2) print >> fp print >> fp, u"}" print >> fp fp.close() bibtex = file(f_temp, 'r').read() os.unlink(f_temp) return _normalize(bibtex, resolve_unicode=True)