changed quest urls to use quest_id instead of ident_title
This commit is contained in:
parent
c59f2dde99
commit
3b4d24bd7c
|
@ -57,6 +57,7 @@ app.wsgi_app = ProxyFix(app.wsgi_app)
|
|||
app.register_blueprint(views)
|
||||
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
|
||||
app.config['SESSION_TYPE'] = 'filesystem'
|
||||
app.url_map.strict_slashes = False
|
||||
app.jinja_env.trim_blocks = True
|
||||
app.jinja_env.lstrip_blocks = True
|
||||
#app.jinja_env.undefined = "StrictUndefined"
|
||||
|
|
|
@ -17,8 +17,7 @@ CREATE TABLE `chat_messages` (
|
|||
|
||||
CREATE TABLE `quest_meta` (
|
||||
`quest_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`canon_title` VARCHAR(300) DEFAULT NULL,
|
||||
`ident_title` VARCHAR(300) DEFAULT NULL,
|
||||
`quest_title` VARCHAR(300) DEFAULT NULL,
|
||||
`owner_id` SMALLINT UNSIGNED DEFAULT NULL,
|
||||
`open_post_id` SMALLINT UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (`quest_id`),
|
||||
|
|
24
database.py
24
database.py
|
@ -117,16 +117,16 @@ def get_chat_messages(room_id):
|
|||
return res
|
||||
|
||||
|
||||
def insert_quest(canon_title, ident_title, owner_id):
|
||||
def insert_quest(canon_title, owner_id):
|
||||
"""Creates a new quest entry."""
|
||||
_DB.execute(
|
||||
"INSERT INTO `quest_meta` (`canon_title`, `ident_title`, `owner_id`) "\
|
||||
+ "VALUES (%s, %s, %s)", (canon_title, ident_title, owner_id))
|
||||
"INSERT INTO `quest_meta` (`quest_title`, `owner_id`) "\
|
||||
+ "VALUES (%s, %s)", (canon_title, owner_id))
|
||||
|
||||
quest_id = _DB.execute(
|
||||
"SELECT `quest_id` FROM `quest_meta` WHERE `ident_title` = %s" \
|
||||
"SELECT `quest_id` FROM `quest_meta` WHERE `owner_id` = %s" \
|
||||
+ "ORDER BY `quest_id` DESC",
|
||||
(ident_title,)).fetchone()[0]
|
||||
(owner_id,)).fetchone()[0]
|
||||
return quest_id
|
||||
|
||||
|
||||
|
@ -142,20 +142,14 @@ def insert_quest_post(quest_id, post_type, post, timestamp):
|
|||
return post_id
|
||||
|
||||
|
||||
def get_quest_meta(quest_id=None, ident_title=None):
|
||||
def get_quest_meta(quest_id):
|
||||
"""
|
||||
Retrieves all meta info about a quest. Allows searching by either
|
||||
quest_id or ident_title.
|
||||
"""
|
||||
statement = "SELECT * FROM `quest_meta` WHERE "
|
||||
if quest_id:
|
||||
statement += "`quest_id` = %s"
|
||||
data = _DB.execute(statement, (quest_id,)).fetchone()
|
||||
elif ident_title:
|
||||
statement += "`ident_title` = %s"
|
||||
data = _DB.execute(statement, (ident_title,)).fetchone()
|
||||
else:
|
||||
return
|
||||
data = _DB.execute(
|
||||
"SELECT * FROM `quest_meta` WHERE `quest_id` = %s",
|
||||
(quest_id,)).fetchone()
|
||||
return data
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block title %}Edit {{ quest_title }}{% endblock %}
|
||||
{% block content %}
|
||||
<center><h1>{{ quest_title }}</h1></center>
|
||||
<form method="post" action="{{ url_for('.quest', quest_title=ident_title + '/edit_quest') }}">
|
||||
<form method="post" action="{{ url_for('.edit_quest', quest_id=quest_id,) }}">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Quest Title:</td>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block title %}Index{% endblock %}
|
||||
{% block content %}
|
||||
<h1>Quests 'n Shiet</h1>
|
||||
<a href="./quest/unga-bunga-quest">Unga Bunga Quest</a><br />
|
||||
<a href="./quest/1">Unga Bunga Quest</a><br />
|
||||
<a href="./create_quest">Create New Quest</a><br />
|
||||
<a href="./signup">Sign up</a><br />
|
||||
<a href="./login">Login</a><br />
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
{% endblock %}
|
||||
{% block header %}
|
||||
{% if session.get("user_id") == owner_id %}
|
||||
<li><a href="{{ url_for('.quest', quest_title=ident_title + '/edit_quest') }}">Edit Quest</a></li>
|
||||
<li><a href="{{ url_for('.edit_quest', quest_id=quest_id) }}">Edit Quest</a></li>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
|
11
tools.py
11
tools.py
|
@ -4,7 +4,6 @@ Miscellaneous tools and help functions.
|
|||
"""
|
||||
import os
|
||||
import re
|
||||
import urllib
|
||||
import hashlib
|
||||
|
||||
import magic
|
||||
|
@ -12,16 +11,6 @@ import requests
|
|||
|
||||
IMG_DIR = "/usr/local/www/html/img"
|
||||
|
||||
def sanitize_title(canon_title):
|
||||
"""
|
||||
Sanitizes the given canonical title for a quest and returns a
|
||||
url-friendly version.
|
||||
"""
|
||||
ident_title = canon_title.lower().replace(" ", "-")
|
||||
ident_title = urllib.parse.quote(ident_title)
|
||||
return ident_title
|
||||
|
||||
|
||||
def handle_img(post):
|
||||
"""
|
||||
Handles [img] tags within a quest post appropriately.
|
||||
|
|
25
views.py
25
views.py
|
@ -42,13 +42,12 @@ def login_required(url=None):
|
|||
return actual_decorator
|
||||
|
||||
|
||||
@views.route("/quest/<path:quest_title>")
|
||||
def quest(quest_title):
|
||||
@views.route("/quest/<int:quest_id>", strict_slashes=False)
|
||||
def quest(quest_id, page_num=1):
|
||||
"""
|
||||
An arbituary quest page.
|
||||
"""
|
||||
ident_title, _, extra = quest_title.partition("/")
|
||||
data = db.get_quest_meta(ident_title=ident_title)
|
||||
data = db.get_quest_meta(quest_id)
|
||||
if not data:
|
||||
abort(404)
|
||||
|
||||
|
@ -79,13 +78,12 @@ def quest(quest_title):
|
|||
return render_template('quest.html', **locals())
|
||||
|
||||
|
||||
@views.route("/quest/<path:quest_title>/edit_quest", methods=["GET", "POST"])
|
||||
def edit_quest(quest_title):
|
||||
@views.route("/quest/<int:quest_id>/edit_quest", methods=["GET", "POST"])
|
||||
def edit_quest(quest_id):
|
||||
"""
|
||||
Allows the quest owner to edit the quest.
|
||||
"""
|
||||
ident_title = quest_title
|
||||
data = db.get_quest_meta(ident_title=ident_title)
|
||||
data = db.get_quest_meta(quest_id)
|
||||
if not data:
|
||||
abort(404)
|
||||
quest_id = data[0]
|
||||
|
@ -93,8 +91,8 @@ def edit_quest(quest_title):
|
|||
if request.method == "GET":
|
||||
return render_template("edit_quest.html",
|
||||
quest_title=quest_title,
|
||||
ident_title=ident_title)
|
||||
return redirect(url_for(".quest", quest_title=ident_title))
|
||||
quest_id=quest_id)
|
||||
return redirect(url_for(".quest", quest_id=quest_id))
|
||||
|
||||
|
||||
@views.route("/profile/<path:username>")
|
||||
|
@ -121,20 +119,19 @@ def create_quest():
|
|||
"""
|
||||
if request.method == "GET":
|
||||
return render_template("create_quest.html")
|
||||
canon_title = request.form.get("quest_title")
|
||||
quest_title = request.form.get("quest_title")
|
||||
quest_body = request.form.get("quest_body")
|
||||
|
||||
ident_title = tools.sanitize_title(canon_title)
|
||||
quest_body = bleach.clean(quest_body.strip())
|
||||
quest_body = quest_body.replace("\n", "<br />")
|
||||
|
||||
owner_id = session.get("user_id")
|
||||
timestamp = int(time.time())
|
||||
|
||||
quest_id = db.insert_quest(canon_title, ident_title, owner_id)
|
||||
quest_id = db.insert_quest(quest_title, owner_id)
|
||||
db.insert_quest_post(quest_id, "text", quest_body, timestamp)
|
||||
|
||||
return redirect(url_for('.quest', quest_title=ident_title))
|
||||
return redirect(url_for('.quest', quest_id=quest_id))
|
||||
|
||||
|
||||
@views.route("/set_session")
|
||||
|
|
Loading…
Reference in New Issue
Block a user