platzky 0.2.5__py3-none-any.whl → 0.2.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- platzky/__init__.py +1 -1
- platzky/blog/blog.py +1 -3
- platzky/config.py +2 -1
- platzky/db/db.py +12 -8
- platzky/db/google_json_db.py +1 -3
- platzky/db/graph_ql_db.py +38 -12
- platzky/db/json_db.py +6 -7
- platzky/models.py +3 -2
- platzky/platzky.py +1 -6
- platzky/plugins/redirections/entrypoint.py +4 -8
- platzky/plugins/sendmail/entrypoint.py +2 -6
- platzky/seo/seo.py +4 -9
- platzky/templates/base.html +2 -8
- platzky/templates/head_meta.html +1 -2
- {platzky-0.2.5.dist-info → platzky-0.2.6.dist-info}/METADATA +1 -1
- {platzky-0.2.5.dist-info → platzky-0.2.6.dist-info}/RECORD +17 -17
- {platzky-0.2.5.dist-info → platzky-0.2.6.dist-info}/WHEEL +0 -0
platzky/__init__.py
CHANGED
platzky/blog/blog.py
CHANGED
|
@@ -35,9 +35,7 @@ def create_blog_blueprint(db, blog_prefix: str, locale_func):
|
|
|
35
35
|
@blog.route("/feed", methods=["GET"])
|
|
36
36
|
def get_feed():
|
|
37
37
|
lang = locale_func()
|
|
38
|
-
response = make_response(
|
|
39
|
-
render_template("feed.xml", posts=db.get_all_posts(lang))
|
|
40
|
-
)
|
|
38
|
+
response = make_response(render_template("feed.xml", posts=db.get_all_posts(lang)))
|
|
41
39
|
response.headers["Content-Type"] = "application/xml"
|
|
42
40
|
return response
|
|
43
41
|
|
platzky/config.py
CHANGED
platzky/db/db.py
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
1
2
|
from functools import partial
|
|
2
3
|
from typing import Any, Callable
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel, Field
|
|
5
6
|
|
|
6
|
-
from
|
|
7
|
-
from ..models import MenuItem, Post, Page, Color
|
|
7
|
+
from ..models import Color, MenuItem, Page, Post
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class DB(ABC):
|
|
@@ -28,7 +28,7 @@ class DB(ABC):
|
|
|
28
28
|
f"Method {name} defined in {cls.__name__} does not exist in superclasses"
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
-
def extend(self, function_name: str, function: Callable) -> None:
|
|
31
|
+
def extend(self, function_name: str, function: Callable[..., Any]) -> None:
|
|
32
32
|
"""
|
|
33
33
|
Add a function to the DB object. The function must take the DB object as first parameter.
|
|
34
34
|
|
|
@@ -37,9 +37,7 @@ class DB(ABC):
|
|
|
37
37
|
function (Callable): The function to add to the DB object.
|
|
38
38
|
"""
|
|
39
39
|
if not callable(function):
|
|
40
|
-
raise ValueError(
|
|
41
|
-
f"The provided func for '{function_name}' is not callable."
|
|
42
|
-
)
|
|
40
|
+
raise ValueError(f"The provided func for '{function_name}' is not callable.")
|
|
43
41
|
try:
|
|
44
42
|
bound_function = partial(function, self)
|
|
45
43
|
setattr(self, function_name, bound_function)
|
|
@@ -71,7 +69,13 @@ class DB(ABC):
|
|
|
71
69
|
pass
|
|
72
70
|
|
|
73
71
|
@abstractmethod
|
|
74
|
-
def get_logo_url(
|
|
72
|
+
def get_logo_url(
|
|
73
|
+
self,
|
|
74
|
+
) -> str: # TODO provide alternative text along with the URL of logo
|
|
75
|
+
pass
|
|
76
|
+
|
|
77
|
+
@abstractmethod
|
|
78
|
+
def get_favicon_url(self) -> str:
|
|
75
79
|
pass
|
|
76
80
|
|
|
77
81
|
@abstractmethod
|
|
@@ -83,7 +87,7 @@ class DB(ABC):
|
|
|
83
87
|
pass
|
|
84
88
|
|
|
85
89
|
@abstractmethod
|
|
86
|
-
def get_plugins_data(self) -> list:
|
|
90
|
+
def get_plugins_data(self) -> list[Any]:
|
|
87
91
|
pass
|
|
88
92
|
|
|
89
93
|
@abstractmethod
|
platzky/db/google_json_db.py
CHANGED
|
@@ -22,9 +22,7 @@ def db_from_config(config: GoogleJsonDbConfig):
|
|
|
22
22
|
|
|
23
23
|
def get_db(config):
|
|
24
24
|
google_json_db_config = GoogleJsonDbConfig.model_validate(config)
|
|
25
|
-
return GoogleJsonDb(
|
|
26
|
-
google_json_db_config.bucket_name, google_json_db_config.source_blob_name
|
|
27
|
-
)
|
|
25
|
+
return GoogleJsonDb(google_json_db_config.bucket_name, google_json_db_config.source_blob_name)
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
def get_blob(bucket_name, source_blob_name):
|
platzky/db/graph_ql_db.py
CHANGED
|
@@ -5,8 +5,8 @@ from gql import Client, gql
|
|
|
5
5
|
from gql.transport.aiohttp import AIOHTTPTransport
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
8
|
-
from .db import DB, DBConfig
|
|
9
8
|
from ..models import Color, Post
|
|
9
|
+
from .db import DB, DBConfig
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def db_config_type():
|
|
@@ -58,9 +58,7 @@ class GraphQL(DB):
|
|
|
58
58
|
self.module_name = "graph_ql_db"
|
|
59
59
|
self.db_name = "GraphQLDb"
|
|
60
60
|
full_token = "bearer " + token
|
|
61
|
-
transport = AIOHTTPTransport(
|
|
62
|
-
url=endpoint, headers={"Authorization": full_token}
|
|
63
|
-
)
|
|
61
|
+
transport = AIOHTTPTransport(url=endpoint, headers={"Authorization": full_token})
|
|
64
62
|
self.client = Client(transport=transport)
|
|
65
63
|
super().__init__()
|
|
66
64
|
|
|
@@ -97,9 +95,7 @@ class GraphQL(DB):
|
|
|
97
95
|
}
|
|
98
96
|
"""
|
|
99
97
|
)
|
|
100
|
-
raw_ql_posts = self.client.execute(all_posts, variable_values={"lang": lang})[
|
|
101
|
-
"posts"
|
|
102
|
-
]
|
|
98
|
+
raw_ql_posts = self.client.execute(all_posts, variable_values={"lang": lang})["posts"]
|
|
103
99
|
|
|
104
100
|
return [Post.model_validate(_standarize_post(post)) for post in raw_ql_posts]
|
|
105
101
|
|
|
@@ -127,7 +123,7 @@ class GraphQL(DB):
|
|
|
127
123
|
slug
|
|
128
124
|
author {
|
|
129
125
|
name
|
|
130
|
-
}
|
|
126
|
+
}
|
|
131
127
|
contentInRichText {
|
|
132
128
|
markdown
|
|
133
129
|
html
|
|
@@ -191,9 +187,7 @@ class GraphQL(DB):
|
|
|
191
187
|
}
|
|
192
188
|
"""
|
|
193
189
|
)
|
|
194
|
-
return self.client.execute(post, variable_values={"tag": tag, "lang": lang})[
|
|
195
|
-
"posts"
|
|
196
|
-
]
|
|
190
|
+
return self.client.execute(post, variable_values={"tag": tag, "lang": lang})["posts"]
|
|
197
191
|
|
|
198
192
|
def add_comment(self, author_name, comment, post_slug):
|
|
199
193
|
add_comment = gql(
|
|
@@ -224,7 +218,39 @@ class GraphQL(DB):
|
|
|
224
218
|
return str("")
|
|
225
219
|
|
|
226
220
|
def get_logo_url(self):
|
|
227
|
-
|
|
221
|
+
logo = gql(
|
|
222
|
+
"""
|
|
223
|
+
query myquery {
|
|
224
|
+
logos(stage: PUBLISHED) {
|
|
225
|
+
logo {
|
|
226
|
+
alternateText
|
|
227
|
+
image {
|
|
228
|
+
url
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
"""
|
|
234
|
+
)
|
|
235
|
+
try:
|
|
236
|
+
return self.client.execute(logo)["logos"][0]["logo"]["image"]["url"]
|
|
237
|
+
except IndexError:
|
|
238
|
+
return ""
|
|
239
|
+
|
|
240
|
+
def get_favicon_url(self):
|
|
241
|
+
favicon = gql(
|
|
242
|
+
"""
|
|
243
|
+
query myquery {
|
|
244
|
+
favicons(stage: PUBLISHED) {
|
|
245
|
+
favicon {
|
|
246
|
+
url
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
"""
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
return self.client.execute(favicon)["favicons"][0]["favicon"]["url"]
|
|
228
254
|
|
|
229
255
|
def get_primary_color(self) -> Color:
|
|
230
256
|
return Color()
|
platzky/db/json_db.py
CHANGED
|
@@ -3,8 +3,8 @@ from typing import Any, Dict
|
|
|
3
3
|
|
|
4
4
|
from pydantic import Field
|
|
5
5
|
|
|
6
|
-
from .db import DB, DBConfig
|
|
7
6
|
from ..models import MenuItem, Post
|
|
7
|
+
from .db import DB, DBConfig
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def db_config_type():
|
|
@@ -51,9 +51,7 @@ class Json(DB):
|
|
|
51
51
|
# TODO: add test for non-existing page
|
|
52
52
|
def get_page(self, slug):
|
|
53
53
|
list_of_pages = (
|
|
54
|
-
page
|
|
55
|
-
for page in self._get_site_content().get("pages")
|
|
56
|
-
if page["slug"] == slug
|
|
54
|
+
page for page in self._get_site_content().get("pages") if page["slug"] == slug
|
|
57
55
|
)
|
|
58
56
|
page = Post.model_validate(next(list_of_pages))
|
|
59
57
|
return page
|
|
@@ -64,9 +62,7 @@ class Json(DB):
|
|
|
64
62
|
return menu_items_list
|
|
65
63
|
|
|
66
64
|
def get_posts_by_tag(self, tag, lang):
|
|
67
|
-
return (
|
|
68
|
-
post for post in self._get_site_content()["posts"] if tag in post["tags"]
|
|
69
|
-
)
|
|
65
|
+
return (post for post in self._get_site_content()["posts"] if tag in post["tags"])
|
|
70
66
|
|
|
71
67
|
def _get_site_content(self):
|
|
72
68
|
content = self.data.get("site_content")
|
|
@@ -77,6 +73,9 @@ class Json(DB):
|
|
|
77
73
|
def get_logo_url(self):
|
|
78
74
|
return self._get_site_content().get("logo_url", "")
|
|
79
75
|
|
|
76
|
+
def get_favicon_url(self):
|
|
77
|
+
return self._get_site_content().get("favicon_url", "")
|
|
78
|
+
|
|
80
79
|
def get_font(self) -> str:
|
|
81
80
|
return self._get_site_content().get("font", "")
|
|
82
81
|
|
platzky/models.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
from pydantic import BaseModel
|
|
2
1
|
import datetime
|
|
2
|
+
|
|
3
3
|
import humanize
|
|
4
|
+
from pydantic import BaseModel
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class Image(BaseModel):
|
|
@@ -40,7 +41,7 @@ class Post(BaseModel):
|
|
|
40
41
|
def __lt__(self, other):
|
|
41
42
|
if isinstance(other, Post):
|
|
42
43
|
return self.date < other.date
|
|
43
|
-
|
|
44
|
+
raise NotImplementedError("Posts can only be compared with other posts")
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
Page = Post
|
platzky/platzky.py
CHANGED
|
@@ -87,12 +87,6 @@ def create_engine(config: Config, db) -> Engine:
|
|
|
87
87
|
session["language"] = lang
|
|
88
88
|
return redirect(request.referrer)
|
|
89
89
|
|
|
90
|
-
@app.route("/logo", methods=["GET"])
|
|
91
|
-
def logo():
|
|
92
|
-
return redirect(
|
|
93
|
-
"https://www.problematy.pl/wp-content/uploads/2023/08/kolor_poziom.png"
|
|
94
|
-
)
|
|
95
|
-
|
|
96
90
|
def url_link(x: str) -> str:
|
|
97
91
|
return urllib.parse.quote(x, safe="")
|
|
98
92
|
|
|
@@ -108,6 +102,7 @@ def create_engine(config: Config, db) -> Engine:
|
|
|
108
102
|
"url_link": url_link,
|
|
109
103
|
"menu_items": app.db.get_menu_items(),
|
|
110
104
|
"logo_url": app.db.get_logo_url(),
|
|
105
|
+
"favicon_url": app.db.get_favicon_url(),
|
|
111
106
|
"font": app.db.get_font(),
|
|
112
107
|
"primary_color": app.db.get_primary_color(),
|
|
113
108
|
"secondary_color": app.db.get_secondary_color(),
|
|
@@ -27,8 +27,7 @@ def graph_ql_db_get_redirections(self):
|
|
|
27
27
|
"""
|
|
28
28
|
)
|
|
29
29
|
return {
|
|
30
|
-
x["source"]: x["destination"]
|
|
31
|
-
for x in self.client.execute(redirections)["redirections"]
|
|
30
|
+
x["source"]: x["destination"] for x in self.client.execute(redirections)["redirections"]
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
|
|
@@ -37,11 +36,8 @@ class Redirection(BaseModel):
|
|
|
37
36
|
destiny: str
|
|
38
37
|
|
|
39
38
|
|
|
40
|
-
def parse_redirections(config: dict) -> list[Redirection]:
|
|
41
|
-
return [
|
|
42
|
-
Redirection(source=source, destiny=destiny)
|
|
43
|
-
for source, destiny in config.items()
|
|
44
|
-
]
|
|
39
|
+
def parse_redirections(config: dict[str, str]) -> list[Redirection]:
|
|
40
|
+
return [Redirection(source=source, destiny=destiny) for source, destiny in config.items()]
|
|
45
41
|
|
|
46
42
|
|
|
47
43
|
def setup_routes(app, redirections):
|
|
@@ -62,7 +58,7 @@ def redirect_with_name(destiny, code, name):
|
|
|
62
58
|
return named_redirect
|
|
63
59
|
|
|
64
60
|
|
|
65
|
-
def process(app, config: dict) -> object:
|
|
61
|
+
def process(app, config: dict[str, str]) -> object:
|
|
66
62
|
redirections = parse_redirections(config)
|
|
67
63
|
setup_routes(app, redirections)
|
|
68
64
|
return app
|
|
@@ -3,12 +3,8 @@ import smtplib
|
|
|
3
3
|
from pydantic import BaseModel, Field
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def send_mail(
|
|
7
|
-
|
|
8
|
-
):
|
|
9
|
-
full_message = (
|
|
10
|
-
f"From: {sender_email}\nTo: {receiver_email}\nSubject: {subject}\n\n{message}"
|
|
11
|
-
)
|
|
6
|
+
def send_mail(sender_email, password, smtp_server, port, receiver_email, subject, message):
|
|
7
|
+
full_message = f"From: {sender_email}\nTo: {receiver_email}\nSubject: {subject}\n\n{message}"
|
|
12
8
|
server = smtplib.SMTP_SSL(smtp_server, port)
|
|
13
9
|
server.ehlo()
|
|
14
10
|
server.login(sender_email, password)
|
platzky/seo/seo.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import typing as t
|
|
2
2
|
import urllib.parse
|
|
3
3
|
from os.path import dirname
|
|
4
|
+
|
|
4
5
|
from flask import Blueprint, current_app, make_response, render_template, request
|
|
5
6
|
|
|
6
7
|
|
|
@@ -14,9 +15,7 @@ def create_seo_blueprint(db, config: dict[str, t.Any]):
|
|
|
14
15
|
|
|
15
16
|
@seo.route("/robots.txt")
|
|
16
17
|
def robots():
|
|
17
|
-
robots_response = render_template(
|
|
18
|
-
"robots.txt", domain=request.host, mimetype="text/plain"
|
|
19
|
-
)
|
|
18
|
+
robots_response = render_template("robots.txt", domain=request.host, mimetype="text/plain")
|
|
20
19
|
response = make_response(robots_response)
|
|
21
20
|
response.headers["Content-Type"] = "text/plain"
|
|
22
21
|
return response
|
|
@@ -45,12 +44,8 @@ def create_seo_blueprint(db, config: dict[str, t.Any]):
|
|
|
45
44
|
static_urls = list()
|
|
46
45
|
for rule in current_app.url_map.iter_rules():
|
|
47
46
|
if not str(rule).startswith("/admin") and not str(rule).startswith("/user"):
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
and "GET" in rule.methods
|
|
51
|
-
and len(rule.arguments) == 0
|
|
52
|
-
):
|
|
53
|
-
url = {"loc": f"{host_base}{str(rule)}"}
|
|
47
|
+
if rule.methods is not None and "GET" in rule.methods and len(rule.arguments) == 0:
|
|
48
|
+
url = {"loc": f"{host_base}{rule!s}"}
|
|
54
49
|
static_urls.append(url)
|
|
55
50
|
|
|
56
51
|
# Dynamic routes with dynamic content
|
platzky/templates/base.html
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.Default.css" />
|
|
12
12
|
<link rel="stylesheet" href="{{ font.url }}">
|
|
13
13
|
{% endblock %}
|
|
14
|
-
<title>{% block title %}
|
|
14
|
+
<title>{% block title %}{{app_name}}{% endblock %}</title>
|
|
15
15
|
<meta name="description" content=" {% block description %} {% endblock %} ">
|
|
16
16
|
<style>
|
|
17
17
|
html,
|
|
@@ -98,13 +98,7 @@
|
|
|
98
98
|
<i class="fas fa-sliders-h"></i>
|
|
99
99
|
</button>
|
|
100
100
|
{% endif %}
|
|
101
|
-
<a class="navbar-brand" href="/">
|
|
102
|
-
{% if logo_url %}
|
|
103
|
-
<img src="{{ logo_url }}" class="logo" >
|
|
104
|
-
{% else %}
|
|
105
|
-
{{ _(app_name) }}
|
|
106
|
-
{% endif %}
|
|
107
|
-
</a>
|
|
101
|
+
<a class="navbar-brand" href="/">{% if logo_url %}<img src="{{ logo_url }}" class="logo">{% else %}{{_(app_name)}}{% endif %}</a>
|
|
108
102
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
|
109
103
|
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
|
110
104
|
<i class="fas fa-bars"></i>
|
platzky/templates/head_meta.html
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
<meta charset="utf-8">
|
|
3
3
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
4
4
|
<link rel="alternate" hreflang="{{ current_language }}" href="{{ request.base_url }}"/>
|
|
5
|
-
<link rel="shortcut icon" href="{{
|
|
6
|
-
|
|
5
|
+
<link rel="shortcut icon" href="{{ favicon_url }}" type="image/x-icon">
|
|
7
6
|
<link rel="canonical" href="{{ request.base_url }}"/>
|
|
8
7
|
|
|
9
8
|
<!-- Bootstrap CSS -->
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
platzky/__init__.py,sha256=
|
|
1
|
+
platzky/__init__.py,sha256=cEAqMh-FU8mbfCzFQaWMhKX4lDjoxDiQ9S4hTNsSOMg,160
|
|
2
2
|
platzky/blog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
platzky/blog/blog.py,sha256=
|
|
3
|
+
platzky/blog/blog.py,sha256=caBUewnwd6QrJDv20m4JDfDDjiVu7hM0AJnoTyCdwM4,3009
|
|
4
4
|
platzky/blog/comment_form.py,sha256=4lkNJ_S_2DZmJBbz-NPDqahvy2Zz5AGNH2spFeGIop4,513
|
|
5
|
-
platzky/config.py,sha256=
|
|
5
|
+
platzky/config.py,sha256=WStlXnvoa9sCGPqKW6FuN1GIcp_MIV08FjPME9TD7x4,2204
|
|
6
6
|
platzky/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
platzky/db/db.py,sha256=
|
|
7
|
+
platzky/db/db.py,sha256=SayR69Nxs9aGMfYumLyLIH0LVLVmwiQt9WAICq59gng,2709
|
|
8
8
|
platzky/db/db_loader.py,sha256=CuEiXxhIa4bFMm0vi7ugzm7j3WycilGRKCU6smgIImE,905
|
|
9
|
-
platzky/db/google_json_db.py,sha256=
|
|
10
|
-
platzky/db/graph_ql_db.py,sha256=
|
|
11
|
-
platzky/db/json_db.py,sha256=
|
|
9
|
+
platzky/db/google_json_db.py,sha256=IgfCER7oJ4I_WD4TjhvFFL0voUj6EfeoaVWdoEcHTdA,1499
|
|
10
|
+
platzky/db/graph_ql_db.py,sha256=aIqRxPV-Txr5MY2-qVALby9fHyIvWgvSz2t24M9SNRI,7343
|
|
11
|
+
platzky/db/json_db.py,sha256=AtZoTcM6S2ZHo19rxkCi4h4E4INGieZ4W6H5O2iormA,3246
|
|
12
12
|
platzky/db/json_file_db.py,sha256=UQ8TadELmqOzj_tgNfmzhtCkDkMAgcB9vaUy0GQXUY4,1010
|
|
13
|
-
platzky/models.py,sha256
|
|
14
|
-
platzky/platzky.py,sha256
|
|
13
|
+
platzky/models.py,sha256=-IIlyeLzACeTUpzuzvzJYxtT57E6wRiERoRgXJYMMtY,1502
|
|
14
|
+
platzky/platzky.py,sha256=-01WVpSxZz96NoilFB_2ispHLRrquCsMR9p3F7Tyf1s,4525
|
|
15
15
|
platzky/plugin_loader.py,sha256=KYLDSEd_hseAgBuSbikerU_IFx-YmcYK5UwYw7kla2E,1106
|
|
16
16
|
platzky/plugins/google-tag-manager/entrypoint.py,sha256=yY5UqFvSdj3tt2upwNS8JkTrKcrbwlaaE2XQ6sRiGLc,1011
|
|
17
|
-
platzky/plugins/redirections/entrypoint.py,sha256=
|
|
18
|
-
platzky/plugins/sendmail/entrypoint.py,sha256=
|
|
19
|
-
platzky/seo/seo.py,sha256=
|
|
17
|
+
platzky/plugins/redirections/entrypoint.py,sha256=yoqHsRLqRALdICs5_UMSREkfEo1Lbsjj9tqEA7dsseg,1555
|
|
18
|
+
platzky/plugins/sendmail/entrypoint.py,sha256=16GszfLaYhVUSuCdL4SPVKYN9-mONp-hK5ZWSiLluPo,1215
|
|
19
|
+
platzky/seo/seo.py,sha256=l59Ol56YfJB4bk4IzypYVASYCjLrjJqXRXMIcc4EUZY,2606
|
|
20
20
|
platzky/static/blog.css,sha256=jF-8ykgpbPp58SCUqygBhCm4o7ggULojbxpnk6Jbx3c,7895
|
|
21
21
|
platzky/templates/404.html,sha256=EheoLSWylOscLH8FmcMA4c6Jw14i5HkSvE_GXzGIrUo,78
|
|
22
|
-
platzky/templates/base.html,sha256=
|
|
22
|
+
platzky/templates/base.html,sha256=6ZunlASdsCv9n0PWZBznQrRBKsnmWYRPweX9Ml-EhCo,4931
|
|
23
23
|
platzky/templates/blog.html,sha256=aPl-DzLX85bHv7tN8UjlABR086PUJ9IGlGbIBioFHGA,1281
|
|
24
24
|
platzky/templates/body_meta.html,sha256=au61f54ZK8SdovSpoUROjyy5fi3K6n_N5P-QjW7S5-8,526
|
|
25
25
|
platzky/templates/feed.xml,sha256=I9cz7vnxx-TfbLIDHFXfrC3S2Nt9B6PrWf3u4zSIi78,863
|
|
26
|
-
platzky/templates/head_meta.html,sha256=
|
|
26
|
+
platzky/templates/head_meta.html,sha256=tpwNeaxQwlM6Gnmz1v2fboxqbm0qYPDP-fYeeTSKPKI,1349
|
|
27
27
|
platzky/templates/home.html,sha256=nqoVVvaNBd1ceun6KOZB_eY20xf4Mjtu8LTl1Q_Ap6c,3900
|
|
28
28
|
platzky/templates/page.html,sha256=8tS9K5dXfCKItvOlpEuURnWohnWjs6WW6zeBJFLARUM,647
|
|
29
29
|
platzky/templates/post.html,sha256=GSgjIZsOQKtNx3cEbquSjZ5L4whPnG6MzRyoq9k4B8Q,1906
|
|
30
30
|
platzky/templates/robots.txt,sha256=2_j2tiYtYJnzZUrANiX9pvBxyw5Dp27fR_co18BPEJ0,116
|
|
31
31
|
platzky/templates/sitemap.xml,sha256=iIJZ91_B5ZuNLCHsRtsGKZlBAXojOTP8kffqKLacgvs,578
|
|
32
32
|
platzky/www_handler.py,sha256=pF6Rmvem1sdVqHD7z3RLrDuG-CwAqfGCti50_NPsB2w,725
|
|
33
|
-
platzky-0.2.
|
|
34
|
-
platzky-0.2.
|
|
35
|
-
platzky-0.2.
|
|
33
|
+
platzky-0.2.6.dist-info/METADATA,sha256=maIpLxUQ2j_GtjB1KTkY0LC4obJoildhpkrWZTNVCag,1591
|
|
34
|
+
platzky-0.2.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
35
|
+
platzky-0.2.6.dist-info/RECORD,,
|
|
File without changes
|