Compare commits
10 commits
1cc87fa90d
...
8f28d9a11d
Author | SHA1 | Date | |
---|---|---|---|
8f28d9a11d | |||
1057189416 | |||
|
b7c3285563 | ||
|
a31ff4e2c9 | ||
|
73e216f522 | ||
|
f576582b9b | ||
|
19ccfbdeaf | ||
|
ab0dbd5542 | ||
|
c7698d2b31 | ||
|
e7a78c4ff7 |
22 changed files with 305 additions and 78 deletions
28
.github/workflows/main.yml
vendored
Normal file
28
.github/workflows/main.yml
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
name: Python package
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
strategy:
|
||||||
|
max-parallel: 4
|
||||||
|
matrix:
|
||||||
|
python-version: [2.7, 3.5, 3.6, 3.7]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r tests/requirements.txt
|
||||||
|
pelican-themes -i ../attila
|
||||||
|
- name: Test with pytest
|
||||||
|
run: |
|
||||||
|
cd tests
|
||||||
|
pytest
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
*.pyc
|
*.pyc
|
||||||
*.log
|
*.log
|
||||||
output
|
output
|
||||||
|
tests/.cache/
|
21
README.adoc
21
README.adoc
|
@ -81,14 +81,20 @@ You can set cover images for your blog, article, page, tag, category and author.
|
||||||
|
|
||||||
The is the cover image for your site main index.html.
|
The is the cover image for your site main index.html.
|
||||||
|
|
||||||
To set blog cover, set the property `HEADER_COVER` in
|
To set blog cover, set the property `HOME_COVER` in
|
||||||
`pelicanconf.py`:
|
`pelicanconf.py`:
|
||||||
|
|
||||||
[source,python]
|
[source,python]
|
||||||
----
|
----
|
||||||
HEADER_COVER = '/assets/images/blog_cover.png'
|
HOME_COVER = '/assets/images/blog_cover.png'
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
HEADER_COVER property is deprecated. Work around will be use HOME_COVER and use cover in individual articles.
|
||||||
|
This property will be used if there is no cover image set to an article, page, tag, category, author.
|
||||||
|
====
|
||||||
|
|
||||||
[[article-cover]]
|
[[article-cover]]
|
||||||
==== Article Cover
|
==== Article Cover
|
||||||
|
|
||||||
|
@ -167,17 +173,22 @@ For more refer link:#author-bio[author] .
|
||||||
=== Header Color
|
=== Header Color
|
||||||
|
|
||||||
To define a simple header background color, set the property
|
To define a simple header background color, set the property
|
||||||
`HEADER_COLOR` in `pelicanconf.py`:
|
`HOME_COLOR` in `pelicanconf.py`:
|
||||||
|
|
||||||
[source,python]
|
[source,python]
|
||||||
----
|
----
|
||||||
HEADER_COLOR = 'black'
|
HOME_COLOR = 'black'
|
||||||
----
|
----
|
||||||
|
|
||||||
you can use any valid css color. This will be used if there is no cover
|
you can use any valid css color. This will be used if there is no cover
|
||||||
image set in link:#articles[article] level and site level.
|
image set in link:#articles[article] level and site level.
|
||||||
|
|
||||||
This property will be used if there is no cover image set to an article, page, tag, category, author.
|
|
||||||
|
[NOTE]
|
||||||
|
====
|
||||||
|
HEADER_COLOR property is deprecated. Work around will be use HOME_COLOR and use color in individual articles.
|
||||||
|
This property will be used if there is no HEADER_COVER and cover image set to an article, page, tag, category, author.
|
||||||
|
====
|
||||||
|
|
||||||
[[social-urls]]
|
[[social-urls]]
|
||||||
=== Social URLs
|
=== Social URLs
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -15,7 +15,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -36,8 +36,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -27,10 +27,10 @@
|
||||||
{% set selected_color = HEADER_COLOR %}
|
{% set selected_color = HEADER_COLOR %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% block canonical_url %}<link href="{{ SITEURL }}/{{ article.url }}" rel="canonical" />{% endblock canonical_url %}
|
||||||
{% block head %}
|
{% block head %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
|
|
||||||
<link href="{{ SITEURL }}/{{ article.url }}" rel="canonical" />
|
|
||||||
{% for keyword in article.keywords %}
|
{% for keyword in article.keywords %}
|
||||||
<meta name="keywords" content="{{keyword}}" >
|
<meta name="keywords" content="{{keyword}}" >
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="post-header" class="has-cover">
|
<header id="post-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -102,8 +102,6 @@
|
||||||
<div class="post-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="post-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="post-cover cover" style="background-color: {{ selected_color }}">
|
<div class="post-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="post-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -66,14 +66,12 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
{% if AUTHORS_BIO and author.name.lower() in AUTHORS_BIO %}
|
{% if AUTHORS_BIO and author.name.lower() in AUTHORS_BIO %}
|
||||||
<section id="blog-author" class="has-cover" >
|
<section id="blog-author" {% if selected_cover or selected_color %}class="has-cover"{% endif %} >
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<aside class="post-author">
|
<aside class="post-author">
|
||||||
{% if selected_avatar %}
|
{% if selected_avatar %}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -37,8 +37,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="referrer" content="origin" />
|
<meta name="referrer" content="origin" />
|
||||||
<meta name="generator" content="Pelican" />
|
<meta name="generator" content="Pelican" />
|
||||||
<link href="{{ SITEURL }}/" rel="canonical" />
|
{% block canonical_url %}<link href="{{ SITEURL }}/" rel="canonical" />{% endblock canonical_url %}
|
||||||
|
|
||||||
<!-- Feed -->
|
<!-- Feed -->
|
||||||
{% for name,link in SOCIAL if name.lower() in ['rss', 'rss-square', 'feed'] %}
|
{% for name,link in SOCIAL if name.lower() in ['rss', 'rss-square', 'feed'] %}
|
||||||
|
@ -116,6 +116,7 @@
|
||||||
</footer>
|
</footer>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/script.js"></script>
|
<script type="text/javascript" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/script.js"></script>
|
||||||
|
|
||||||
{% if JS_OVERRIDE %}
|
{% if JS_OVERRIDE %}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -36,8 +36,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -45,8 +45,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -12,14 +12,22 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% elif HOME_COVER %}
|
||||||
|
{% if HOME_COVER|lower|truncate(4, True, '') == "http" %}
|
||||||
|
{% set selected_cover = HOME_COVER %}
|
||||||
|
{% else %}
|
||||||
|
{% set selected_cover = SITEURL+"/"+HOME_COVER %}
|
||||||
|
{% endif %}
|
||||||
{% elif HEADER_COLOR %}
|
{% elif HEADER_COLOR %}
|
||||||
{% set selected_color = HEADER_COLOR %}
|
{% set selected_color = HEADER_COLOR %}
|
||||||
|
{% elif HOME_COLOR %}
|
||||||
|
{% set selected_color = HOME_COLOR %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -40,8 +48,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
{% block title %}{{ page.title }}{% endblock title %}
|
{% block title %}{{ page.title }}{% endblock title %}
|
||||||
|
|
||||||
|
{% block canonical_url %}
|
||||||
|
<link href="{{ SITEURL }}/{{ page.url }}" rel="canonical" />
|
||||||
|
{% endblock canonical_url %}
|
||||||
|
|
||||||
{# <!-- Choosing cover image --> #}
|
{# <!-- Choosing cover image --> #}
|
||||||
{% if page.cover %}
|
{% if page.cover %}
|
||||||
{% if page.cover|lower|truncate(4, True, '') == "http" %}
|
{% if page.cover|lower|truncate(4, True, '') == "http" %}
|
||||||
|
@ -30,7 +34,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="post-header" class="has-cover">
|
<header id="post-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -51,8 +55,6 @@
|
||||||
<div class="post-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="post-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="post-cover cover" style="background-color: {{ selected_color }}">
|
<div class="post-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="post-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
{% for name,link in SOCIAL if name.lower() in ['twitter'] %}
|
{% for name,link in SOCIAL if name.lower() in ['twitter'] %}
|
||||||
<meta name="twitter:card" content="summary_large_image">
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
<meta name="twitter:site" content="@{{ link|replace('http://', 'https://')|replace('https://twitter.com/', '') }}">
|
<meta name="twitter:site" content="@{{ link|replace('http://', 'https://')|replace('https://twitter.com/', '') }}">
|
||||||
<meta name="twitter:title" content="{{ article.title }}">
|
<meta name="twitter:title" content="{{ article.title | striptags }}">
|
||||||
<meta name="twitter:url" content="{{ SITEURL }}/{{ article.url }}">
|
<meta name="twitter:url" content="{{ SITEURL }}/{{ article.url }}">
|
||||||
|
|
||||||
{% if article.twitter_image %}
|
{% if article.twitter_image %}
|
||||||
|
|
|
@ -2,10 +2,20 @@
|
||||||
|
|
||||||
{% block title %}{{ SITENAME }} - Archives for {{ period | reverse | join (' ') }}{% endblock %}
|
{% block title %}{{ SITENAME }} - Archives for {{ period | reverse | join (' ') }}{% endblock %}
|
||||||
|
|
||||||
|
{% if HEADER_COVER %}
|
||||||
|
{% if HEADER_COVER|lower|truncate(4, True, '') == "http" %}
|
||||||
|
{% set selected_cover = HEADER_COVER %}
|
||||||
|
{% else %}
|
||||||
|
{% set selected_cover = SITEURL+"/"+HEADER_COVER %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif HEADER_COLOR %}
|
||||||
|
{% set selected_color = HEADER_COLOR %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -22,15 +32,13 @@
|
||||||
</span>
|
</span>
|
||||||
</nav>
|
</nav>
|
||||||
<h1 class="post-title">Archives for {{ period | reverse | join (' ') }}</h1>
|
<h1 class="post-title">Archives for {{ period | reverse | join (' ') }}</h1>
|
||||||
{% if HEADER_COVER %}
|
{% if selected_cover %}
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ HEADER_COVER }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif HEADER_COLOR %}
|
{% elif selected_color %}
|
||||||
<div class="post-cover cover" style="background-color: {{ HEADER_COLOR }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
{% endif %}
|
||||||
<div class="post-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
{% endblock header %}
|
{% endblock header %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -45,8 +45,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<!-- Page Header -->
|
<!-- Page Header -->
|
||||||
<!-- Set your background image for this header on the line below. -->
|
<!-- Set your background image for this header on the line below. -->
|
||||||
<header id="blog-header" class="has-cover">
|
<header id="blog-header" {% if selected_cover or selected_color %}class="has-cover"{% endif %}>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<nav id="navigation">
|
<nav id="navigation">
|
||||||
{% if SITE_LOGO %}
|
{% if SITE_LOGO %}
|
||||||
|
@ -36,8 +36,6 @@
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
<div class="blog-cover cover" style="background-image: url('{{ selected_cover }}')">
|
||||||
{% elif selected_color %}
|
{% elif selected_color %}
|
||||||
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
<div class="blog-cover cover" style="background-color: {{ selected_color }}">
|
||||||
{% else %}
|
|
||||||
<div class="blog-cover cover" style="background-image: url('{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/post-bg.jpg')">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -4,6 +4,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
AUTHOR = u'Zutrinken'
|
AUTHOR = u'Zutrinken'
|
||||||
SITENAME = u'Attila Demo'
|
SITENAME = u'Attila Demo'
|
||||||
|
SITESUBTITLE = u'Blog description here.'
|
||||||
SITEURL = ''
|
SITEURL = ''
|
||||||
|
|
||||||
PATH = 'content'
|
PATH = 'content'
|
||||||
|
@ -114,6 +115,18 @@ COLOR_SCHEME_CSS = 'github.css'
|
||||||
|
|
||||||
CSS_OVERRIDE = ['assets/css/myblog.css']
|
CSS_OVERRIDE = ['assets/css/myblog.css']
|
||||||
|
|
||||||
|
# Jinja config - Pelican 4
|
||||||
|
JINJA_ENVIRONMENT = {
|
||||||
|
'extensions' :[
|
||||||
|
'jinja2.ext.loopcontrols',
|
||||||
|
'jinja2.ext.i18n',
|
||||||
|
'jinja2.ext.with_',
|
||||||
|
'jinja2.ext.do'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
JINJA_FILTERS = {'max': max}
|
||||||
|
|
||||||
# AUTHORS_BIO = {
|
# AUTHORS_BIO = {
|
||||||
# "arul": {
|
# "arul": {
|
||||||
# "name": "Arul",
|
# "name": "Arul",
|
||||||
|
|
3
tests/requirements.txt
Normal file
3
tests/requirements.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
pelican
|
||||||
|
BeautifulSoup4
|
||||||
|
pytest
|
|
@ -246,10 +246,15 @@ class BaseTest(object):
|
||||||
def gen_article_and_html_from_rst(self, rstPath):
|
def gen_article_and_html_from_rst(self, rstPath):
|
||||||
content, metadata = self.reader.read(rstPath)
|
content, metadata = self.reader.read(rstPath)
|
||||||
article = Article(content=content, metadata=metadata)
|
article = Article(content=content, metadata=metadata)
|
||||||
generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
context = self.settings.copy()
|
||||||
|
context['generated_content'] = {}
|
||||||
|
context['static_links'] = set()
|
||||||
|
context['static_content'] = {}
|
||||||
|
context['localsiteurl'] = self.settings['SITEURL']
|
||||||
|
generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
f = lambda a: True if (a.slug == article.slug) else False
|
f = lambda a: True if (a.slug == article.slug) else False
|
||||||
result = filter(f, generator.context["articles"])[0]
|
result = list(filter(f, generator.context["articles"]))[0]
|
||||||
self.writer.write_file(
|
self.writer.write_file(
|
||||||
result.save_as, generator.get_template('article'),
|
result.save_as, generator.get_template('article'),
|
||||||
generator.context, article=result)
|
generator.context, article=result)
|
||||||
|
@ -259,10 +264,15 @@ class BaseTest(object):
|
||||||
def gen_page_and_html_from_rst(self, rstPath):
|
def gen_page_and_html_from_rst(self, rstPath):
|
||||||
content, metadata = self.reader.read(rstPath)
|
content, metadata = self.reader.read(rstPath)
|
||||||
page = Page(content=content, metadata=metadata)
|
page = Page(content=content, metadata=metadata)
|
||||||
generator = PagesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
context = self.settings.copy()
|
||||||
|
context['generated_content'] = {}
|
||||||
|
context['static_links'] = set()
|
||||||
|
context['static_content'] = {}
|
||||||
|
context['localsiteurl'] = self.settings['SITEURL']
|
||||||
|
generator = PagesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
f = lambda a: True if (a.slug == page.slug) else False
|
f = lambda a: True if (a.slug == page.slug) else False
|
||||||
result = filter(f, generator.context["pages"])[0]
|
result = list(filter(f, generator.context["pages"]))[0]
|
||||||
self.writer.write_file(
|
self.writer.write_file(
|
||||||
result.save_as, generator.get_template('page'),
|
result.save_as, generator.get_template('page'),
|
||||||
generator.context, page=result)
|
generator.context, page=result)
|
||||||
|
@ -270,7 +280,12 @@ class BaseTest(object):
|
||||||
return (result, soup)
|
return (result, soup)
|
||||||
|
|
||||||
def gen_tag_and_html_from_name(self, name):
|
def gen_tag_and_html_from_name(self, name):
|
||||||
generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
context = self.settings.copy()
|
||||||
|
context['generated_content'] = {}
|
||||||
|
context['static_links'] = set()
|
||||||
|
context['static_content'] = {}
|
||||||
|
context['localsiteurl'] = self.settings['SITEURL']
|
||||||
|
generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
generator.generate_tags(self.writer.write_file)
|
generator.generate_tags(self.writer.write_file)
|
||||||
selectedTag = None
|
selectedTag = None
|
||||||
|
@ -283,7 +298,12 @@ class BaseTest(object):
|
||||||
return (selectedTag, soup)
|
return (selectedTag, soup)
|
||||||
|
|
||||||
def gen_category_and_html_from_name(self, name):
|
def gen_category_and_html_from_name(self, name):
|
||||||
generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
context = self.settings.copy()
|
||||||
|
context['generated_content'] = {}
|
||||||
|
context['static_links'] = set()
|
||||||
|
context['static_content'] = {}
|
||||||
|
context['localsiteurl'] = self.settings['SITEURL']
|
||||||
|
generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
generator.generate_categories(self.writer.write_file)
|
generator.generate_categories(self.writer.write_file)
|
||||||
selectedCategory = None
|
selectedCategory = None
|
||||||
|
@ -296,7 +316,12 @@ class BaseTest(object):
|
||||||
return (selectedCategory, soup)
|
return (selectedCategory, soup)
|
||||||
|
|
||||||
def gen_author_and_html_from_name(self, name):
|
def gen_author_and_html_from_name(self, name):
|
||||||
generator = ArticlesGenerator( context=self.settings.copy(), settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
context = self.settings.copy()
|
||||||
|
context['generated_content'] = {}
|
||||||
|
context['static_links'] = set()
|
||||||
|
context['static_content'] = {}
|
||||||
|
context['localsiteurl'] = self.settings['SITEURL']
|
||||||
|
generator = ArticlesGenerator( context=context, settings=self.settings, path=CONTENT_DIR, theme=self.settings['THEME'], output_path=OUTPUT_DIR)
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
generator.generate_authors(self.writer.write_file)
|
generator.generate_authors(self.writer.write_file)
|
||||||
selectedAuthor = None
|
selectedAuthor = None
|
||||||
|
|
|
@ -10,7 +10,7 @@ def tearDownModule():
|
||||||
print("teardown module")
|
print("teardown module")
|
||||||
try:
|
try:
|
||||||
rmtree(OUTPUT_DIR)
|
rmtree(OUTPUT_DIR)
|
||||||
except OSError, e:
|
except OSError as e:
|
||||||
print ("Error: %s - %s." % (e.filename,e.strerror))
|
print ("Error: %s - %s." % (e.filename,e.strerror))
|
||||||
|
|
||||||
class AuthorSocialLinksTest(unittest.TestCase, BaseTest):
|
class AuthorSocialLinksTest(unittest.TestCase, BaseTest):
|
||||||
|
|
|
@ -13,7 +13,7 @@ def tearDownModule():
|
||||||
print("teardown module")
|
print("teardown module")
|
||||||
try:
|
try:
|
||||||
rmtree(OUTPUT_DIR)
|
rmtree(OUTPUT_DIR)
|
||||||
except OSError, e:
|
except OSError as e:
|
||||||
print ("Error: %s - %s." % (e.filename,e.strerror))
|
print ("Error: %s - %s." % (e.filename,e.strerror))
|
||||||
|
|
||||||
class ArticleCoverImageTest(unittest.TestCase, BaseTest):
|
class ArticleCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
@ -59,9 +59,9 @@ class ArticleCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
def test_article_theme_cover(self):
|
def test_article_theme_cover(self):
|
||||||
rstPath="content/article_without_cover.rst"
|
rstPath="content/article_without_cover.rst"
|
||||||
result, soup = self.gen_article_and_html_from_rst(rstPath)
|
result, soup = self.gen_article_and_html_from_rst(rstPath)
|
||||||
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
selected = soup.find(id="post-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_article_header_color(self):
|
def test_article_header_color(self):
|
||||||
self.settings['HEADER_COLOR']='blue'
|
self.settings['HEADER_COLOR']='blue'
|
||||||
|
@ -120,9 +120,9 @@ class PageCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
def test_page_theme_cover(self):
|
def test_page_theme_cover(self):
|
||||||
rstPath="content/pages/page_without_cover_image.rst"
|
rstPath="content/pages/page_without_cover_image.rst"
|
||||||
result, soup = self.gen_page_and_html_from_rst(rstPath)
|
result, soup = self.gen_page_and_html_from_rst(rstPath)
|
||||||
selected = soup.find(name="div", attrs={"class": "post-cover cover"})
|
selected = soup.find(id="post-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_page_header_color(self):
|
def test_page_header_color(self):
|
||||||
self.settings['HEADER_COLOR']='blue'
|
self.settings['HEADER_COLOR']='blue'
|
||||||
|
@ -156,9 +156,9 @@ class TagCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_footag_theme_cover(self):
|
def test_footag_theme_cover(self):
|
||||||
result, soup = self.gen_tag_and_html_from_name("footag")
|
result, soup = self.gen_tag_and_html_from_name("footag")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_footag_cover(self):
|
def test_footag_cover(self):
|
||||||
tagName = "footag"
|
tagName = "footag"
|
||||||
|
@ -204,9 +204,9 @@ class TagCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_bartag_theme_cover(self):
|
def test_bartag_theme_cover(self):
|
||||||
result, soup = self.gen_tag_and_html_from_name("bartag")
|
result, soup = self.gen_tag_and_html_from_name("bartag")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_bartag_cover(self):
|
def test_bartag_cover(self):
|
||||||
tagName = "bartag"
|
tagName = "bartag"
|
||||||
|
@ -261,9 +261,9 @@ class CategoryCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_foo_theme_cover(self):
|
def test_foo_theme_cover(self):
|
||||||
result, soup = self.gen_category_and_html_from_name("foo")
|
result, soup = self.gen_category_and_html_from_name("foo")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_foo_cover(self):
|
def test_foo_cover(self):
|
||||||
categoryName = "foo"
|
categoryName = "foo"
|
||||||
|
@ -309,9 +309,9 @@ class CategoryCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_bar_theme_cover(self):
|
def test_bar_theme_cover(self):
|
||||||
result, soup = self.gen_category_and_html_from_name("bar")
|
result, soup = self.gen_category_and_html_from_name("bar")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_bar_cover(self):
|
def test_bar_cover(self):
|
||||||
categoryName = "bar"
|
categoryName = "bar"
|
||||||
|
@ -365,9 +365,9 @@ class AuthorCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_arul_theme_cover(self):
|
def test_arul_theme_cover(self):
|
||||||
result, soup = self.gen_author_and_html_from_name("arul")
|
result, soup = self.gen_author_and_html_from_name("arul")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_arul_cover(self):
|
def test_arul_cover(self):
|
||||||
authorName = "arul"
|
authorName = "arul"
|
||||||
|
@ -417,9 +417,9 @@ class AuthorCoverImageTest(unittest.TestCase, BaseTest):
|
||||||
|
|
||||||
def test_raj_theme_cover(self):
|
def test_raj_theme_cover(self):
|
||||||
result, soup = self.gen_author_and_html_from_name("raj")
|
result, soup = self.gen_author_and_html_from_name("raj")
|
||||||
selected = soup.find(name="div", attrs={"class": "blog-cover cover"})
|
selected = soup.find(id="blog-header")
|
||||||
# Assertion
|
# Assertion
|
||||||
self.assertTrue("/theme/images/post-bg.jpg" in selected["style"])
|
self.assertTrue("class" not in selected)
|
||||||
|
|
||||||
def test_raj_cover(self):
|
def test_raj_cover(self):
|
||||||
authorName = "raj"
|
authorName = "raj"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue