|
22 | 22 | from django.utils.html import strip_tags
|
23 | 23 | from django_hosts.resolvers import reverse
|
24 | 24 |
|
| 25 | +from blog.models import Entry |
25 | 26 | from releases.models import Release
|
26 | 27 |
|
27 | 28 | from . import utils
|
@@ -95,6 +96,9 @@ class DocumentRelease(models.Model):
|
95 | 96 | on_delete=models.CASCADE,
|
96 | 97 | )
|
97 | 98 | is_default = models.BooleanField(default=False)
|
| 99 | + support_end = models.DateField( |
| 100 | + null=True, blank=True, help_text="The end of support for this release of Django." |
| 101 | + ) |
98 | 102 |
|
99 | 103 | objects = DocumentReleaseQuerySet.as_manager()
|
100 | 104 |
|
@@ -212,6 +216,31 @@ def sync_to_db(self, decoded_documents):
|
212 | 216 | )
|
213 | 217 | document.save(update_fields=("metadata",))
|
214 | 218 |
|
| 219 | + def _sync_blog_to_db(self): |
| 220 | + """ |
| 221 | + Sync the blog entries into search based on the release documents |
| 222 | + support end date. |
| 223 | + """ |
| 224 | + if self.lang == "en": |
| 225 | + for entry in Entry.objects.published(): |
| 226 | + Document.objects.create( |
| 227 | + release=self, |
| 228 | + path=entry.get_absolute_url(), |
| 229 | + title=entry.headline, |
| 230 | + metadata={ |
| 231 | + "body": entry.body_html, |
| 232 | + "breadcrumbs": [ |
| 233 | + {"path": "weblog", "title": "News"}, |
| 234 | + ], |
| 235 | + "parents": "weblog", |
| 236 | + "slug": entry.slug, |
| 237 | + "title": entry.headline, |
| 238 | + "toc": "", |
| 239 | + }, |
| 240 | + config=TSEARCH_CONFIG_LANGUAGES.get( |
| 241 | + self.lang[:2], DEFAULT_TEXT_SEARCH_CONFIG |
| 242 | + ), |
| 243 | + ) |
215 | 244 |
|
216 | 245 | def _clean_document_path(path):
|
217 | 246 | # We have to be a bit careful to reverse-engineer the correct
|
@@ -382,3 +411,8 @@ def body(self):
|
382 | 411 | with open(str(self.full_path)) as fp:
|
383 | 412 | doc = json.load(fp)
|
384 | 413 | return doc["body"]
|
| 414 | + |
| 415 | + def document_url(self): |
| 416 | + if self.metadata["parents"] == "weblog": |
| 417 | + return self.path |
| 418 | + return reverse('document-detail', kwargs={"lang": self.release.lang, "version": self.release.version, "url": self.path}, host="docs") |
0 commit comments