feat: profile page
This commit is contained in:
@@ -148,7 +148,7 @@ def get_user_info():
|
|||||||
user = frappe.db.get_value(
|
user = frappe.db.get_value(
|
||||||
"User",
|
"User",
|
||||||
frappe.session.user,
|
frappe.session.user,
|
||||||
["name", "email", "enabled", "user_image", "full_name", "user_type"],
|
["name", "email", "enabled", "user_image", "full_name", "user_type", "username"],
|
||||||
as_dict=1,
|
as_dict=1,
|
||||||
)
|
)
|
||||||
user["roles"] = frappe.get_roles(user.name)
|
user["roles"] = frappe.get_roles(user.name)
|
||||||
@@ -288,3 +288,13 @@ def get_branding():
|
|||||||
"brand_html": frappe.db.get_single_value("Website Settings", "brand_html"),
|
"brand_html": frappe.db.get_single_value("Website Settings", "brand_html"),
|
||||||
"favicon": frappe.db.get_single_value("Website Settings", "favicon"),
|
"favicon": frappe.db.get_single_value("Website Settings", "favicon"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_unsplash_photos(keyword=None):
|
||||||
|
from lms.unsplash import get_list, get_by_keyword
|
||||||
|
|
||||||
|
if keyword:
|
||||||
|
return get_by_keyword(keyword)
|
||||||
|
|
||||||
|
return frappe.cache().get_value("unsplash_photos", generator=get_list)
|
||||||
|
|||||||
@@ -6,10 +6,11 @@
|
|||||||
"engine": "InnoDB",
|
"engine": "InnoDB",
|
||||||
"field_order": [
|
"field_order": [
|
||||||
"course",
|
"course",
|
||||||
|
"course_title",
|
||||||
"member",
|
"member",
|
||||||
"member_name",
|
"member_name",
|
||||||
"template",
|
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
|
"template",
|
||||||
"issue_date",
|
"issue_date",
|
||||||
"expiry_date",
|
"expiry_date",
|
||||||
"batch_name",
|
"batch_name",
|
||||||
@@ -75,11 +76,18 @@
|
|||||||
"label": "Template",
|
"label": "Template",
|
||||||
"options": "Print Format",
|
"options": "Print Format",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "course.title",
|
||||||
|
"fieldname": "course_title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Course Title",
|
||||||
|
"read_only": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2023-10-25 12:20:56.091979",
|
"modified": "2024-04-09 13:42:18.350028",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "LMS Certificate",
|
"name": "LMS Certificate",
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
<meta name="twitter:title" content="{{ meta.title }}" />
|
<meta name="twitter:title" content="{{ meta.title }}" />
|
||||||
<meta name="twitter:image" content="{{ meta.image }}" />
|
<meta name="twitter:image" content="{{ meta.image }}" />
|
||||||
<meta name="twitter:description" content="{{ meta.description }}" />
|
<meta name="twitter:description" content="{{ meta.description }}" />
|
||||||
<script type="module" crossorigin src="/assets/lms/frontend/assets/index-BVArU1VY.js"></script>
|
<script type="module" crossorigin src="/assets/lms/frontend/assets/index-B0I4dIsL.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="/assets/lms/frontend/assets/frappe-ui-h_6W7zSS.js">
|
<link rel="modulepreload" crossorigin href="/assets/lms/frontend/assets/frappe-ui-BlL1CpdE.js">
|
||||||
<link rel="stylesheet" crossorigin href="/assets/lms/frontend/assets/frappe-ui-DzKBfka9.css">
|
<link rel="stylesheet" crossorigin href="/assets/lms/frontend/assets/frappe-ui-B1gEXx4C.css">
|
||||||
<link rel="stylesheet" crossorigin href="/assets/lms/frontend/assets/index-B5SBTRQU.css">
|
<link rel="stylesheet" crossorigin href="/assets/lms/frontend/assets/index-wBsCm0D8.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
|
|||||||
42
lms/unsplash.py
Normal file
42
lms/unsplash.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
base_url = "https://api.unsplash.com"
|
||||||
|
|
||||||
|
|
||||||
|
def get_by_keyword(keyword):
|
||||||
|
data = make_unsplash_request(f"/search/photos?query={keyword}")
|
||||||
|
return data.get("results")
|
||||||
|
|
||||||
|
|
||||||
|
def get_list():
|
||||||
|
return make_unsplash_request("/photos")
|
||||||
|
|
||||||
|
|
||||||
|
def get_random(params=None):
|
||||||
|
query_string = ""
|
||||||
|
for key, value in params.items():
|
||||||
|
query_string += f"{key}={value}&"
|
||||||
|
return make_unsplash_request(f"/photos/random?{query_string}")
|
||||||
|
|
||||||
|
|
||||||
|
def make_unsplash_request(path):
|
||||||
|
if not "unsplash_access_key" in frappe.conf:
|
||||||
|
frappe.throw("Please set unsplash_access_key in site_config.json")
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
url = f"{base_url}{path}"
|
||||||
|
print(url)
|
||||||
|
res = requests.get(
|
||||||
|
url,
|
||||||
|
headers={
|
||||||
|
"Accept-Version": "v1",
|
||||||
|
"Authorization": f"Client-ID {frappe.conf.unsplash_access_key}",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
res.raise_for_status()
|
||||||
|
data = res.json()
|
||||||
|
return data
|
||||||
Reference in New Issue
Block a user