Ticket #5411: atom-config.diff

File atom-config.diff, 2.7 KB (added by bos, 8 years ago)

Make Atom title, subtitle and summary types configurable

  • django/utils/feedgenerator.py

     
    203203    # Spec: http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html
    204204    mime_type = 'application/atom+xml'
    205205    ns = u"http://www.w3.org/2005/Atom"
     206    title_type = u'text'
     207    summary_type = u'html'
    206208    def write(self, outfile, encoding):
    207209        handler = SimplerXMLGenerator(outfile, encoding)
    208210        handler.startDocument()
     
    210212            handler.startElement(u"feed", {u"xmlns": self.ns, u"xml:lang": self.feed['language']})
    211213        else:
    212214            handler.startElement(u"feed", {u"xmlns": self.ns})
    213         handler.addQuickElement(u"title", self.feed['title'])
     215        handler.addQuickElement(u"title", self.feed['title'],
     216                                {u'type': self.title_type})
    214217        handler.addQuickElement(u"link", "", {u"rel": u"alternate", u"href": self.feed['link']})
    215218        if self.feed['feed_url'] is not None:
    216219            handler.addQuickElement(u"link", "", {u"rel": u"self", u"href": self.feed['feed_url']})
     
    225228                handler.addQuickElement(u"uri", self.feed['author_link'])
    226229            handler.endElement(u"author")
    227230        if self.feed['subtitle'] is not None:
    228             handler.addQuickElement(u"subtitle", self.feed['subtitle'])
     231            handler.addQuickElement(u"subtitle", self.feed['subtitle'],
     232                                    {u'type': self.title_type})
    229233        for cat in self.feed['categories']:
    230234            handler.addQuickElement(u"category", "", {u"term": cat})
    231235        if self.feed['feed_copyright'] is not None:
     
    236240    def write_items(self, handler):
    237241        for item in self.items:
    238242            handler.startElement(u"entry", {})
    239             handler.addQuickElement(u"title", item['title'])
     243            handler.addQuickElement(u"title", item['title'],
     244                                    {u'type': self.title_type})
    240245            handler.addQuickElement(u"link", u"", {u"href": item['link'], u"rel": u"alternate"})
    241246            if item['pubdate'] is not None:
    242247                handler.addQuickElement(u"updated", rfc3339_date(item['pubdate']).decode('ascii'))
     
    260265
    261266            # Summary.
    262267            if item['description'] is not None:
    263                 handler.addQuickElement(u"summary", item['description'], {u"type": u"html"})
     268                handler.addQuickElement(u"summary", item['description'],
     269                                        {u'type': self.summary_type})
    264270
    265271            # Enclosure.
    266272            if item['enclosure'] is not None:
Back to Top