- add all AppSidebar links that used
- add singup form
This commit is contained in:
Alexandrina-Kuzeleva
2025-11-10 12:27:28 +03:00
parent 7a47591967
commit 0cb8d21290
3 changed files with 148 additions and 23 deletions
+15 -10
View File
@@ -1,9 +1,9 @@
import frappe
from frappe import _
from frappe.model.naming import append_number_if_name_exists
from frappe.utils import escape_html, random_string
from frappe.website.utils import cleanup_page_name, is_signup_disabled
from frappe.website.utils import cleanup_page_name
from frappe.website.utils import is_signup_disabled
from frappe.utils import random_string, escape_html
from lms.lms.utils import get_country_code
@@ -19,12 +19,12 @@ def validate_username_duplicates(doc, method):
doc.username = doc.email.replace("@", "").replace(".", "")
def after_insert(doc, method):
doc.add_roles("LMS Student")
'''def after_insert(doc, method):
doc.add_roles("LMS Student")'''
@frappe.whitelist(allow_guest=True)
def sign_up(email, full_name, verify_terms, user_category):
def sign_up(email, full_name, verify_terms, user_category, user_role, phone):
if is_signup_disabled():
frappe.throw(_("Sign Up is disabled"), _("Not Allowed"))
@@ -48,6 +48,7 @@ def sign_up(email, full_name, verify_terms, user_category):
{
"doctype": "User",
"email": email,
"phone": escape_html(phone),
"first_name": escape_html(full_name),
"verify_terms": verify_terms,
"user_category": user_category,
@@ -62,11 +63,15 @@ def sign_up(email, full_name, verify_terms, user_category):
user.insert()
# set default signup role as per Portal Settings
default_role = frappe.db.get_single_value("Portal Settings", "default_role")
default_role = frappe.db.get_value("Portal Settings", None, "default_role")
if default_role:
user.add_roles(default_role)
elif user_role: # set Role
user.add_roles(user_role) # Если роль передана, добавляем её
else:
user.add_roles("LMS Student") # Иначе добавляем роль по умолчанию
user.add_roles("LMS Student")
#user.add_roles("LMS Student")
set_country_from_ip(None, user.name)
if user.flags.email_sent:
@@ -79,8 +84,8 @@ def set_country_from_ip(login_manager=None, user=None):
if not user and login_manager:
user = login_manager.user
user_country = frappe.db.get_value("User", user, "country")
if user_country:
return
# if user_country:
# return
frappe.db.set_value("User", user, "country", get_country_code())
return
+27 -13
View File
@@ -11,21 +11,24 @@
<input type="email" id="signup_email" class="form-control"
placeholder="{{ _('jane@example.com') }}" required>
</div>
<div class="form-group">
<label class="form-label sr-only" for="signup_phone"> {{ _("Phone") }} </label>
<input type="phone" id="signup_phone" class="form-control"
placeholder="{{ _('+79990009900') }}" required>
</div>
{% if frappe.db.get_single_value("LMS Settings", "user_category") %}
<div class="form-group">
<label class="form-label sr-only"> {{ _("User Category") }} </label>
<label class="form-label sr-only"> {{ _("Role") }} </label>
<div class="control-input-wrapper">
<div class="control-input flex align-center">
<select type="text" id="user_category" data-fieldname="user_category" style="color: var(--text-light)"
<select type="text" id="user_role" data-fieldname="user_role" style="color: var(--text-muted)"
class="input-with-feedback form-control ellipsis" data-fieldtype="Select" required>
<option value=""> {{ _("Category") }} </option>
<option value="Business Owner"> {{ _("Business Owner") }} </option>
<option value="Manager (Sales/Marketing/Customer)"> {{ _("Manager (Sales/Marketing/Customer)") }} </option>
<option value="Employee"> {{ _("Employee") }} </option>
<option value="Student"> {{ _("Student") }} </option>
<option value="Freelancer/Just looking"> {{ _("Freelancer/Just looking") }} </option>
<option value="Others"> {{ _("Others") }} </option>
<option value=""> {{ _("Role") }} </option>
<option value="LMS Student"> {{ _("Student") }} </option>
<option value="LMS Schoolchild"> {{ _("Ученик 11 класса") }} </option>
<option value="Course Creator"> {{ _("Учитель/Репетитор") }} </option>
<option value="Parent"> {{ _("Parent") }} </option>
</select>
</div>
</div>
@@ -48,6 +51,9 @@
</div>
{% endif %}
</div>
<p style="font-size: 12px;">
{{ _("Проверьте почту — там письмо для подтверждения регистрации. Если его нет во «Входящих», проверьте «Спам».") }}
</p>
<div class="page-card-actions">
<button class="btn btn-sm btn-primary btn-block btn-signup"
type="submit">{{ _("Sign up") }}</button>
@@ -78,22 +84,30 @@
e.preventDefault();
const email = ($("#signup_email").val() || "").trim();
const full_name = frappe.utils.xss_sanitise(($("#signup_fullname").val() || "").trim());
const phone = ($("#signup_phone").val() || "").trim();
if (!email || !validate_email(email) || !full_name) {
login.set_status('{{ _("Valid email and name required") }}', 'red');
if (!email || !validate_email(email) || !full_name || !validate_phone(phone)) {
login.set_status('{{ _("Valid email, name, and phone required") }}', 'red');
return false;
}
frappe.call({
method: "lms.lms.user.sign_up",
method: "lms.overrides.user.sign_up",
args: {
"email": email,
"full_name": full_name,
"phone": phone,
"verify_terms": $("#signup-terms").prop("checked") ? 1 : 0,
"user_category": $("#user_category").length ? $("#user_category").val() : ""
"user_category": $("#user_category").length ? $("#user_category").val() : "",
"user_role": $("#user_role").length ? $("#user_role").val() : ""
},
statusCode: login.login_handlers
})
return false;
}
const validate_phone = (phone) => {
const phone_regex = /^[0-9\-\+\s]{10,15}$/;
return phone_regex.test(phone);
}
</script>