Skip to content

Commit

Permalink
Add disabled status for #3304 (POC)
Browse files Browse the repository at this point in the history
  • Loading branch information
GiovanH committed May 19, 2024
1 parent b1cb6c7 commit 34c921b
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 4 deletions.
24 changes: 22 additions & 2 deletions pelican/contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -528,9 +528,29 @@ def refresh_metadata_intersite_links(self):
self.metadata["summary"] = self._summary


class SkipStub(Content):
# Stub class representing content that should not be processed in any way

def __init__(
self, content, metadata=None, settings=None, source_path=None, context=None
):
self.source_path = source_path

def is_valid(self):
return False

@property
def content(self):
raise NotImplementedError("Stub content should not be read")

@property
def save_as(self):
raise NotImplementedError("Stub content cannot be saved")


class Page(Content):
mandatory_properties = ("title",)
allowed_statuses = ("published", "hidden", "draft")
allowed_statuses = ("published", "hidden", "draft", "disabled")
default_status = "published"
default_template = "page"

Expand All @@ -541,7 +561,7 @@ def _expand_settings(self, key):

class Article(Content):
mandatory_properties = ("title", "date", "category")
allowed_statuses = ("published", "hidden", "draft")
allowed_statuses = ("published", "hidden", "draft", "disabled")
default_status = "published"
default_template = "article"

Expand Down
15 changes: 14 additions & 1 deletion pelican/generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
)

from pelican.cache import FileStampDataCacher
from pelican.contents import Article, Page, Static
from pelican.contents import Article, Page, Static, SkipStub
from pelican.plugins import signals
from pelican.plugins._utils import plugin_enabled
from pelican.readers import Readers
Expand Down Expand Up @@ -675,6 +675,10 @@ def generate_context(self):
self._add_failed_source_path(f)
continue

if isinstance(article, SkipStub):
logger.debug("Safely skipping %s", f)
continue

if not article.is_valid():
self._add_failed_source_path(f)
continue
Expand All @@ -687,6 +691,8 @@ def generate_context(self):
all_drafts.append(article)
elif article.status == "hidden":
hidden_articles.append(article)
elif article.status == "disabled":
raise AssertionError("Disabled documents should be skipped")

self.add_source_path(article)
self.add_static_links(article)
Expand Down Expand Up @@ -879,6 +885,10 @@ def generate_context(self):
self._add_failed_source_path(f)
continue

if isinstance(page, SkipStub):
logger.debug("Safely skipping %s", f)
continue

if not page.is_valid():
self._add_failed_source_path(f)
continue
Expand All @@ -891,6 +901,9 @@ def generate_context(self):
hidden_pages.append(page)
elif page.status == "draft":
draft_pages.append(page)
elif page.status == "disabled":
raise AssertionError("Disabled documents should be skipped")

self.add_source_path(page)
self.add_static_links(page)

Expand Down
5 changes: 4 additions & 1 deletion pelican/readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from pelican import rstdirectives # NOQA
from pelican.cache import FileStampDataCacher
from pelican.contents import Author, Category, Page, Tag
from pelican.contents import Author, Category, Page, Tag, SkipStub
from pelican.plugins import signals
from pelican.utils import get_date, pelican_open, posixize_path

Expand Down Expand Up @@ -646,6 +646,9 @@ def typogrify_wrapper(text):
)
context_signal.send(context_sender, metadata=metadata)

if metadata.get("status") == "disabled":
content_class = SkipStub

return content_class(
content=content,
metadata=metadata,
Expand Down

0 comments on commit 34c921b

Please sign in to comment.