2025-12-23 20:42:58 +08:00

112 lines
2.4 KiB
Python

# Copyright (c) 2020, Jingrow Technologies Pvt. Ltd. and Contributors
# For license information, please see license.txt
import jingrow
def get_context(context):
context.no_cache = 1
context.apps = {}
featured = jingrow.get_all(
"Featured App",
filters={"parent": "Marketplace Settings", "parentfield": "featured_apps"},
pluck="app",
order_by="idx",
)
context.apps["Featured Apps"] = sorted(
filter(
lambda x: x.name in featured,
jingrow.get_all(
"Marketplace App",
{"name": ("in", featured), "status": "Published"},
["name", "title", "description", "image", "route"],
),
),
key=lambda y: featured.index(y.name),
)
context.apps["Most Installed"] = jingrow.db.sql(
"""
SELECT
marketplace.name,
marketplace.title,
marketplace.image,
marketplace.route,
marketplace.description,
COUNT(*) AS total_installs
FROM
`tabMarketplace App` marketplace
LEFT JOIN
`tabSite App` site
ON
site.app = marketplace.app
WHERE
marketplace.status = "Published"
GROUP BY
marketplace.name
ORDER BY
total_installs DESC
LIMIT 6
""",
as_dict=True,
)
context.apps["Recently Added"] = jingrow.get_all(
"Marketplace App",
{"status": "Published"},
["name", "title", "description", "image", "route"],
order_by="creation DESC",
limit=6,
)
context.categories = sorted(
jingrow.db.get_all("Marketplace App Categories", pluck="category", distinct=True)
)
context.metatags = {
"title": "Jingrow Cloud Marketplace",
"description": "One Click Apps for your Jingrow Sites",
"og:type": "website",
}
@jingrow.whitelist(allow_guest=True)
def search(query: str, offset: int = 0, limit: int = 20):
return jingrow.qb.get_query(
"Marketplace App",
filters={
"status": "Published",
"title": ("like", f"%{query}%"),
},
fields=["name", "image", "title", "description", "image", "route"],
offset=offset,
limit=limit,
).run(as_dict=1)
@jingrow.whitelist(allow_guest=True)
def filter_by_category(category):
return jingrow.db.sql(
"""
SELECT
marketplace.name,
marketplace.title,
marketplace.image,
marketplace.route,
marketplace.description
FROM
`tabMarketplace App` marketplace
LEFT JOIN
`tabMarketplace App Categories` category
ON
category.parent = marketplace.name
WHERE
marketplace.status = "Published"
AND
category.category = %s
ORDER BY marketplace.jingrow_approved DESC
""",
category,
as_dict=True,
)