Change to oidc and new foreign id format
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful

This commit is contained in:
2023-07-30 03:17:03 +03:00
parent d0fa0b1928
commit a28189a306
14 changed files with 390 additions and 198 deletions

View File

@@ -12,7 +12,7 @@ from wtforms.validators import Length
import const
from common import CustomForm, build_query, flatten, format_name, spam
from decorators import has_login, login_redirect, login_required
from oidc import page_oidc, login_required, read_user
page_inventory = Blueprint("inventory", __name__)
db = MongoClient(const.MONGO_URI).get_default_database()
@@ -21,9 +21,9 @@ db = MongoClient(const.MONGO_URI).get_default_database()
def view_inventory_view(item_id):
template = "inventory_view.html"
item = db.inventory.find_one({ "_id": ObjectId(item_id) })
if not has_login():
if not read_user():
if not item["inventory"].get("public"):
return login_redirect()
return do_login()
template = "inventory_view_public.html"
base_url = const.INVENTORY_ASSETS_BASE_URL
photo_url = "%s/kspace-inventory/%s" % (base_url, item_id)
@@ -355,7 +355,7 @@ def view_inventory(slug=None):
q = {"type": {"$ne": "token"}}
template = "inventory.html"
public_view = False
if not has_login():
if not read_user():
q.update({"inventory.public": True})
template = "inventory_public.html"
public_view = True
@@ -409,28 +409,29 @@ def view_inventory(slug=None):
{ "$match": q2 },
{ "$sort": { sort_field_final : 1 if sort_direction == "asc" else -1 } }
])
return render_template(template, **locals())
@page_inventory.route("/m/inventory/<item_id>/claim", methods=["POST"])
@login_required
def view_inventory_claim(item_id):
user = read_user()
db.inventory.update_one({
"_id": ObjectId(item_id),
"inventory.owner.foreign_id": None
}, {
"$set": {
"inventory.owner.foreign_id": ObjectId(g.user["_id"]),
"inventory.owner.display_name": g.user["full_name"],
"inventory.owner.foreign_id": user["username"],
"inventory.owner.display_name": user["name"],
},
})
return redirect("/m/user/%s" % g.user["_id"])
return redirect("/m/inventory/%s/view" % item_id)
@page_inventory.route("/m/inventory/<item_id>/use", methods=["POST"])
@login_required
def view_inventory_use(item_id):
user = read_user()
item = db.inventory.find_one({
"_id": ObjectId(item_id),
"inventory.usable": True,
@@ -443,25 +444,26 @@ def view_inventory_use(item_id):
"_id": ObjectId(item["_id"])
}, {
"$set": {
"inventory.user.foreign_id": ObjectId(g.user["_id"]),
"inventory.user.display_name": g.user["full_name"],
"inventory.user.foreign_id": ObjectId(user["username"]),
"inventory.user.display_name": user["name"],
},
})
name = format_name(item)
msg = "%s has started using %s" % (g.user["full_name"], name)
item_name = format_name(item)
msg = "%s has started using %s" % (user["name"], item_name)
if item.get("shortener") and item["shortener"].get("slug"):
msg += ("\nk6.ee/%s" % item["shortener"]["slug"])
spam(msg)
return redirect("/m/user/%s" % g.user["_id"])
return redirect("/m/inventory/%s/view" % item_id)
@page_inventory.route("/m/inventory/<item_id>/vacate", methods=["POST"])
@login_required
def view_inventory_vacate(item_id):
user = read_user()
item = db.inventory.find_one({
"_id": ObjectId(item_id),
"inventory.usable": True,
"inventory.user.foreign_id": ObjectId(g.user["_id"])
"inventory.user.foreign_id": ObjectId(user["username"])
})
if not item:
return abort(404)
@@ -473,9 +475,9 @@ def view_inventory_vacate(item_id):
"inventory.user": ""
},
})
name = format_name(item)
msg = "%s has stopped using %s" % (g.user["full_name"], name)
item_name = format_name(item)
msg = "%s has stopped using %s" % (user["name"], item_name)
if item.get("shortener") and item["shortener"].get("slug"):
msg += ("\nk6.ee/%s" % item["shortener"]["slug"])
spam(msg)
return redirect("/m/user/%s" % g.user["_id"])
return redirect("/m/inventory/%s/view" % item_id)