Пример #1
0
 def api_versions(self):
     from readthedocs.builds.models import APIVersion
     ret = []
     for version_data in api.project(self.pk
                                     ).active_versions.get()['versions']:
         version = APIVersion(**version_data)
         ret.append(version)
     return sort_version_aware(ret)
Пример #2
0
 def api_versions(self):
     from readthedocs.builds.models import APIVersion
     ret = []
     for version_data in api.project(
             self.pk).active_versions.get()['versions']:
         version = APIVersion(**version_data)
         ret.append(version)
     return sort_version_aware(ret)
Пример #3
0
    def get_subproject_urls(self):
        """
        List subproject URLs.

        This is used in search result linking
        """
        if settings.DONT_HIT_DB:
            return [(proj['slug'], proj['canonical_url']) for proj in (
                api.project(self.pk).subprojects().get()['subprojects'])]
        return [(proj.child.slug, proj.child.get_docs_url())
                for proj in self.subprojects.all()]
Пример #4
0
    def get_subproject_urls(self):
        """
        List subproject URLs.

        This is used in search result linking
        """
        if settings.DONT_HIT_DB:
            return [(proj['slug'], proj['canonical_url']) for proj in
                    (api.project(self.pk).subprojects().get()['subprojects'])]
        return [(proj.child.slug, proj.child.get_docs_url())
                for proj in self.subprojects.all()]
Пример #5
0
 def get_token_for_project(cls, project, force_local=False):
     """Get access token for project by iterating over project users."""
     # TODO why does this only target GitHub?
     if not settings.ALLOW_PRIVATE_REPOS:
         return None
     token = None
     try:
         if settings.DONT_HIT_DB and not force_local:
             token = api.project(project.pk).token().get()['token']
         else:
             for user in project.users.all():
                 tokens = SocialToken.objects.filter(
                     account__user=user,
                     app__provider=cls.adapter.provider_id,
                 )
                 if tokens.exists():
                     token = tokens[0].token
     except Exception:
         log.exception('Failed to get token for project')
     return token
Пример #6
0
 def get_token_for_project(cls, project, force_local=False):
     """Get access token for project by iterating over project users."""
     # TODO why does this only target GitHub?
     if not settings.ALLOW_PRIVATE_REPOS:
         return None
     token = None
     try:
         if settings.DONT_HIT_DB and not force_local:
             token = api.project(project.pk).token().get()['token']
         else:
             for user in project.users.all():
                 tokens = SocialToken.objects.filter(
                     account__user=user,
                     app__provider=cls.adapter.provider_id,
                 )
                 if tokens.exists():
                     token = tokens[0].token
     except Exception:
         log.exception('Failed to get token for project')
     return token
Пример #7
0
 def get_canonical_url(self):
     if settings.DONT_HIT_DB:
         return api.project(self.pk).canonical_url().get()['url']
     return self.get_docs_url()
Пример #8
0
 def set_valid_clone(self):
     """Mark on the project that it has been cloned properly."""
     api_v2.project(self.data.project.pk).patch({'has_valid_clone': True})
     self.data.project.has_valid_clone = True
     self.data.version.project.has_valid_clone = True
Пример #9
0
 def get_project(project_pk):
     """Get project from API."""
     project_data = api_v2.project(project_pk).get()
     return APIProject(**project_data)
Пример #10
0
 def get_canonical_url(self):
     if settings.DONT_HIT_DB:
         return api.project(self.pk).canonical_url().get()['url']
     return self.get_docs_url()