refactor: moved community member class functions to user override
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<span class="avatar-frame standard-image" title="{{ member.full_name }}"
|
<span class="avatar-frame standard-image" title="{{ member.full_name }}"
|
||||||
style="background-color: var({{color[0]}}); color: var({{color[1]}});">
|
style="background-color: var({{color[0]}}); color: var({{color[1]}});">
|
||||||
{{ member.abbr }}
|
{{ frappe.utils.get_abbr(member.full_name) }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -42,13 +42,10 @@ class LMSBatch(Document):
|
|||||||
|
|
||||||
If member_type is specified, checks if the person is a Student/Mentor.
|
If member_type is specified, checks if the person is a Student/Mentor.
|
||||||
"""
|
"""
|
||||||
member = find("Community Member", email=email)
|
|
||||||
if not member:
|
|
||||||
return
|
|
||||||
|
|
||||||
filters = {
|
filters = {
|
||||||
"batch": self.name,
|
"batch": self.name,
|
||||||
"member": member.name
|
"member": email
|
||||||
}
|
}
|
||||||
if member_type:
|
if member_type:
|
||||||
filters['member_type'] = member_type
|
filters['member_type'] = member_type
|
||||||
@@ -63,8 +60,8 @@ class LMSBatch(Document):
|
|||||||
["member"])
|
["member"])
|
||||||
member_names = [m['member'] for m in memberships]
|
member_names = [m['member'] for m in memberships]
|
||||||
members = frappe.get_all(
|
members = frappe.get_all(
|
||||||
"Community Member",
|
"Users",
|
||||||
{"name": ["IN", member_names]},
|
{"email": ["IN", member_names]},
|
||||||
["email", "full_name", "username"])
|
["email", "full_name", "username"])
|
||||||
return members
|
return members
|
||||||
|
|
||||||
|
|||||||
@@ -29,13 +29,11 @@ class LMSBatchMembership(Document):
|
|||||||
frappe.throw(_("{0} is already a {1} of {2} course through {3} batch").format(member_name, membership.member_type, course, membership.batch))
|
frappe.throw(_("{0} is already a {1} of {2} course through {3} batch").format(member_name, membership.member_type, course, membership.batch))
|
||||||
|
|
||||||
def create_membership(batch, member=None, member_type="Student", role="Member"):
|
def create_membership(batch, member=None, member_type="Student", role="Member"):
|
||||||
if not member:
|
|
||||||
member = frappe.db.get_value("Community Member", {"email": frappe.session.user}, "name")
|
|
||||||
frappe.get_doc({
|
frappe.get_doc({
|
||||||
"doctype": "LMS Batch Membership",
|
"doctype": "LMS Batch Membership",
|
||||||
"batch": batch,
|
"batch": batch,
|
||||||
"role": role,
|
"role": role,
|
||||||
"member_type": member_type,
|
"member_type": member_type,
|
||||||
"member": member
|
"member": member or frappe.session.user
|
||||||
}).save(ignore_permissions=True)
|
}).save(ignore_permissions=True)
|
||||||
return "OK"
|
return "OK"
|
||||||
|
|||||||
@@ -31,3 +31,12 @@ class CustomUser(User):
|
|||||||
idx = cint((int(hash_name[4:6], 16) + 1) / 5.33)
|
idx = cint((int(hash_name[4:6], 16) + 1) / 5.33)
|
||||||
return palette[idx % 8]
|
return palette[idx % 8]
|
||||||
|
|
||||||
|
def get_batch_count(self) -> int:
|
||||||
|
"""Returns the number of batches authored by this user.
|
||||||
|
"""
|
||||||
|
return frappe.db.count(
|
||||||
|
'LMS Batch Membership', {
|
||||||
|
'member': self.name,
|
||||||
|
'member_type': 'Mentor'
|
||||||
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ community.patches.change_name_for_community_members
|
|||||||
community.patches.save_abbr_for_community_members
|
community.patches.save_abbr_for_community_members
|
||||||
community.patches.create_mentor_request_email_templates
|
community.patches.create_mentor_request_email_templates
|
||||||
community.patches.replace_member_with_user_in_batch_membership
|
community.patches.replace_member_with_user_in_batch_membership
|
||||||
|
community.patches.replace_member_with_user_in_course_mentor_mapping
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
|
||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
frappe.reload_doc("lms", "doctype", "lms_batch_membership")
|
frappe.reload_doc("lms", "doctype", "lms_batch_membership")
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
frappe.reload_doc("lms", "doctype", "lms_course_mentor_mapping")
|
||||||
|
mappings = frappe.get_all("LMS Course Mentor Mapping", ["mentor", "name"])
|
||||||
|
for mapping in mappings:
|
||||||
|
email = frappe.db.get_value("Community Member", mapping.mentor, "email")
|
||||||
|
frappe.db.set_value("LMS Course Mentor Mapping", mapping.name, "mentor", email)
|
||||||
@@ -18,7 +18,7 @@ def get_context(context):
|
|||||||
context.lesson = context.course.get_lesson(chapter_index, lesson_index)
|
context.lesson = context.course.get_lesson(chapter_index, lesson_index)
|
||||||
context.lesson_index = lesson_index
|
context.lesson_index = lesson_index
|
||||||
context.chapter_index = chapter_index
|
context.chapter_index = chapter_index
|
||||||
|
print(context.lesson)
|
||||||
outline = context.course.get_outline()
|
outline = context.course.get_outline()
|
||||||
next_ = outline.get_next(lesson_number)
|
next_ = outline.get_next(lesson_number)
|
||||||
prev_ = outline.get_prev(lesson_number)
|
prev_ = outline.get_prev(lesson_number)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
{% for member in members %}
|
{% for member in members %}
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div>
|
<div>
|
||||||
{{ Profile(member.photo, member.full_name, member.abbr, "small") }}
|
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="mr-5">
|
<div class="mr-5">
|
||||||
{{member.full_name}}
|
{{member.full_name}}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
<section>
|
<section>
|
||||||
<div class="dashboard__parent">
|
<div class="dashboard__parent">
|
||||||
<div>
|
<div>
|
||||||
{{ Profile(member.photo, member.full_name, member.abbr, "large")}}
|
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard__details">
|
<div class="dashboard__details">
|
||||||
<div class="dashboard__name">
|
<div class="dashboard__name">
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="d-flex align-items-center w-100">
|
<div class="d-flex align-items-center w-100">
|
||||||
<div>
|
<div>
|
||||||
{{ Profile(message.profile, message.full_name, message.abbr, "small")}}
|
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="ml-5 mt-5">{{ frappe.utils.md_to_html(message.message) }}</div>
|
<div class="ml-5 mt-5">{{ frappe.utils.md_to_html(message.message) }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ def get_context(context):
|
|||||||
if frappe.session.user == "Guest":
|
if frappe.session.user == "Guest":
|
||||||
frappe.local.flags.redirect_location = "/login"
|
frappe.local.flags.redirect_location = "/login"
|
||||||
raise frappe.Redirect
|
raise frappe.Redirect
|
||||||
context.member = frappe.get_all("Community Member", {"email": frappe.session.user}, ["name", "email", "photo", "full_name", "abbr"])[0]
|
context.member = frappe.get_doc("User", frappe.session.user)
|
||||||
context.memberships = get_memberships(context.member.name)
|
context.memberships = get_memberships(context.member.name)
|
||||||
context.courses = get_courses(context.memberships)
|
context.courses = get_courses(context.memberships)
|
||||||
context.activity = get_activity(context.memberships)
|
context.activity = get_activity(context.memberships)
|
||||||
@@ -38,5 +38,4 @@ def get_activity(memberships):
|
|||||||
messages = frappe.get_all("LMS Message", {"batch": ["in", ",".join(batches)]}, ["message", "author", "creation", "batch"], order_by='creation desc')
|
messages = frappe.get_all("LMS Message", {"batch": ["in", ",".join(batches)]}, ["message", "author", "creation", "batch"], order_by='creation desc')
|
||||||
for message in messages:
|
for message in messages:
|
||||||
message.course = courses[message.batch]
|
message.course = courses[message.batch]
|
||||||
message.profile, message.full_name, message.abbr = frappe.db.get_value("Community Member", message.author, ["photo", "full_name", "abbr"])
|
|
||||||
return messages
|
return messages
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
{% macro Profile(photo, full_name, abbr, icon) %}
|
|
||||||
{% if photo %}
|
|
||||||
<img class="avatar rounded-circle img-fluid mr-5{% if icon == 'large' %} dashboard__profile {% else %} dashboard__profileSmall {% endif %}"
|
|
||||||
src="{{ photo }}" alt="{{ full_name }}">
|
|
||||||
{% else %}
|
|
||||||
<div class="standard-image mr-5 {% if icon == 'large' %} dashboard__abbr {% else %} dashboard__abbrSmall {% endif %}">
|
|
||||||
{{ abbr }}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endmacro %}
|
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
{% block page_content %}
|
{% block page_content %}
|
||||||
<div class="dashboard__parent">
|
<div class="dashboard__parent">
|
||||||
<div class="dashboard__photo">
|
<div class="dashboard__photo">
|
||||||
{{ Profile(member.photo, member.full_name, member.abbr, "large")}}
|
{{ widgets.Avatar(member=member, avatar_class="avatar-medium") }} <a href="/{{member.username}}">{{ member.full_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard__details">
|
<div class="dashboard__details">
|
||||||
<div class="dashboard__name">
|
<div class="dashboard__name">
|
||||||
|
|||||||
Reference in New Issue
Block a user