]> git.lizzy.rs Git - cheatdb.git/commitdiff
Redirect to correct URL when _game is missing from package name
authorrubenwardy <rw@rubenwardy.com>
Sun, 2 Aug 2020 17:03:44 +0000 (18:03 +0100)
committerrubenwardy <rw@rubenwardy.com>
Sun, 2 Aug 2020 17:03:44 +0000 (18:03 +0100)
app/blueprints/packages/packages.py
app/utils.py

index d612f9edf008d2a0b6dd1645075635e1d0eecbaa..0076c5c62ea1f881381cf3c618ae4ccd1261521e 100644 (file)
@@ -266,6 +266,8 @@ def create_edit(author=None, name=None):
 
        else:
                package = getPackageByInfo(author, name)
+               if package is None:
+                       abort(404)
                if not package.checkPerm(current_user, Permission.EDIT_PACKAGE):
                        return redirect(package.getDetailsURL())
 
index ec5fa3a364fc74c88944095ecd2a9dd21b64cfd0..a47f6d0472e2689f334a4bbbeb26bd4246219cc6 100644 (file)
@@ -194,11 +194,11 @@ def rank_required(rank):
 def getPackageByInfo(author, name):
        user = User.query.filter_by(username=author).first()
        if user is None:
-               abort(404)
+               return None
 
        package = Package.query.filter_by(name=name, author_id=user.id, soft_deleted=False).first()
        if package is None:
-               abort(404)
+               return None
 
        return package
 
@@ -208,7 +208,18 @@ def is_package_page(f):
                if not ("author" in kwargs and "name" in kwargs):
                        abort(400)
 
-               package = getPackageByInfo(kwargs["author"], kwargs["name"])
+               author = kwargs["author"]
+               name = kwargs["name"]
+
+               package = getPackageByInfo(author, name)
+               if package is None:
+                       package = getPackageByInfo(author, name + "_game")
+                       if package is None or package.type != PackageType.GAME:
+                               abort(404)
+
+                       args = dict(kwargs)
+                       args["name"] = name + "_game"
+                       return redirect(url_for(request.endpoint, **args))
 
                del kwargs["author"]
                del kwargs["name"]