Merge pull request #507 from pateljannat/class-seat-count
feat: Class seat count, start time and end time
This commit is contained in:
@@ -12,8 +12,11 @@
|
||||
"start_date",
|
||||
"end_date",
|
||||
"column_break_4",
|
||||
"description",
|
||||
"seat_count",
|
||||
"start_time",
|
||||
"end_time",
|
||||
"section_break_6",
|
||||
"description",
|
||||
"students",
|
||||
"courses",
|
||||
"custom_component"
|
||||
@@ -71,11 +74,26 @@
|
||||
"fieldtype": "Code",
|
||||
"label": "Custom Component",
|
||||
"options": "HTML"
|
||||
},
|
||||
{
|
||||
"fieldname": "seat_count",
|
||||
"fieldtype": "Int",
|
||||
"label": "Seat Count"
|
||||
},
|
||||
{
|
||||
"fieldname": "start_time",
|
||||
"fieldtype": "Time",
|
||||
"label": "Start Time"
|
||||
},
|
||||
{
|
||||
"fieldname": "end_time",
|
||||
"fieldtype": "Time",
|
||||
"label": "End Time"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2023-03-02 22:47:13.139289",
|
||||
"modified": "2023-05-03 23:07:06.725720",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "LMS Class",
|
||||
|
||||
@@ -12,6 +12,8 @@ import json
|
||||
|
||||
class LMSClass(Document):
|
||||
def validate(self):
|
||||
if self.seat_count:
|
||||
self.validate_seats_left()
|
||||
self.validate_duplicate_students()
|
||||
self.validate_membership()
|
||||
|
||||
@@ -36,6 +38,10 @@ class LMSClass(Document):
|
||||
if not frappe.db.exists(filters):
|
||||
frappe.get_doc(filters).save()
|
||||
|
||||
def validate_seats_left(self):
|
||||
if cint(self.seat_count) < len(self.students):
|
||||
frappe.throw(_("There are no seats available in this class."))
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def add_student(email, class_name):
|
||||
@@ -160,7 +166,16 @@ def authenticate():
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def create_class(title, start_date, end_date, description=None, name=None):
|
||||
def create_class(
|
||||
title,
|
||||
start_date,
|
||||
end_date,
|
||||
description=None,
|
||||
seat_count=0,
|
||||
start_time=None,
|
||||
end_time=None,
|
||||
name=None,
|
||||
):
|
||||
if name:
|
||||
class_details = frappe.get_doc("LMS Class", name)
|
||||
else:
|
||||
@@ -172,6 +187,9 @@ def create_class(title, start_date, end_date, description=None, name=None):
|
||||
"start_date": start_date,
|
||||
"end_date": end_date,
|
||||
"description": description,
|
||||
"seat_count": seat_count,
|
||||
"start_time": start_time,
|
||||
"end_time": end_time,
|
||||
}
|
||||
)
|
||||
class_details.save()
|
||||
|
||||
@@ -415,6 +415,30 @@ const open_class_dialog = (e) => {
|
||||
reqd: 1,
|
||||
default: class_info && class_info.end_date,
|
||||
},
|
||||
{
|
||||
fieldtype: "Column Break",
|
||||
},
|
||||
{
|
||||
fieldtype: "Int",
|
||||
label: __("Seat Count"),
|
||||
fieldname: "seat_count",
|
||||
default: class_info && class_info.seat_count,
|
||||
},
|
||||
{
|
||||
fieldtype: "Time",
|
||||
label: __("Start Time"),
|
||||
fieldname: "start_time",
|
||||
default: class_info && class_info.start_time,
|
||||
},
|
||||
{
|
||||
fieldtype: "Time",
|
||||
label: __("End Time"),
|
||||
fieldname: "end_time",
|
||||
default: class_info && class_info.end_time,
|
||||
},
|
||||
{
|
||||
fieldtype: "Section Break",
|
||||
},
|
||||
{
|
||||
fieldtype: "Small Text",
|
||||
label: __("Description"),
|
||||
@@ -438,6 +462,9 @@ const create_class = (values) => {
|
||||
start_date: values.start_date,
|
||||
end_date: values.end_date,
|
||||
description: values.description,
|
||||
seat_count: values.seat_count,
|
||||
start_time: values.start_time,
|
||||
end_time: values.end_time,
|
||||
name: class_info && class_info.name,
|
||||
},
|
||||
callback: (r) => {
|
||||
|
||||
@@ -13,7 +13,17 @@ def get_context(context):
|
||||
context.class_info = frappe.db.get_value(
|
||||
"LMS Class",
|
||||
class_name,
|
||||
["name", "title", "start_date", "end_date", "description", "custom_component"],
|
||||
[
|
||||
"name",
|
||||
"title",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"description",
|
||||
"custom_component",
|
||||
"seat_count",
|
||||
"start_time",
|
||||
"end_time",
|
||||
],
|
||||
as_dict=True,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user