112 lines
2.4 KiB
Python
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,
|
|
)
|