Skip to content

Commit a933825

Browse files
author
zjtang
committed
realize multi user management
1 parent 5f430c0 commit a933825

File tree

4 files changed

+89
-39
lines changed

4 files changed

+89
-39
lines changed

ezBlog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,4 @@ def logout():
120120
context = ('server.crt', 'server.key')
121121
app.run(debug=True, host='::', port=443, use_reloader=True, ssl_context=context)
122122
else:
123-
app.run(debug=True, host='::', port=80, use_reloader=True)
123+
app.run(debug=True, host='::', port=8000, use_reloader=True)

flask_blogging/sqlastorage.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ def get_posts(self, count=10, offset=0, recent=True, tag=None,
288288
posts = [self.get_post_by_id(pid[0]) for pid in result]
289289
return posts
290290

291-
def get_tags(self, auth=False):
291+
def get_tags(self, auth=False, uid=None):
292292
with self._engine.begin() as conn:
293293
result = []
294294
try:
@@ -299,15 +299,18 @@ def get_tags(self, auth=False):
299299
where(self._tag_table.c.id==tid[0])
300300
tag_text = conn.execute(select_statement).fetchall()[0][0]
301301
tag_valid = False
302+
tag_posts = self.get_posts(count=None, offset=None,
303+
recent=True, tag=tag_text)
302304
if auth is False:
303-
tag_posts = self.get_posts(count=None, offset=None,
304-
recent=True, tag=tag_text)
305305
for post in tag_posts:
306306
if post["public"] is not 0:
307307
tag_valid = True
308308
break
309309
else:
310-
tag_valid = True
310+
for post in tag_posts:
311+
if post["public"] is not 0 or int(post["user_id"]) == uid:
312+
tag_valid = True
313+
break
311314
if tag_valid:
312315
result.append(tag_text)
313316
except Exception as e:

flask_blogging/views.py

Lines changed: 79 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,22 @@ def index(count, page):
128128
posts=posts, meta=meta)
129129
for post in posts:
130130
blogging_engine.process_post(post, render=render)
131+
for post in posts:
132+
try:
133+
if post["public"] is 0 and int(post["user_id"]) != current_user.id:
134+
post["display"] = False
135+
else:
136+
post["display"] = True
137+
except AttributeError:
138+
pass
131139
index_posts_processed.send(blogging_engine.app, engine=blogging_engine,
132140
posts=posts, meta=meta)
133-
tags = storage.get_tags(auth=meta["is_user_blogger"])
141+
uid = None
142+
try:
143+
uid = current_user.id
144+
except AttributeError:
145+
uid = None
146+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=uid)
134147
return render_template("blogging/index.html", posts=posts, meta=meta,
135148
config=config, tags=tags)
136149

@@ -155,7 +168,12 @@ def about(count, page):
155168
blogging_engine.process_post(post, render=render)
156169
index_posts_processed.send(blogging_engine.app, engine=blogging_engine,
157170
posts=posts, meta=meta)
158-
tags = storage.get_tags(auth=meta["is_user_blogger"])
171+
uid = None
172+
try:
173+
uid = current_user.id
174+
except AttributeError:
175+
uid = None
176+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=uid)
159177
return render_template("blogging/about.html", posts=posts, meta=meta,
160178
config=config, tags=tags)
161179

@@ -182,21 +200,29 @@ def archives(count, page):
182200
blogging_engine.process_post(post, render=render)
183201
index_posts_processed.send(blogging_engine.app, engine=blogging_engine,
184202
posts=posts, meta=meta)
203+
all_posts = storage.get_posts(count=None, offset=None, include_draft=False,
204+
tag=None, user_id=None, recent=True)
185205
max_posts = meta["max_posts"]
186-
for post in posts:
206+
for post in all_posts:
187207
if meta["is_user_blogger"] is False and post["public"] is 0:
188208
max_posts -= 1
209+
meta["max_posts"] = max_posts
210+
uid = None
211+
try:
212+
uid = current_user.id
213+
except AttributeError:
214+
uid = None
215+
for post in posts:
189216
year = post["post_date"].strftime("%Y")
190217
if year not in year_dict:
191218
year_dict[year] = []
192219
year_dict[year].append(post)
193-
meta["max_posts"] = max_posts
194220
for year in year_dict.keys():
195221
tmp_dict = {"year":year, "posts":year_dict[year]}
196222
years.append(tmp_dict)
197223
if len(years) == 0:
198224
years = [{"year":"", "posts":[]}]
199-
tags = storage.get_tags(auth=meta["is_user_blogger"])
225+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=uid)
200226

201227
if meta["pagination"]["prev_page"] is not None:
202228
string = meta["pagination"]["prev_page"].replace("blog","blog/archives")
@@ -222,35 +248,44 @@ def page_by_id(post_id, slug):
222248
meta["slug"] = slug
223249
page_by_id_fetched.send(blogging_engine.app, engine=blogging_engine,
224250
post=post, meta=meta)
251+
uid = None
252+
try:
253+
uid = current_user.id
254+
except AttributeError:
255+
uid = None
225256
if post is not None:
226-
blogging_engine.process_post(post, render=render)
227-
page_by_id_processed.send(blogging_engine.app, engine=blogging_engine,
228-
post=post, meta=meta)
229-
tags = storage.get_tags(auth=meta["is_user_blogger"])
230-
prev_post_id = int(post_id) - 1
231-
next_post_id = int(post_id) + 1
232-
prev_post = None
233-
next_post = None
234-
while prev_post_id >= 1:
235-
prev_post = storage.get_post_by_id(prev_post_id)
236-
if prev_post is not None:
237-
blogging_engine.process_post(prev_post, render=render)
238-
if meta["is_user_blogger"] or prev_post["public"]:
239-
break
240-
else:
241-
prev_post = None
242-
prev_post_id -= 1
243-
while next_post_id <= max_posts:
244-
next_post = storage.get_post_by_id(next_post_id)
245-
if next_post is not None:
246-
blogging_engine.process_post(next_post, render=render)
247-
if meta["is_user_blogger"] or next_post["public"]:
248-
break
249-
else:
250-
next_post = None
251-
next_post_id += 1
252-
return render_template("blogging/page.html", post=post, config=config,
257+
if post["public"] is not 0 or int(post["user_id"])==uid:
258+
blogging_engine.process_post(post, render=render)
259+
page_by_id_processed.send(blogging_engine.app, engine=blogging_engine,
260+
post=post, meta=meta)
261+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=uid)
262+
prev_post_id = int(post_id) - 1
263+
next_post_id = int(post_id) + 1
264+
prev_post = None
265+
next_post = None
266+
while prev_post_id >= 1:
267+
prev_post = storage.get_post_by_id(prev_post_id)
268+
if prev_post is not None:
269+
blogging_engine.process_post(prev_post, render=render)
270+
if uid == int(prev_post["user_id"]) or prev_post["public"]:
271+
break
272+
else:
273+
prev_post = None
274+
prev_post_id -= 1
275+
while next_post_id <= max_posts:
276+
next_post = storage.get_post_by_id(next_post_id)
277+
if next_post is not None:
278+
blogging_engine.process_post(next_post, render=render)
279+
if uid == int(next_post["user_id"]) or next_post["public"]:
280+
break
281+
else:
282+
next_post = None
283+
next_post_id += 1
284+
return render_template("blogging/page.html", post=post, config=config,
253285
meta=meta, tags=tags, prev_post=prev_post,next_post=next_post)
286+
else:
287+
flash("You do not have the rights to view this post!", "warning")
288+
return redirect(url_for("blogging.archives"))
254289
else:
255290
flash("The page you are trying to access is not valid!", "warning")
256291
return redirect(url_for("blogging.index"))
@@ -278,7 +313,17 @@ def posts_by_tag(tag, count, page):
278313
posts_by_tag_processed.send(blogging_engine.app,
279314
engine=blogging_engine,
280315
posts=posts, meta=meta)
281-
tags = storage.get_tags(auth=meta["is_user_blogger"])
316+
uid = None
317+
try:
318+
uid = current_user.id
319+
except AttributeError:
320+
uid = None
321+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=uid)
322+
for post in posts:
323+
if post["public"] is 0 and int(post["user_id"]) != uid:
324+
post["display"] = False
325+
else:
326+
post["display"] = True
282327
return render_template("blogging/index.html", posts=posts, meta=meta,
283328
config=config, tags=tags)
284329
else:
@@ -309,7 +354,7 @@ def posts_by_author(user_id, count, page):
309354
posts_by_author_processed.send(blogging_engine.app,
310355
engine=blogging_engine, posts=posts,
311356
meta=meta)
312-
tags = storage.get_tags(auth=meta["is_user_blogger"])
357+
tags = storage.get_tags(auth=meta["is_user_blogger"], uid=user_id)
313358
return render_template("blogging/index.html", posts=posts, meta=meta,
314359
config=config, tags=tags)
315360
else:

templates/blogging/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
{% for post in posts %}
3838
{% if ((meta.is_user_blogger) or (post.public)) %}
39+
{% if post.display %}
3940
<div class="post">
4041
<h1 class="post-title">
4142
<a href="{{ post.url }}">{{ post.title }}</a>
@@ -76,6 +77,7 @@ <h1 class="post-title">
7677
</div>
7778
<hr>
7879
{% endif %}
80+
{% endif %}
7981
{% endfor %}
8082
<nav class="page-navigator">
8183
{% if (meta) and (meta.max_pages>=1) %}

0 commit comments

Comments
 (0)