|
22 | 22 | from readthedocs.projects.constants import (
|
23 | 23 | BITBUCKET_URL,
|
24 | 24 | GITHUB_URL,
|
| 25 | + GITHUB_PULL_REQEST_URL, |
25 | 26 | GITLAB_URL,
|
26 | 27 | PRIVACY_CHOICES,
|
27 | 28 | PRIVATE,
|
|
36 | 37 | BUILD_STATE_FINISHED,
|
37 | 38 | BUILD_STATE_TRIGGERED,
|
38 | 39 | BUILD_TYPES,
|
| 40 | + GITHUB_EXTERNAL_VERSION_NAME, |
39 | 41 | INTERNAL,
|
40 | 42 | LATEST,
|
41 | 43 | NON_REPOSITORY_VERSIONS,
|
@@ -539,6 +541,23 @@ def get_bitbucket_url(self, docroot, filename, source_suffix='.rst'):
|
539 | 541 | source_suffix=source_suffix,
|
540 | 542 | )
|
541 | 543 |
|
| 544 | + def get_external_version_url(self): |
| 545 | + """Return a Pull/Merge Request URL.""" |
| 546 | + repo_url = self.project.repo |
| 547 | + user, repo = get_github_username_repo(repo_url) |
| 548 | + |
| 549 | + if not user and not repo: |
| 550 | + return '' |
| 551 | + |
| 552 | + if 'github' in repo_url: |
| 553 | + repo = repo.rstrip('/') |
| 554 | + return GITHUB_PULL_REQEST_URL.format( |
| 555 | + user=user, |
| 556 | + repo=repo, |
| 557 | + number=self.verbose_name |
| 558 | + ) |
| 559 | + return '' |
| 560 | + |
542 | 561 |
|
543 | 562 | class APIVersion(Version):
|
544 | 563 |
|
@@ -756,6 +775,20 @@ def is_stale(self):
|
756 | 775 | mins_ago = timezone.now() - datetime.timedelta(minutes=5)
|
757 | 776 | return self.state == BUILD_STATE_TRIGGERED and self.date < mins_ago
|
758 | 777 |
|
| 778 | + @property |
| 779 | + def is_external(self): |
| 780 | + return self.version.type == EXTERNAL |
| 781 | + |
| 782 | + @property |
| 783 | + def external_version_name(self): |
| 784 | + if self.is_external: |
| 785 | + try: |
| 786 | + if self.project.remote_repository.account.provider == 'github': |
| 787 | + return GITHUB_EXTERNAL_VERSION_NAME |
| 788 | + except Exception: |
| 789 | + return None |
| 790 | + return None |
| 791 | + |
759 | 792 | def using_latest_config(self):
|
760 | 793 | return int(self.config.get('version', '1')) == LATEST_CONFIGURATION_VERSION
|
761 | 794 |
|
|
0 commit comments