Django

Code

Ticket #1086: feeds.py.diff

File feeds.py.diff, 3.4 kB (added by Esaj, 4 years ago)
  • django/contrib/syndication/feeds.py

    old new  
    7777            description_template = Template('{{ obj }}') 
    7878 
    7979        for item in self.__get_dynamic_attr('items', obj): 
    80             link = add_domain(current_site.domain, self.__get_dynamic_attr('item_link', item)) 
    81             enc = None 
    82             enc_url = self.__get_dynamic_attr('item_enclosure_url', item) 
    83             if enc_url: 
    84                 enc = feedgenerator.Enclosure( 
    85                     url = enc_url.decode('utf-8'), 
    86                     length = str(self.__get_dynamic_attr('item_enclosure_length', item)).decode('utf-8'), 
    87                     mime_type = self.__get_dynamic_attr('item_enclosure_mime_type', item).decode('utf-8'), 
     80            try: 
     81                link = add_domain(current_site.domain, self.__get_dynamic_attr('item_link', item)) 
     82                enc = None 
     83                enc_url = self.__get_dynamic_attr('item_enclosure_url', item) 
     84                if enc_url: 
     85                    enc = feedgenerator.Enclosure( 
     86                        url = enc_url.decode('utf-8'), 
     87                        length = str(self.__get_dynamic_attr('item_enclosure_length', item)).decode('utf-8'), 
     88                        mime_type = self.__get_dynamic_attr('item_enclosure_mime_type', item).decode('utf-8'), 
     89                    ) 
     90                author_name = self.__get_dynamic_attr('item_author_name', item) 
     91                if author_name is not None: 
     92                    author_email = self.__get_dynamic_attr('item_author_email', item) 
     93                    author_link = self.__get_dynamic_attr('item_author_link', item) 
     94                else: 
     95                    author_email = author_link = None 
     96                feed.add_item( 
     97                    title = title_template.render(Context({'obj': item, 'site': current_site})).decode('utf-8'), 
     98                    link = link, 
     99                    description = description_template.render(Context({'obj': item, 'site': current_site})).decode('utf-8'), 
     100                    unique_id = link, 
     101                    enclosure = enc, 
     102                    pubdate = self.__get_dynamic_attr('item_pubdate', item), 
     103                    author_name = author_name, 
     104                    author_email = author_email, 
     105                    author_link = author_link, 
    88106                ) 
    89             author_name = self.__get_dynamic_attr('item_author_name', item) 
    90             if author_name is not None: 
    91                 author_email = self.__get_dynamic_attr('item_author_email', item) 
    92                 author_link = self.__get_dynamic_attr('item_author_link', item) 
    93             else: 
    94                 author_email = author_link = None 
    95             feed.add_item( 
    96                 title = title_template.render(Context({'obj': item, 'site': current_site})).decode('utf-8'), 
    97                 link = link, 
    98                 description = description_template.render(Context({'obj': item, 'site': current_site})).decode('utf-8'), 
    99                 unique_id = link, 
    100                 enclosure = enc, 
    101                 pubdate = self.__get_dynamic_attr('item_pubdate', item), 
    102                 author_name = author_name, 
    103                 author_email = author_email, 
    104                 author_link = author_link, 
    105             ) 
     107            except UnicodeDecodeError: 
     108                pass 
    106109        return feed