Example #1
0
 def serve_url(self):
     kwargs = {
         'feed_slug': self.feed.slug,
         'article_slug': self.slug,
     }
     path = reverse('store:serve_article', kwargs=kwargs)
     return utils.absurl(path)
Example #2
0
def mediaurl(path):
    media_url = getattr(settings, 'MEDIA_URL')
    path = '{media}{path}'.format(
        media=media_url,
        path=path
    )
    if not path.startswith('http'):
        path = absurl(path)

    return path
Example #3
0
def archive_article(article):
    from crawler.constants import STATES
    service_name = ''
    archived_url = ''
    # First case: we have no preservation, thus in case of
    # preservation:priority meta tag.
    article_url = article.url

    # Second case: every article that has preservation needs thus other meta
    # tags
    if article.preservation_state != STATES.PRESERVATION.NO_PRESERVE:
        article_path = reverse('store:serve_article',
                               kwargs={
                                   'feed_slug': article.feed.slug,
                                   'article_slug': article.slug
                               })
        article_url = utils.absurl(article_path)

    try:
        for service in archive.services(article_url):
            service_name = service.name()
            prev_archive = ArchivedArticle.objects.filter(service=service_name,
                                                          article=article)
            if not prev_archive.exists():
                archived_url = service.start()
                ArchivedArticle.objects.create(service=service_name,
                                               url=archived_url,
                                               article=article)

        article.archiving_state = STATES.ARCHIVE.ARCHIVED
    except Exception as e:
        article.archiving_state = STATES.ARCHIVE.ERROR
        logger.error("An error occured when archiving article", e)
        logger.info("Article absolute url: %s" % article_url)
        logger.info("Archived url (%s): %s" % (service_name, archived_url))

    article.save()
    return article.pk
Example #4
0
def archive_article(article):
    service_name = ''
    archived_url = ''
    # First case: we have no preservation, thus in case of
    # preservation:priority meta tag.
    article_url = article.url

    # Second case: every article that has preservation needs thus other meta
    # tags
    if article.preservation_state != STATES.PRESERVATION.NO_PRESERVE:
        article_path = reverse('store:serve_article', kwargs={
            'feed_slug':article.feed.slug,
            'article_slug':article.slug
        })
        article_url = utils.absurl(article_path)

    try:
        for service in archive.services(article_url):
            service_name = service.name()
            prev_archive = ArchivedArticle.objects.filter(
                service=service_name,
                article=article
            )
            if not prev_archive.exists():
                archived_url = service.start()
                ArchivedArticle.objects.create(
                    service=service_name,
                    url=archived_url,
                    article=article)

        article.archiving_state = STATES.ARCHIVE.ARCHIVED
        article.save()
    except Exception as e:
        article.archiving_state = STATES.ARCHIVE.ERROR
        article.save()
        raise e
Example #5
0
 def test_absurl(self):
     self.assertEqual(utils.absurl('fake/path'),
                      settings.DOMAIN_NAME + 'fake/path')