Merge pull request #1618 from pateljannat/member-list-refactor
fix: improved members and evaluators list and form
This commit is contained in:
@@ -696,15 +696,6 @@ def get_categories(doctype, filters):
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_members(start=0, search=""):
|
||||
"""Get members for the given search term and start index.
|
||||
Args: start (int): Start index for the query.
|
||||
<<<<<<< HEAD
|
||||
search (str): Search term to filter the results.
|
||||
=======
|
||||
search (str): Search term to filter the results.
|
||||
>>>>>>> 4869bba7bbb2fb38477d6fc29fb3b5838e075577
|
||||
Returns: List of members.
|
||||
"""
|
||||
|
||||
filters = {"enabled": 1, "name": ["not in", ["Administrator", "Guest"]]}
|
||||
or_filters = {}
|
||||
@@ -723,7 +714,14 @@ def get_members(start=0, search=""):
|
||||
)
|
||||
|
||||
for member in members:
|
||||
roles = frappe.get_roles(member.name)
|
||||
roles = frappe.get_all(
|
||||
"Has Role",
|
||||
{
|
||||
"parent": member.name,
|
||||
"parenttype": "User",
|
||||
},
|
||||
pluck="role",
|
||||
)
|
||||
if "Moderator" in roles:
|
||||
member.role = "Moderator"
|
||||
elif "Course Creator" in roles:
|
||||
@@ -1394,6 +1392,7 @@ def save_role(user, role, value):
|
||||
|
||||
@frappe.whitelist()
|
||||
def add_an_evaluator(email):
|
||||
frappe.only_for("Moderator")
|
||||
if not frappe.db.exists("User", email):
|
||||
user = frappe.new_doc("User")
|
||||
user.update(
|
||||
@@ -1413,6 +1412,16 @@ def add_an_evaluator(email):
|
||||
return evaluator
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def delete_evaluator(evaluator):
|
||||
frappe.only_for("Moderator")
|
||||
if not frappe.db.exists("Course Evaluator", evaluator):
|
||||
frappe.throw(_("Evaluator does not exist."))
|
||||
|
||||
frappe.db.delete("Has Role", {"parent": evaluator, "role": "Batch Evaluator"})
|
||||
frappe.db.delete("Course Evaluator", evaluator)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def capture_user_persona(responses):
|
||||
frappe.only_for("System Manager")
|
||||
@@ -1574,7 +1583,7 @@ def track_video_watch_duration(lesson, videos):
|
||||
existing_record = frappe.db.get_value(
|
||||
"LMS Video Watch Duration", filters, ["name", "watch_time"], as_dict=True
|
||||
)
|
||||
if existing_record and existing_record.watch_time < video.get("watch_time"):
|
||||
if existing_record and flt(existing_record.watch_time) < flt(video.get("watch_time")):
|
||||
frappe.db.set_value(
|
||||
"LMS Video Watch Duration",
|
||||
filters,
|
||||
|
||||
@@ -58,8 +58,7 @@
|
||||
"fetch_from": "evaluator.full_name",
|
||||
"fieldname": "full_name",
|
||||
"fieldtype": "Data",
|
||||
"label": "Full Name",
|
||||
"read_only": 1
|
||||
"label": "Full Name"
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_casg",
|
||||
@@ -73,21 +72,19 @@
|
||||
"fetch_from": "evaluator.user_image",
|
||||
"fieldname": "user_image",
|
||||
"fieldtype": "Attach Image",
|
||||
"label": "User Image",
|
||||
"read_only": 1
|
||||
"label": "User Image"
|
||||
},
|
||||
{
|
||||
"fetch_from": "evaluator.username",
|
||||
"fieldname": "username",
|
||||
"fieldtype": "Data",
|
||||
"label": "Username",
|
||||
"read_only": 1
|
||||
"label": "Username"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2025-06-05 11:04:32.475711",
|
||||
"modified_by": "sayali@frappe.io",
|
||||
"modified": "2025-07-04 12:04:11.007945",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "Course Evaluator",
|
||||
"naming_rule": "By fieldname",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"attach_print": 0,
|
||||
"channel": "Email",
|
||||
"condition": "doc.status == \"Upcoming\"",
|
||||
"creation": "2022-06-03 11:51:02.681803",
|
||||
"date_changed": "date",
|
||||
"days_in_advance": 1,
|
||||
@@ -13,7 +14,8 @@
|
||||
"is_standard": 1,
|
||||
"message": "<p> {{ _(\"Hey {0}\").format(doc.member_name) }} </p>\n<br>\n<p> {{ _('Your evaluation for the course {0} has been scheduled on {1} at {2} {3}.').format(doc.course_title, frappe.utils.format_date(doc.date, \"medium\"), frappe.utils.format_time(doc.start_time, \"short\"), doc.timezone) }}</p>\n<br>\n<p> {{ _(\"{0} is your evaluator\").format(doc.evaluator_name) }} </p>\n<br>\n<p> {{ _(\"Please prepare well and be on time for the evaluations.\") }} </p>\n",
|
||||
"message_type": "HTML",
|
||||
"modified": "2024-09-05 16:33:42.212842",
|
||||
"minutes_offset": 0,
|
||||
"modified": "2025-07-04 10:47:58.448814",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "Certificate Request Reminder",
|
||||
@@ -22,6 +24,12 @@
|
||||
{
|
||||
"receiver_by_document_field": "member"
|
||||
},
|
||||
{
|
||||
"receiver_by_document_field": "member"
|
||||
},
|
||||
{
|
||||
"receiver_by_document_field": "evaluator"
|
||||
},
|
||||
{
|
||||
"receiver_by_document_field": "evaluator"
|
||||
}
|
||||
@@ -29,4 +37,4 @@
|
||||
"send_system_notification": 0,
|
||||
"send_to_all_assignees": 0,
|
||||
"subject": "Reminder for Certificate Evaluation"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -537,11 +537,10 @@ def has_course_evaluator_role(member=None):
|
||||
|
||||
|
||||
def has_student_role(member=None):
|
||||
roles = frappe.get_roles(member or frappe.session.user)
|
||||
return (
|
||||
"Moderator" not in roles
|
||||
and "Course Creator" not in roles
|
||||
and "Batch Evaluator" not in roles
|
||||
return frappe.db.get_value(
|
||||
"Has Role",
|
||||
{"parent": member or frappe.session.user, "role": "LMS Student"},
|
||||
"name",
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user