mirror of
https://github.com/minetest/contentdb.git
synced 2024-12-23 06:22:24 +01:00
Create favorites collection when viewing /add-to/
This commit is contained in:
parent
bef3c2f8f0
commit
9ec2b05e8d
@ -25,7 +25,8 @@ from wtforms import StringField, BooleanField, SubmitField, FieldList, HiddenFie
|
|||||||
from wtforms.validators import InputRequired, Length, Optional, Regexp
|
from wtforms.validators import InputRequired, Length, Optional, Regexp
|
||||||
|
|
||||||
from app.models import Collection, db, Package, Permission, CollectionPackage, User, UserRank, AuditSeverity
|
from app.models import Collection, db, Package, Permission, CollectionPackage, User, UserRank, AuditSeverity
|
||||||
from app.utils import is_package_page, nonempty_or_none, add_audit_log
|
from app.utils import nonempty_or_none
|
||||||
|
from app.utils.models import is_package_page, add_audit_log, create_session
|
||||||
|
|
||||||
bp = Blueprint("collections", __name__)
|
bp = Blueprint("collections", __name__)
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ def list_all(author=None):
|
|||||||
query = user.collections
|
query = user.collections
|
||||||
else:
|
else:
|
||||||
user = None
|
user = None
|
||||||
query = Collection.query.order_by(db.asc(Collection.title))
|
query = Collection.query.filter(Collection.items.any()).order_by(db.asc(Collection.title))
|
||||||
|
|
||||||
if "package" in request.args:
|
if "package" in request.args:
|
||||||
package = Package.get_by_key(request.args["package"])
|
package = Package.get_by_key(request.args["package"])
|
||||||
@ -262,10 +263,31 @@ def toggle_package(collection: Collection, package: Package):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def get_or_create_favorites(session):
|
||||||
|
collection = Collection.query.filter(Collection.name == "favorites", Collection.author == current_user).first()
|
||||||
|
if collection is None:
|
||||||
|
is_new = True
|
||||||
|
collection = Collection()
|
||||||
|
collection.title = "Favorites"
|
||||||
|
collection.name = "favorites"
|
||||||
|
collection.short_description = "My favorites"
|
||||||
|
collection.author_id = current_user.id
|
||||||
|
session.add(collection)
|
||||||
|
else:
|
||||||
|
is_new = False
|
||||||
|
|
||||||
|
return collection, is_new
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/packages/<author>/<name>/add-to/", methods=["GET", "POST"])
|
@bp.route("/packages/<author>/<name>/add-to/", methods=["GET", "POST"])
|
||||||
@is_package_page
|
@is_package_page
|
||||||
@login_required
|
@login_required
|
||||||
def package_add(package):
|
def package_add(package):
|
||||||
|
with create_session() as new_session:
|
||||||
|
collection, is_new = get_or_create_favorites(new_session)
|
||||||
|
if is_new:
|
||||||
|
new_session.commit()
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
collection_id = request.form["collection"]
|
collection_id = request.form["collection"]
|
||||||
collection = Collection.query.get(collection_id)
|
collection = Collection.query.get(collection_id)
|
||||||
@ -293,14 +315,7 @@ def package_add(package):
|
|||||||
@is_package_page
|
@is_package_page
|
||||||
@login_required
|
@login_required
|
||||||
def package_toggle_favorite(package):
|
def package_toggle_favorite(package):
|
||||||
collection = Collection.query.filter(Collection.name == "favorites", Collection.author == current_user).first()
|
collection, _is_new = get_or_create_favorites(db.session)
|
||||||
if collection is None:
|
|
||||||
collection = Collection()
|
|
||||||
collection.title = "Favorites"
|
|
||||||
collection.name = "favorites"
|
|
||||||
collection.short_description = "My favorites"
|
|
||||||
collection.author = current_user
|
|
||||||
db.session.add(collection)
|
|
||||||
|
|
||||||
if toggle_package(collection, package):
|
if toggle_package(collection, package):
|
||||||
msg = gettext("Added package to favorites collection")
|
msg = gettext("Added package to favorites collection")
|
||||||
|
Loading…
Reference in New Issue
Block a user