platzky 0.2.15__py3-none-any.whl → 0.2.17__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/db/db.py CHANGED
@@ -44,6 +44,10 @@ class DB(ABC):
44
44
  except Exception as e:
45
45
  raise ValueError(f"Failed to extend DB with function {function_name}: {e}")
46
46
 
47
+ @abstractmethod
48
+ def get_app_description(self, lang) -> str:
49
+ pass
50
+
47
51
  @abstractmethod
48
52
  def get_all_posts(self, lang) -> list[Post]:
49
53
  pass
platzky/db/graph_ql_db.py CHANGED
@@ -259,6 +259,21 @@ class GraphQL(DB):
259
259
  except IndexError:
260
260
  return ""
261
261
 
262
+ def get_app_description(self, lang):
263
+ description_query = gql(
264
+ """
265
+ query myquery($lang: Lang!) {
266
+ applicationSetups(where: {language: $lang}, stage: PUBLISHED) {
267
+ applicationDescription
268
+ }
269
+ }
270
+ """
271
+ )
272
+
273
+ return self.client.execute(description_query, variable_values={"lang": lang})[
274
+ "applicationSetups"
275
+ ][0].get("applicationDescription", None)
276
+
262
277
  def get_favicon_url(self):
263
278
  favicon = gql(
264
279
  """
platzky/db/json_db.py CHANGED
@@ -24,6 +24,11 @@ def db_from_config(config: JsonDbConfig):
24
24
  return Json(config.data)
25
25
 
26
26
 
27
+ # TODO make all language specific methods to be available without language
28
+ # this will allow to have a default language and if there is one language
29
+ # there will be no need to pass it to the method or in db
30
+
31
+
27
32
  class Json(DB):
28
33
  def __init__(self, data: Dict[str, Any]):
29
34
  super().__init__()
@@ -31,6 +36,10 @@ class Json(DB):
31
36
  self.module_name = "json_db"
32
37
  self.db_name = "JsonDb"
33
38
 
39
+ def get_app_description(self, lang):
40
+ description = self._get_site_content().get("app_description", {})
41
+ return description.get(lang, None)
42
+
34
43
  def get_all_posts(self, lang):
35
44
  return [
36
45
  Post.model_validate(post)
platzky/platzky.py CHANGED
@@ -102,6 +102,7 @@ def create_engine(config: Config, db) -> Engine:
102
102
  country = lang.country if (lang := config.languages.get(locale)) is not None else ""
103
103
  return {
104
104
  "app_name": config.app_name,
105
+ "app_description": app.db.get_app_description(locale) or config.app_name,
105
106
  "languages": languages_dict(config.languages),
106
107
  "current_flag": flag,
107
108
  "current_lang_country": country,
@@ -0,0 +1,60 @@
1
+ html,
2
+ body {
3
+ height: 100%;
4
+ }
5
+
6
+ .logo {
7
+ max-height: 6rem;
8
+ max-width: 50vw;
9
+ }
10
+
11
+ #main-row {
12
+ position: relative;
13
+ flex-grow: 1;
14
+ z-index: 0;
15
+ }
16
+
17
+ .left-panel-contents {
18
+ padding: 16px;
19
+ }
20
+
21
+ @media only screen and (min-width: 768px) {
22
+ #left-panel {
23
+ inline-size: calc(100vw * 0.1666666667);
24
+ }
25
+ }
26
+
27
+ .language-indicator-text {
28
+ color: white;
29
+ font-weight: normal;
30
+ }
31
+
32
+ .offcanvas-lg.offcanvas-start {
33
+ top: auto;
34
+ width: auto;
35
+ }
36
+
37
+ #filter-form form > div {
38
+ padding-bottom: 1rem;
39
+ }
40
+
41
+ #filter-form form div > span {
42
+ font-weight: bold;
43
+ padding-bottom: 0.5rem;
44
+ }
45
+
46
+ .dropdown-menu {
47
+ z-index: 1;
48
+ }
49
+
50
+ .btn {
51
+ padding: 0;
52
+ }
53
+
54
+ .btn-close {
55
+ opacity: 1;
56
+ }
57
+
58
+ i.fi {
59
+ margin: 0 0.5em;
60
+ }
@@ -2,106 +2,13 @@
2
2
  <html lang="{{ current_language }}-{{ current_lang_country }}">
3
3
  <head>
4
4
  {% include "head_meta.html" %}
5
+ {% include "dynamic_css.html" %}
5
6
  {% block head_meta %}{% endblock %}
6
7
  {{ dynamic_head | safe }}
7
8
 
8
-
9
-
9
+ <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles.css') }}">
10
10
  <title>{% block title %}{{app_name}}{% endblock %}</title>
11
- <meta name="description" content=" {% block description %} {% endblock %} ">
12
- <style>
13
- html,
14
- body {
15
- height: 100%;
16
-
17
- }
18
- body {
19
- font-family: {{ font.name }}
20
- }
21
- .logo {
22
- max-height: 6rem;
23
- max-width: 50vw;
24
- }
25
- .header-row {
26
- z-index: 1;
27
- background-color: {{ primary_color }};
28
- height: min-content;
29
- display: flex;
30
- justify-content: center;
31
- align-items: center;
32
- }
33
- #main-row {
34
- position: relative;
35
- flex-grow: 1;
36
- z-index: 0;
37
- }
38
-
39
- .left-panel-contents {
40
- padding: 16px;
41
- }
42
-
43
- .left-panel {
44
- background-color: {{ secondary_color }};
45
- }
46
-
47
- #left-panel {
48
- background-color: {{ secondary_color }};
49
- position: absolute;
50
- height: 100%;
51
- max-width: 80vw;
52
- overflow-y: auto;
53
- color: white;
54
- inline-size: 80vw;
55
- overflow-wrap: break-word;
56
- z-index: 999999999;
57
- }
58
-
59
- @media only screen and (min-width: 768px) {
60
- #left-panel {
61
- inline-size: calc(100vw * 0.1666666667);
62
- }
63
-
64
- .language-indicator-text {
65
- color: white;
66
- font-weight: normal;
67
- }
68
-
69
- #languages-menu {
70
- background-color: {{ secondary_color }};
71
- padding: 5px 10px;
72
- border-radius: 5px;
73
- color: white;
74
- }
75
-
76
- .offcanvas-lg.offcanvas-start {
77
- top: auto;
78
- width: auto;
79
- }
80
-
81
- #filter-form form > div {
82
- padding-bottom: 1rem;
83
- }
84
-
85
- #filter-form form div > span {
86
- font-weight: bold;
87
- padding-bottom: 0.5rem;
88
- }
89
-
90
- .dropdown-menu {
91
- z-index: 1;
92
- }
93
-
94
- .btn {
95
- padding: 0;
96
- }
97
-
98
- .btn-close {
99
- opacity: 1;
100
- }
101
- i.fi {
102
- margin: 0 0.5em;
103
- }
104
- </style>
11
+ <meta name="description" content="{% block description %} {{ app_description }} {% endblock %}">
105
12
  </head>
106
13
  <body>
107
14
  {% block body_meta %}
@@ -0,0 +1,38 @@
1
+ <style>
2
+
3
+ body {
4
+ font-family: {{ font.name }};
5
+ }
6
+
7
+ .left-panel {
8
+ background-color: {{ secondary_color }};
9
+ }
10
+
11
+ #left-panel {
12
+ background-color: {{ secondary_color }};
13
+ position: absolute;
14
+ height: 100%;
15
+ max-width: 80vw;
16
+ overflow-y: auto;
17
+ color: white;
18
+ inline-size: 80vw;
19
+ overflow-wrap: break-word;
20
+ z-index: 999999999;
21
+ }
22
+
23
+ #languages-menu {
24
+ background-color: {{ secondary_color }};
25
+ padding: 5px 10px;
26
+ border-radius: 5px;
27
+ color: white;
28
+ }
29
+
30
+ .header-row {
31
+ z-index: 1;
32
+ background-color: {{ primary_color }};
33
+ height: min-content;
34
+ display: flex;
35
+ justify-content: center;
36
+ align-items: center;
37
+ }
38
+ </style>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: platzky
3
- Version: 0.2.15
3
+ Version: 0.2.17
4
4
  Summary: Not only blog engine
5
5
  License: MIT
6
6
  Requires-Python: >=3.10,<4.0
@@ -4,34 +4,35 @@ platzky/blog/blog.py,sha256=caBUewnwd6QrJDv20m4JDfDDjiVu7hM0AJnoTyCdwM4,3009
4
4
  platzky/blog/comment_form.py,sha256=4lkNJ_S_2DZmJBbz-NPDqahvy2Zz5AGNH2spFeGIop4,513
5
5
  platzky/config.py,sha256=M3gmZI9yI-ThgmTA4RKsAPcnJwJjcWhXipYzq3hO-Hk,2346
6
6
  platzky/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- platzky/db/db.py,sha256=yVlLqKoKRZiGNaQmRv_8Jjk0aMkHdLgDOhPbxvG_MEs,2708
7
+ platzky/db/db.py,sha256=W1EYQOrYaQI-Uon1IAJfD_1gmju2V_0yfo0hc8swUow,2790
8
8
  platzky/db/db_loader.py,sha256=CuEiXxhIa4bFMm0vi7ugzm7j3WycilGRKCU6smgIImE,905
9
9
  platzky/db/google_json_db.py,sha256=IgfCER7oJ4I_WD4TjhvFFL0voUj6EfeoaVWdoEcHTdA,1499
10
- platzky/db/graph_ql_db.py,sha256=yXVhYCXNexYYo8QYeiUzE05uehdkl0cuuxbLU1hFC-k,8148
11
- platzky/db/json_db.py,sha256=Iqr2bHxd55-ajosCxXOJsJ7T0TOk45KE7oIrrKo5iSM,3313
10
+ platzky/db/graph_ql_db.py,sha256=EjM9MfHOoEngJI6tFXC1JDrsK3kl-tkUXd7TwH2QCZc,8623
11
+ platzky/db/json_db.py,sha256=3heiXVhZIWZB6byhnbOtGhnI-59ixN9spz24co4bvAk,3681
12
12
  platzky/db/json_file_db.py,sha256=UQ8TadELmqOzj_tgNfmzhtCkDkMAgcB9vaUy0GQXUY4,1010
13
13
  platzky/locale/en/LC_MESSAGES/messages.po,sha256=WaZGlFAegKRq7CSz69dWKic-mKvQFhVvssvExxNmGaU,1400
14
14
  platzky/locale/pl/LC_MESSAGES/messages.po,sha256=sUPxMKDeEOoZ5UIg94rGxZD06YVWiAMWIby2XE51Hrc,1624
15
15
  platzky/models.py,sha256=-IIlyeLzACeTUpzuzvzJYxtT57E6wRiERoRgXJYMMtY,1502
16
- platzky/platzky.py,sha256=h4oeC3B8cxbzv-Ut7iGKvsBmRTmxDKcK-R4PzUTZ-fE,4910
16
+ platzky/platzky.py,sha256=A_ku8ZFseCde12vXL9PLNn9ybMszXDcBIqZbWj1rxMo,4996
17
17
  platzky/plugin_loader.py,sha256=kYLaBOc8MA4b0T2yhVpSxZsX1rTxfcAnyGJCNKPGBXY,2428
18
18
  platzky/plugins/google-tag-manager/entrypoint.py,sha256=Z4npXtmCdrSuUG_ZvFdPhUZg5QcwIPGQWj9Uw9dcm8A,1021
19
19
  platzky/plugins/redirections/entrypoint.py,sha256=yoqHsRLqRALdICs5_UMSREkfEo1Lbsjj9tqEA7dsseg,1555
20
20
  platzky/plugins/sendmail/entrypoint.py,sha256=16GszfLaYhVUSuCdL4SPVKYN9-mONp-hK5ZWSiLluPo,1215
21
21
  platzky/seo/seo.py,sha256=N_MmAA4KJZmmrDUh0hYNtD8ycOwpNKow4gVSAv8V3N4,2631
22
22
  platzky/static/blog.css,sha256=TrppzgQbj4UtuTufDCdblyNTVAqgIbhD66Cziyv_xnY,7893
23
+ platzky/static/styles.css,sha256=U5ddGIK-VcGRJZ3BdOpMp0pR__k6rNEMsuQXkP4tFQ0,686
23
24
  platzky/templates/404.html,sha256=EheoLSWylOscLH8FmcMA4c6Jw14i5HkSvE_GXzGIrUo,78
24
- platzky/templates/base.html,sha256=mRlJJ65QbnB8VOFmbgBfPz6dhmwOnbntjrXwUsQDu1U,5184
25
+ platzky/templates/base.html,sha256=0YuB7EG_5QIK5RZ4n_HTe0Iwa1zjbhhuZd9YYJGqhog,3711
25
26
  platzky/templates/blog.html,sha256=aPl-DzLX85bHv7tN8UjlABR086PUJ9IGlGbIBioFHGA,1281
26
27
  platzky/templates/body_meta.html,sha256=bRHG_BF-jloBLXASrpJVO6hDfpzq3MqMpJTXt9fLHJk,323
28
+ platzky/templates/dynamic_css.html,sha256=a1AeodEVwM_JAw1ySQkYN1xnKLydTXm2YzQwmjqlSyg,629
27
29
  platzky/templates/feed.xml,sha256=I9cz7vnxx-TfbLIDHFXfrC3S2Nt9B6PrWf3u4zSIi78,863
28
30
  platzky/templates/head_meta.html,sha256=MO6bWpjngujrSMc2WSTFCTd58LmOI4gQWuexKSXJHmc,1368
29
- platzky/templates/home.html,sha256=nqoVVvaNBd1ceun6KOZB_eY20xf4Mjtu8LTl1Q_Ap6c,3900
30
31
  platzky/templates/page.html,sha256=8tS9K5dXfCKItvOlpEuURnWohnWjs6WW6zeBJFLARUM,647
31
32
  platzky/templates/post.html,sha256=GSgjIZsOQKtNx3cEbquSjZ5L4whPnG6MzRyoq9k4B8Q,1906
32
33
  platzky/templates/robots.txt,sha256=2_j2tiYtYJnzZUrANiX9pvBxyw5Dp27fR_co18BPEJ0,116
33
34
  platzky/templates/sitemap.xml,sha256=iIJZ91_B5ZuNLCHsRtsGKZlBAXojOTP8kffqKLacgvs,578
34
35
  platzky/www_handler.py,sha256=pF6Rmvem1sdVqHD7z3RLrDuG-CwAqfGCti50_NPsB2w,725
35
- platzky-0.2.15.dist-info/METADATA,sha256=PCyQWLEQkuh0zG6giZjLMwJxtzXFh6OGM8BiK7rCgKM,1643
36
- platzky-0.2.15.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
37
- platzky-0.2.15.dist-info/RECORD,,
36
+ platzky-0.2.17.dist-info/METADATA,sha256=vY11shggzwZqaPt6-6Cize6KyLhL4T2yjftJXz-LstM,1643
37
+ platzky-0.2.17.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
38
+ platzky-0.2.17.dist-info/RECORD,,
@@ -1,195 +0,0 @@
1
- {% extends "base.html" %}
2
- {% block content %}
3
-
4
- <style>
5
- .content {
6
- padding-top:150px;
7
- }
8
-
9
- .envelope {
10
- position: relative;
11
- margin: 50px auto 0;
12
- width: 400px;
13
- height: 200px;
14
- background: #00528c;
15
- border-radius: 0 0 5px 5px;
16
- box-shadow: 0 0 1px #c94548 inset;
17
- }
18
-
19
- .envelope:before,
20
- .envelope:after {
21
- content: '';
22
- position: absolute;
23
- width: 0;
24
- height: 0;
25
- border: 0 solid transparent;
26
- border-width: 100px 200px;
27
- }
28
- .envelope:before {
29
- border-bottom-color: #255e87;
30
- top: -100%;
31
- left: 0px;
32
- }
33
- .envelope:after {
34
- border-right-color: #b3d7ff;
35
- border-left-color: #97b3d3;
36
- border-bottom-color:#b3d7e0;
37
- top: 0;
38
- border-radius: 0 0 5px 5px;
39
- transform: rotate(360deg);
40
- box-shadow: 0 1px 1px rgba(0,0,0,0.25);
41
- z-index:3;
42
- }
43
-
44
- .triangle {
45
- border-style:solid;
46
- border-width: 150px 300px;
47
- position: absolute;
48
- z-index:3;
49
- }
50
-
51
- .triangle-down {
52
- border-color: #00528c transparent transparent transparent;
53
- z-index:1;
54
- }
55
-
56
-
57
- .rect {
58
- left: 5%;
59
- bottom:0;
60
- border-radius:6px;
61
- width: 90%;
62
- height:200px;
63
- background: white;
64
- display: inline-block;
65
- border-style:solid;
66
- border-color:#b3d7ff;
67
- box-shadow: inset -3px 3px 10px #b3d7ff;
68
- position:absolute;
69
- padding-bottom:30px;
70
- }
71
- .recto {
72
- position:relative;
73
- width: 100%;
74
- height: 700px;
75
- background: white;
76
- display: inline-block;
77
- z-index:20;
78
- }
79
- .go-up {
80
- animation-delay:0.6s;
81
- animation-name: go-up;
82
- animation-duration: 2s;
83
- animation-fill-mode: forwards;
84
- }
85
-
86
- .scale-up {
87
- animation-delay:0.6s;
88
- animation-name: scale-up;
89
- animation-duration: 2s;
90
- animation-fill-mode: forwards;
91
- }
92
-
93
-
94
- .go-behind {
95
- animation-delay:1s;
96
- animation-name: go-behind;
97
- animation-duration: 1s;
98
- animation-fill-mode: forwards;
99
- }
100
-
101
- .open
102
- {
103
- animation-name: open;
104
- animation-duration: 2s;
105
- animation-fill-mode: forwards;
106
- transform-origin: top;
107
- }
108
-
109
- .boldos
110
- {
111
- color:#007bff;
112
- font-size:1.2rem;
113
- font-weight:bold;
114
- }
115
-
116
- .envelopeso
117
- {
118
- position:relative;
119
- margin-top:500px;
120
- text-align: center;
121
- width:400px;
122
- height:500px;
123
- }
124
-
125
- .begin {
126
- position:relative;
127
- bottom: 160px;
128
- left: 45%;
129
- z-index:5;
130
- transition: 0.3s;
131
- animation: fadein 2s;
132
- animation-delay:1.6s;
133
- opacity: 0;
134
- animation-fill-mode: forwards;
135
- }
136
-
137
- @keyframes fadein {
138
- from { opacity: 0; }
139
- to { opacity: 1; }
140
- }
141
-
142
- @keyframes go-up {
143
- 0% { bottom:0px;}
144
- 100% { bottom:100px;
145
- z-index:1;}
146
- }
147
-
148
-
149
- @keyframes open {
150
- from { transform: scaleY(1);}
151
- to { transform: scaleY(-1);z-index:0}
152
- }
153
-
154
- h1 {
155
- font-size:1rem;
156
- }
157
- h2 {
158
- font-size:0.7rem;
159
- }
160
- p {
161
- font-size:0.8rem;
162
- }
163
-
164
-
165
- </style>
166
-
167
-
168
- <div class="envelope">
169
- <div class="rect go-up" style="display: inline-block">
170
- <div style="display: inline-block;position:relative">
171
- <div class="col-lg-12 text-center mt-3" style="position:relative; text-align:center;">
172
- <p style="margin-bottom:0">
173
- So you are looking for best
174
- <br>
175
- <span class="boldos"> Email Marketing Service
176
- </span>?
177
- </p>
178
- <div style="width:80%; padding-left:20%;">
179
- <p style="margin-bottom:.1rem;color:#4c85c2;">
180
- Please, answer few questions.
181
- </p>
182
- <p>
183
- When you'll be ready hit button "No more questions. ANSWERS!"
184
- </p>
185
- </div>
186
- </div>
187
- </div>
188
- </div>
189
- </div>
190
- <form method="post" class="begin">
191
- <button type="submit" style="z-index:6;" class="btn btn-primary">Begin</button>
192
- </form>
193
-
194
-
195
- {% endblock %}