Exemplo n.º 1
0
def import_from_rss(rss_as_bytes):
    rss = objectify.fromstring(rss_as_bytes)
    current_site = Site.objects.get_current()
    for item in rss.channel.item:
        blob = unicode(item['{%s}encoded' % item.nsmap['content']])
        category, _ = Category.objects.get_or_create(
            slug=my_slugify(unicode(item.category.text)),
            title=unicode(item.category.text)
        )

        entry = Entry()
        cms_content = Content()
        cms_content.save()
        process_html_blob(blob, cms_content)
        entry.content_ptr = cms_content
        entry.title = unicode(item.title.text)
        entry.creation_date = parse_rss_date(unicode(item.pubDate))
        entry.slug = my_slugify(entry.title)
        entry.save()
        entry.sites.add(current_site)
        entry.categories.add(category)
        link = unicode(item.link.text)
        _url_cache[link] = entry.get_absolute_url()
        _url_cache[re.sub("^https", "http", link)] = entry.get_absolute_url()
        add_redirect(link, entry.get_absolute_url())
Exemplo n.º 2
0
    def save(self, *args, **kwargs):
        if self.pk is None:  # or if there is no entry? What is a good check?
            # take action on first save
            # NB! Try to make sure that the slug is unique so we can have separate links to separate messages
            entry = Entry(
                title=self.create_entry_title(),
                content=self.create_entry_content(),
                status=HIDDEN,
            )
            entry.save()
            entry.slug = self.create_entry_slug() + '-' + str(entry.pk)
            entry.sites.add(Site.objects.get(pk=settings.SITE_ID))
            entry.authorized_users.add(self.user)
            entry.content_template += '.%s' % (self.__class__.__name__.lower())
            entry.detail_template += '.%s' % (self.__class__.__name__.lower())
            entry.save()
            # Should we perhaps save somewhere this Site.objects.get(pk=settings.SITE_ID) so we don't have to query it every time? Though, I guess, it is not such a big deal here, as we are rarely saving things that have associated blog posts. We are not generating blog posts (entries) every second...
            self.entry = entry
        else:
            if self.entry is None:
                pass  # QUESTION. Should we still post? Better late than never? Though, with transactions, we'd never get here.

        super(PrivatelyPublishedModelMixin, self).save(*args, **kwargs)