refactor: moved community member class functions to user override
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
{% else %}
|
||||
<span class="avatar-frame standard-image" title="{{ member.full_name }}"
|
||||
style="background-color: var({{color[0]}}); color: var({{color[1]}});">
|
||||
{{ member.abbr }}
|
||||
{{ frappe.utils.get_abbr(member.full_name) }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
|
||||
@@ -42,13 +42,10 @@ class LMSBatch(Document):
|
||||
|
||||
If member_type is specified, checks if the person is a Student/Mentor.
|
||||
"""
|
||||
member = find("Community Member", email=email)
|
||||
if not member:
|
||||
return
|
||||
|
||||
filters = {
|
||||
"batch": self.name,
|
||||
"member": member.name
|
||||
"member": email
|
||||
}
|
||||
if member_type:
|
||||
filters['member_type'] = member_type
|
||||
@@ -63,8 +60,8 @@ class LMSBatch(Document):
|
||||
["member"])
|
||||
member_names = [m['member'] for m in memberships]
|
||||
members = frappe.get_all(
|
||||
"Community Member",
|
||||
{"name": ["IN", member_names]},
|
||||
"Users",
|
||||
{"email": ["IN", member_names]},
|
||||
["email", "full_name", "username"])
|
||||
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))
|
||||
|
||||
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({
|
||||
"doctype": "LMS Batch Membership",
|
||||
"batch": batch,
|
||||
"role": role,
|
||||
"member_type": member_type,
|
||||
"member": member
|
||||
"member": member or frappe.session.user
|
||||
}).save(ignore_permissions=True)
|
||||
return "OK"
|
||||
|
||||
@@ -31,3 +31,12 @@ class CustomUser(User):
|
||||
idx = cint((int(hash_name[4:6], 16) + 1) / 5.33)
|
||||
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.create_mentor_request_email_templates
|
||||
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
|
||||
import frappe
|
||||
from frappe import _
|
||||
|
||||
def execute():
|
||||
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_index = lesson_index
|
||||
context.chapter_index = chapter_index
|
||||
|
||||
print(context.lesson)
|
||||
outline = context.course.get_outline()
|
||||
next_ = outline.get_next(lesson_number)
|
||||
prev_ = outline.get_prev(lesson_number)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{% for member in members %}
|
||||
<div class="d-flex align-items-center">
|
||||
<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 class="mr-5">
|
||||
{{member.full_name}}
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<section>
|
||||
<div class="dashboard__parent">
|
||||
<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 class="dashboard__details">
|
||||
<div class="dashboard__name">
|
||||
@@ -125,7 +125,7 @@
|
||||
</div>
|
||||
<div class="d-flex align-items-center w-100">
|
||||
<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 class="ml-5 mt-5">{{ frappe.utils.md_to_html(message.message) }}</div>
|
||||
</div>
|
||||
@@ -209,4 +209,4 @@
|
||||
</div>
|
||||
|
||||
</section>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -7,7 +7,7 @@ def get_context(context):
|
||||
if frappe.session.user == "Guest":
|
||||
frappe.local.flags.redirect_location = "/login"
|
||||
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.courses = get_courses(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')
|
||||
for message in messages:
|
||||
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
|
||||
|
||||
@@ -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 %}
|
||||
<div class="dashboard__parent">
|
||||
<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 class="dashboard__details">
|
||||
<div class="dashboard__name">
|
||||
|
||||
Reference in New Issue
Block a user