Skip to content
Snippets Groups Projects
Commit d95c8ced authored by Jake's avatar Jake
Browse files

Merge branch 'relevant' into 'master'

Relevante Seiten

Closes #18

See merge request GAUMI-fginfo/fg-website!8
parents 1394b26c d2915b02
No related branches found
No related tags found
No related merge requests found
Pipeline #313269 passed
import datetime
from dateutil import parser as dtparser
class Page: class Page:
#filename = None #filename = None
...@@ -63,6 +66,47 @@ class Page: ...@@ -63,6 +66,47 @@ class Page:
# url # url
self.url = self.lang + '/' + self.category + '/' + self.slug + ".html" self.url = self.lang + '/' + self.category + '/' + self.slug + ".html"
# relevance
self.relevance = {}
self.relevance['is_relevant'] = False
self.relevance['was_relevant'] = False
self.relevance['will_be_relevant'] = False
if 'relevant' in metadata:
lrel = metadata['relevant']
if not isinstance(lrel, dict):
prio = lrel
lrel = {}
lrel['prio'] = prio
if 'prio' in lrel:
self.relevance['prio']= lrel['prio']
else:
self.relevance['prio']= 0
start = Date("min", config)
if 'start' in lrel:
start = Date(lrel['start'], config)
self.relevance['start'] = start
end = Date("max", config)
if 'end' in lrel:
end = Date(lrel['end'], config)
self.relevance['end'] = end
build_date = Date("now", config)
if (build_date > end):
self.relevance['was_relevant'] = True
elif (build_date < start):
self.relevance['will_be_relevant'] = True
else:
self.relevance['is_relevant'] = True
def tags_str_to_list(self, s): def tags_str_to_list(self, s):
res = [] res = []
l = s.split(',') l = s.split(',')
...@@ -75,13 +119,23 @@ class Page: ...@@ -75,13 +119,23 @@ class Page:
return res return res
def __lt__(self, other): def __lt__(self, other):
return self.date_modified < other.date_modified return self.date_modified < other.date_modified
class Date: class Date:
def __init__(self, dt, config): def __init__(self, dt, config):
if isinstance(dt, str):
if dt == "min":
dt = dtparser.parse("1970-01-01")
elif dt == "max":
dt = dtparser.parse("9999-01-01")
elif dt == "now":
dt = datetime.datetime.now()
else:
dt = dtparser.parse(dt)
if isinstance(dt, datetime.date):
dt = datetime.datetime(dt.year, dt.month, dt.day)
self.dt = dt self.dt = dt
#self.config = config #self.config = config
# TODO various formats # TODO various formats
......
import datatypes
class Generator: class Generator:
def __init__(self, config, context): def __init__(self, config, context):
...@@ -60,6 +61,23 @@ class Generator: ...@@ -60,6 +61,23 @@ class Generator:
tags[page.lang][tag].append(page) tags[page.lang][tag].append(page)
self.context['tags'] = tags self.context['tags'] = tags
# build_date
self.context['build_date'] = datatypes.Date("now", self.config)
# relevant_pages
relevant_pages_tuple = []
for page in published_pages:
if page.relevance['is_relevant']:
relevant_pages_tuple.append((page.relevance['prio'], page))
relevant_pages_tuple.sort(key=lambda x: x[0])
relevant_pages_tuple.reverse()
relevant_pages = []
for prio, page in relevant_pages_tuple:
relevant_pages.append(page)
self.context['relevant_pages'] = relevant_pages
self.context['relevant_pages_tuple'] = relevant_pages_tuple
def generate_homepage(self, writer, lang, path): def generate_homepage(self, writer, lang, path):
......
import page import datatypes
import pandoc import pandoc
import frontmatter import frontmatter
from datetime import datetime from datetime import datetime
from dateutil import parser as dtparser
import subprocess import subprocess
import os import os
...@@ -80,9 +79,9 @@ class MarkdownReader: ...@@ -80,9 +79,9 @@ class MarkdownReader:
date_modified = datetime.fromisoformat(date_changes[0]) date_modified = datetime.fromisoformat(date_changes[0])
date_created = datetime.fromisoformat(date_changes[-1]) date_created = datetime.fromisoformat(date_changes[-1])
if 'date' in metadata: if 'date' in metadata:
date_created = dtparser.parse(metadata['date']) date_created = metadata['date']
if 'modified' in metadata: if 'modified' in metadata:
date_modified = dtparser.parse(metadata['modified']) date_modified = metadata['modified']
#print("created: ", date_created) #print("created: ", date_created)
#print("last changed: ", date_modified) #print("last changed: ", date_modified)
...@@ -112,7 +111,7 @@ class MarkdownReader: ...@@ -112,7 +111,7 @@ class MarkdownReader:
# TODO summary # TODO summary
p = page.Page( p = datatypes.Page(
filename, filename,
subpath, subpath,
rawfile, rawfile,
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
{{ open() }} {{ open() }}
{%- endif -%} {%- endif -%}
{%- for page in pages -%} {%- for page in pages -%}
{%- if max == None or loop.index < max -%} {%- if max is none or loop.index < max -%}
{{ cards.card_from_page(page, lang) }} {{ cards.card_from_page(page, lang) }}
{%- endif -%} {%- endif -%}
{%- endfor -%} {%- endfor -%}
......
...@@ -3,7 +3,11 @@ ...@@ -3,7 +3,11 @@
{%- import 'macros/content_renderer.html' as content_renderer with context -%} {%- import 'macros/content_renderer.html' as content_renderer with context -%}
{%- macro section_news(s, lang) -%} {%- macro section_news(s, lang) -%}
{{ cards.cards_from_pages(pages_modified, max=s.num) }} {{ cards.cards_from_pages(pages_modified, max=s.num|d(None)) }}
{%- endmacro -%}
{%- macro section_relevant(s, lang) -%}
{{ cards.cards_from_pages(relevant_pages, max=s.num|d(None)) }}
{%- endmacro -%} {%- endmacro -%}
{%- macro section_custom(s, lang) -%} {%- macro section_custom(s, lang) -%}
...@@ -29,7 +33,7 @@ ...@@ -29,7 +33,7 @@
<h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ tagtitle|e }}</h2> <h2 {% if s.id is defined -%}id="{{ s.id }}"{%- endif %}>{{ tagtitle|e }}</h2>
</header> </header>
{%- endif -%} {%- endif -%}
{{ cards.cards_from_pages(tagpages, lang, max=s.num) }} {{ cards.cards_from_pages(tagpages, lang, max=s.num|d(None)) }}
{%- if tagpage -%} {%- if tagpage -%}
{{ content_renderer.render_content(tagpage.content, lang) }} {{ content_renderer.render_content(tagpage.content, lang) }}
...@@ -51,6 +55,8 @@ ...@@ -51,6 +55,8 @@
{{ section_custom(s, lang) }} {{ section_custom(s, lang) }}
{%- elif s.type == "tag" -%} {%- elif s.type == "tag" -%}
{{ section_tag(s, lang) }} {{ section_tag(s, lang) }}
{%- elif s.type == "relevant" -%}
{{ section_relevant(s, lang) }}
{%- else -%} {%- else -%}
<br /> <br />
<strong>ERROR: render.section: Unknown section type: {{ s.type|e }}</strong><br /> <strong>ERROR: render.section: Unknown section type: {{ s.type|e }}</strong><br />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment