Esempio n. 1
0
def import_galley_from_uri(article, uri, figures_uri=None):
    parsed = urlparse(uri)
    django_file = None
    if parsed.scheme == "file":
        if parsed.netloc:
            raise ValueError("Netlocs are not supported %s" % parsed.netloc)
        path = unquote(parsed.path)
        blob = read_local_file(path)
        django_file = ContentFile(blob)
        django_file.name = os.path.basename(path)
    else:
        raise NotImplementedError("Scheme not supported: %s" % parsed.scheme)

    if django_file:
        request = get_current_request()
        if request and request.user.is_authenticated():
            owner = request.user
        else:
            owner = core_models.Account.objects.filter(
                is_superuser=True).first()
            request = DummyRequest(user=owner)
        galley = save_galley(article, request, django_file, True)
        if figures_uri and galley.label in {"XML", "HTML"}:
            figures_path = unquote(urlparse(figures_uri).path)
            handle_zipped_galley_images(figures_path, galley, request)
Esempio n. 2
0
 def _site_path_url(self, path=None):
     request = logic.get_current_request()
     if request and request.journal == self:
         if not path:
             path = "/{}".format(self.code)
         return request.build_absolute_uri(path)
     else:
         return self.press.journal_path_url(self, path)
Esempio n. 3
0
def build_redirect_uri(site):
    """ builds the landing page for ORCID requests
    :site: Object implementing the AbstractSiteModel interface
    :return: (str) Redirect URI for ORCID requests
    """
    request = logic.get_current_request()
    path = reverse("core_login_orcid")

    return request.site_type.site_url(path)
Esempio n. 4
0
    def save(self, commit=True):
        instance = super().save(commit=False)
        request = get_current_request()

        if request:
            instance.journal = request.journal

        if commit:
            instance.save()

        return instance
Esempio n. 5
0
    def published_articles(self):
        articles = submission_models.Article.objects.filter(
            authors=self,
            stage=submission_models.STAGE_PUBLISHED,
            date_published__lte=timezone.now(),
        )
        request = utils_logic.get_current_request()
        if request and request.journal:
            articles.filter(journal=request.journal)

        return articles
Esempio n. 6
0
    def journal_path_url(self, journal, path=None):
        """ Returns a Journal's path mode url relative to its press """

        _path = journal.code
        request = logic.get_current_request()
        if settings.DEBUG and request:
            port = request.get_port()
        else:
            port = None
        if path is not None:
            _path += path

        return logic.build_url(
            netloc=self.domain,
            scheme=self.SCHEMES[self.is_secure],
            port=port,
            path=_path,
        )
Esempio n. 7
0
def get_doi_data(article):
    request = get_current_request()
    try:
        doi = identifier_models.Identifier.objects.get(id_type='doi', article=article)
        doi_url= doi.get_doi_url()
        logger.info("Fetching %s.." % doi_url)
        r = requests.get(doi_url, timeout=settings.HTTP_TIMEOUT_SECONDS)
        return [r, doi]
    except requests.exceptions.Timeout:
        if request:
            messages.add_message(
                request,
                messages.WARNING,
                "Timed out reaching %s" % doi_url,
            )
        return [None, doi]
    except Exception as e:
        logger.error("Error getting DOI data: %s", e)
        return [None, None]